{"id":"2707667c8a3e7035bf25c34ad0a1ec81","_format":"hh-sol-build-info-1","solcVersion":"0.8.19","solcLongVersion":"0.8.19+commit.7dd6d404","input":{"language":"Solidity","sources":{"@nfts2me/contracts/important/README.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * .::. //\n * ...... //\n * .... ::. //\n * .:.. :: ... //\n * ..:. :: ... //\n * ::. ..:-- ::. ... //\n * .: ..:::::-==: :::::.. : //\n * .: :::::::-====: :::::::: : //\n * .: :::::::-======. :::::::: : //\n * .: :::::::-=======-:::::::: : //\n * .: :::::::-========-::::::: : //\n * .: ::::::::========-::::::: : //\n * .: :::::::. .======-::::::: : //\n * .: :::::::. :====-::::::: : //\n * .: .:::::. -==-:::::. : //\n * .:. .:. .--:.. ... //\n * .:. :. ... //\n * .... :. .... //\n * .:. .:. //\n * .::::. //\n * :--. //\n * //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * More info at: https://docs.nfts2me.com/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.17;\n\n/// @title NFTs2Me.com Smart Contracts README\n/// @author The NFTs2Me Team\n/// @notice Read our terms of service\n/// @custom:security-contact security@nfts2me.com\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\n/// @custom:website https://nfts2me.com/\ninterface Readme {\n function n2mVersion() external pure returns (uint256);\n }\n"},"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.17;\n\nimport \"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\";\nimport \"./IN2M_ERCStorage.sol\";\n\ninterface IN2M_ERCBase is IERC2981Upgradeable, IN2M_ERCStorage {\n /// @notice To be called to create the collection. Can only be called once.\n function initialize\n (\n string memory tokenName,\n string memory tokenSymbol,\n uint256 iMintPrice,\n bytes32 baseURICIDHash,\n bytes32 placeholderImageCIDHash,\n RevenueAddress[] calldata revenueAddresses,\n address iErc20PaymentAddress,\n uint32 iTotalSupply,\n uint16 iRoyaltyFee,\n bool soulboundCollection,\n MintingType iMintingType\n ) external payable;\n\n /// @notice A descriptive name for a collection of NFTs in this contract\n function name() external view returns (string memory);\n\n /// @notice An abbreviated name for NFTs in this contract\n /// @return the collection symbol\n function symbol() external view returns (string memory);\n\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\n /// 3986. The URI may point to a JSON file that conforms to the \"ERC721\n /// Metadata JSON Schema\".\n function tokenURI(uint256 tokenId) external view returns (string memory);\n\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n function mint() external payable;\n\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param amount The number of NFTs to mint\n function mint(uint256 amount) external payable;\n\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param amount The number of NFTs to mint\n /// @param affiliate The affiliate address\n function mint(uint256 amount, address affiliate) external payable;\n\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param to The address of the NFTs receiver\n /// @param amount The number of NFTs to mint \n function mintTo(address to, uint256 amount) external payable;\n\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param to The address of the NFTs receiver\n /// @param amount The number of NFTs to mint \n /// @param affiliate The affiliate address\n function mintTo(address to, uint256 amount, address affiliate) external payable;\n\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\n /// @param to The address of the NFTs receiver\n /// @param amount The number of NFTs to mint \n function mintRandomTo(address to, uint256 amount) external payable; \n\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\n /// @param to The address of the NFTs receiver\n /// @param amount The number of NFTs to mint \n /// @param affiliate The affiliate address\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable;\n\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\n function redeemRandom() external payable;\n\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param to The address of the NFTs receiver\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n function mintSpecifyTo(address to, uint256[] memory tokenIds) external payable; \n\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param to The address of the NFTs receiver\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n /// @param affiliate The affiliate address\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) external payable; \n\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\n /// @param to The address of the NFTs receiver\n /// @param customURICIDHash The CID of the given token.\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound) external payable;\n\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\n /// @param to The addresses of the NFTs receivers\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n function airdropSequential(address[] memory to, bool soulbound) external payable;\n\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\n /// @param to The addresses of the NFTs receivers\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n function airdropRandom(address[] memory to, bool soulbound) external payable;\n\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\n /// @param to The addresses of the NFTs receivers\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n function airdropSpecify(address[] memory to, uint256[] memory tokenIds, bool soulbound) external payable;\n\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\n /// @param to The addresses of the NFTs receivers\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\n /// @param freeMinting True is minting is free\n /// @param customFee Zero is fee is different from `mintingPrice`.\n /// @param maxAmount Max Amount to be minted with the given `signature`.\n /// @param amount Amount to mint.\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n /// @param signature Valid `signature` for the presale/whitelist.\n function mintPresale (\n address to, \n uint256[] memory tokenIds,\n bool freeMinting, \n uint256 customFee, \n uint256 maxAmount,\n uint256 amount, \n bool soulbound,\n bytes calldata signature) payable external;\n\n /// @notice Returns the minting price of one NFT.\n /// @return Mint price for one NFT in native coin or ERC-20.\n function mintPrice() external view returns (uint256);\n\n /// @notice Returns the current total supply.\n /// @return Current total supply.\n function totalSupply() external view returns (uint256);\n\n /// @notice Max amount of NFTs to be hold per address.\n /// @return Max per address allowed.\n function maxPerAddress() external view returns (uint16);\n\n}\n\n"},"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.17;\n\nimport \"../important/README.sol\";\n\ninterface IN2M_ERCStorage is Readme {\n /// @notice This event is emitted when a token is minted using an affiliate\n /// @param affiliate The affiliate address\n event AffiliateSell(address indexed affiliate);\n\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\n error TokenAlreadyMinted();\n\n /// @notice Error thrown when input variable differ in length\n error InvalidInputSizesDontMatch();\n\n /// @notice Error thrown when input variable differ in length\n error InputSizeMismatch();\n\n /// @notice Error thrown when trying to mint a token with a given invalid id\n error InvalidTokenId();\n\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\n error NothingToRedeem();\n\n /// @notice Error thrown when trying to redeem random tickets too soon\n error CantRevealYetWaitABitToBeAbleToRedeem();\n\n /// @notice Error thrown when the input amount is not valid\n error InvalidAmount();\n\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\n error CollectionSoldOut();\n\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\n error PresaleNotOpen();\n\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\n error PublicSaleNotOpen();\n\n /// @notice Error thrown when trying to mint but the sale has already finished\n error SaleFinished();\n\n /// @notice Error thrown when trying to mint more than the allowance to mint\n error NotEnoughAmountToMint();\n\n /// @notice Error thrown when sending funds to a free minting\n error InvalidMintFeeForFreeMinting();\n\n /// @notice Error thrown when the sent amount is not valid\n error InvalidMintFee();\n\n /// @notice Royalty fee can't be higher than 10%\n error RoyaltyFeeTooHigh();\n\n /// @notice Invalid input. Total supply must be greater than zero\n error TotalSupplyMustBeGreaterThanZero();\n\n /// @notice Can't set BaseURI and Placeholder at the same time\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\n\n /// @notice No BaseURI nor Placeholder set\n error NoBaseURINorPlaceholderSet();\n\n /// @notice Can't transfer a Soulbound Token (SBT)\n error NonTransferrableSoulboundNFT();\n\n /// @notice The input revenue percentages are not valid\n error InvalidRevenuePercentage();\n\n /// @notice Can't mint until specified drop date\n error WaitUntilDropDate();\n\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\n error PresaleInvalidMintingType();\n\n /// @notice Metadata is already fixed. Can't change metadata once fixed\n error MetadataAlreadyFixed();\n\n /// @notice Invalid collection minting type for the current minting function\n error InvalidMintingType();\n\n /// @notice The address exceeded the max per address amount\n error MaxPerAddressExceeded();\n\n /// @notice The given signature doesn't match the input values\n error SignatureMismatch();\n\n /// @notice Reentrancy Guard protection\n error ReentrancyGuard();\n\n /// @notice New Placeholder can't be empty\n error NewPlaceholderCantBeEmpty();\n\n /// @notice New BaseURI can't be empty\n error NewBaseURICantBeEmpty(); \n\n /// @notice Invalid percentage or discount values\n error InvalidPercentageOrDiscountValues();\n\n /// @notice Can't lower current percentages\n error CantLowerCurrentPercentages();\n\n /// @notice Contract MetadataURI already fixed\n error ContractMetadataURIAlreadyFixed();\n\n /// @notice Only owner of N2M can call this function\n error OnlyOwnerOrN2M();\n\n /// @notice Only the given affiliate or N2M can call this function\n error OnlyAffiliateOrN2M();\n\n /// @notice The signature has expired\n error SignatureExpired();\n\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\n error InvalidPhaseWithoutDate();\n\n /// @notice Invalid drop date\n error InvalidDropDate();\n\n /// @notice Operator address is filtered\n error AddressFiltered(address filtered);\n\n struct RandomTicket {\n uint256 amount;\n uint256 blockNumberToReveal;\n }\n\n struct RevenueAddress {\n address to;\n uint16 percentage;\n }\n\n struct AffiliateInformation {\n bool enabled;\n uint16 affiliatePercentage;\n uint16 userDiscount;\n }\n\n enum SalePhase { \n CLOSED,\n PRESALE,\n PUBLIC,\n DROP_DATE,\n DROP_AND_END_DATE\n }\n\n enum MintingType { \n SEQUENTIAL, \n RANDOM, \n SPECIFY, \n CUSTOM_URI \n }\n\n enum OperatorFilterStatus { \n ENABLED_NOT_INITIALIZED, \n ENABLED_EXISTS, \n DISABLED_NOT_INITIALIZED,\n DISABLED_EXISTS \n }\n\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\n function isMetadataFixed() external view returns (bool);\n\n}\n\n"},"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.17;\n\ninterface IN2MBeaconFactory {\n function getERC721Implementation() external view returns (address);\n function getERC1155Implementation() external view returns (address);\n}\n"},"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.17;\n\ninterface IN2MCrossFactory {\n function getN2MTreasuryAddress() external pure returns (address);\n function ownerOf(uint256 tokenId) external view returns (address);\n function strictOwnerOf(uint256 tokenId) external view returns (address);\n}\n"},"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.17;\n\ninterface IOperatorFilterRegistry {\n function isOperatorAllowed(address registrant, address operator) external view returns (bool);\n function register(address registrant) external;\n function registerAndSubscribe(address registrant, address subscription) external;\n function registerAndCopyEntries(address registrant, address registrantToCopy) external;\n function updateOperator(address registrant, address operator, bool filtered) external;\n function updateOperators(address registrant, address[] calldata operators, bool filtered) external;\n function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;\n function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;\n function subscribe(address registrant, address registrantToSubscribe) external;\n function unsubscribe(address registrant, bool copyExistingEntries) external;\n function subscriptionOf(address addr) external returns (address registrant);\n function subscribers(address registrant) external returns (address[] memory);\n function subscriberAt(address registrant, uint256 index) external returns (address);\n function copyEntriesOf(address registrant, address registrantToCopy) external;\n function isOperatorFiltered(address registrant, address operator) external returns (bool);\n function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);\n function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);\n function filteredOperators(address addr) external returns (address[] memory);\n function filteredCodeHashes(address addr) external returns (bytes32[] memory);\n function filteredOperatorAt(address registrant, uint256 index) external returns (address);\n function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);\n function isRegistered(address addr) external view returns (bool);\n function codeHashOf(address addr) external view returns (bytes32);\n}"},"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.17;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\";\n\n/// @title NFTs2Me.com Smart Contracts\n/// @author The NFTs2Me Team\n/// @notice Read our terms of service\n/// @custom:security-contact security@nfts2me.com\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\n/// @custom:website https://nfts2me.com/\nabstract contract NFTOwnableUpgradeable is Initializable, ContextUpgradeable {\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n modifier onlyStrictOwner() {\n _checkStrictOwner();\n _;\n }\n\n modifier onlyOwnerOrN2M() {\n _checkOwnerOrN2M();\n _;\n }\n\n modifier onlyN2M() {\n _checkN2M();\n _;\n }\n\n /// @notice Returns the address of the current collection owner.\n /// @return The address of the owner.\n function owner() public view virtual returns (address);\n function _strictOwner() internal view virtual returns (address);\n function _getN2MFeeAddress() internal view virtual returns (address);\n\n function _checkOwner() internal view virtual {\n require(owner() == msg.sender, \"Ownable: caller is not the owner\");\n }\n\n function _checkStrictOwner() internal view virtual {\n require(_strictOwner() == msg.sender, \"Ownable: caller is not the owner\");\n }\n\n function _checkOwnerOrN2M() internal view virtual {\n require(owner() == msg.sender || _getN2MFeeAddress() == msg.sender, \"Ownable: caller is not the owner\");\n }\n\n function _checkN2M() internal view virtual {\n require(_getN2MFeeAddress() == msg.sender, \"Ownable: caller is not the owner\");\n }\n\n}"},"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/IVotes.sol)\npragma solidity ^0.8.0;\n\n/**\n * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\n *\n * _Available since v4.5._\n */\ninterface IVotesUpgradeable {\n /**\n * @dev Emitted when an account changes their delegate.\n */\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\n\n /**\n * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\n */\n event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance);\n\n /**\n * @dev Returns the current amount of votes that `account` has.\n */\n function getVotes(address account) external view returns (uint256);\n\n /**\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\n */\n function getPastVotes(address account, uint256 blockNumber) external view returns (uint256);\n\n /**\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\n *\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\n * vote.\n */\n function getPastTotalSupply(uint256 blockNumber) external view returns (uint256);\n\n /**\n * @dev Returns the delegate that `account` has chosen.\n */\n function delegates(address account) external view returns (address);\n\n /**\n * @dev Delegates votes from the sender to `delegatee`.\n */\n function delegate(address delegatee) external;\n\n /**\n * @dev Delegates votes from signer to `delegatee`.\n */\n function delegateBySig(\n address delegatee,\n uint256 nonce,\n uint256 expiry,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n}\n"},"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (governance/utils/Votes.sol)\npragma solidity ^0.8.0;\n\nimport \"../../utils/ContextUpgradeable.sol\";\nimport \"../../utils/CountersUpgradeable.sol\";\nimport \"../../utils/CheckpointsUpgradeable.sol\";\nimport \"../../utils/cryptography/EIP712Upgradeable.sol\";\nimport \"./IVotesUpgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev This is a base abstract contract that tracks voting units, which are a measure of voting power that can be\n * transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of\n * \"representative\" that will pool delegated voting units from different accounts and can then use it to vote in\n * decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to\n * delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative.\n *\n * This contract is often combined with a token contract such that voting units correspond to token units. For an\n * example, see {ERC721Votes}.\n *\n * The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed\n * at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the\n * cost of this history tracking optional.\n *\n * When using this module the derived contract must implement {_getVotingUnits} (for example, make it return\n * {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the\n * previous example, it would be included in {ERC721-_beforeTokenTransfer}).\n *\n * _Available since v4.5._\n */\nabstract contract VotesUpgradeable is Initializable, IVotesUpgradeable, ContextUpgradeable, EIP712Upgradeable {\n function __Votes_init() internal onlyInitializing {\n }\n\n function __Votes_init_unchained() internal onlyInitializing {\n }\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\n using CountersUpgradeable for CountersUpgradeable.Counter;\n\n bytes32 private constant _DELEGATION_TYPEHASH =\n keccak256(\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\");\n\n mapping(address => address) private _delegation;\n mapping(address => CheckpointsUpgradeable.History) private _delegateCheckpoints;\n CheckpointsUpgradeable.History private _totalCheckpoints;\n\n mapping(address => CountersUpgradeable.Counter) private _nonces;\n\n /**\n * @dev Returns the current amount of votes that `account` has.\n */\n function getVotes(address account) public view virtual override returns (uint256) {\n return _delegateCheckpoints[account].latest();\n }\n\n /**\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\n *\n * Requirements:\n *\n * - `blockNumber` must have been already mined\n */\n function getPastVotes(address account, uint256 blockNumber) public view virtual override returns (uint256) {\n return _delegateCheckpoints[account].getAtProbablyRecentBlock(blockNumber);\n }\n\n /**\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\n *\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\n * vote.\n *\n * Requirements:\n *\n * - `blockNumber` must have been already mined\n */\n function getPastTotalSupply(uint256 blockNumber) public view virtual override returns (uint256) {\n require(blockNumber < block.number, \"Votes: block not yet mined\");\n return _totalCheckpoints.getAtProbablyRecentBlock(blockNumber);\n }\n\n /**\n * @dev Returns the current total supply of votes.\n */\n function _getTotalSupply() internal view virtual returns (uint256) {\n return _totalCheckpoints.latest();\n }\n\n /**\n * @dev Returns the delegate that `account` has chosen.\n */\n function delegates(address account) public view virtual override returns (address) {\n return _delegation[account];\n }\n\n /**\n * @dev Delegates votes from the sender to `delegatee`.\n */\n function delegate(address delegatee) public virtual override {\n address account = _msgSender();\n _delegate(account, delegatee);\n }\n\n /**\n * @dev Delegates votes from signer to `delegatee`.\n */\n function delegateBySig(\n address delegatee,\n uint256 nonce,\n uint256 expiry,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public virtual override {\n require(block.timestamp <= expiry, \"Votes: signature expired\");\n address signer = ECDSAUpgradeable.recover(\n _hashTypedDataV4(keccak256(abi.encode(_DELEGATION_TYPEHASH, delegatee, nonce, expiry))),\n v,\n r,\n s\n );\n require(nonce == _useNonce(signer), \"Votes: invalid nonce\");\n _delegate(signer, delegatee);\n }\n\n /**\n * @dev Delegate all of `account`'s voting units to `delegatee`.\n *\n * Emits events {IVotes-DelegateChanged} and {IVotes-DelegateVotesChanged}.\n */\n function _delegate(address account, address delegatee) internal virtual {\n address oldDelegate = delegates(account);\n _delegation[account] = delegatee;\n\n emit DelegateChanged(account, oldDelegate, delegatee);\n _moveDelegateVotes(oldDelegate, delegatee, _getVotingUnits(account));\n }\n\n /**\n * @dev Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to`\n * should be zero. Total supply of voting units will be adjusted with mints and burns.\n */\n function _transferVotingUnits(\n address from,\n address to,\n uint256 amount\n ) internal virtual {\n if (from == address(0)) {\n _totalCheckpoints.push(_add, amount);\n }\n if (to == address(0)) {\n _totalCheckpoints.push(_subtract, amount);\n }\n _moveDelegateVotes(delegates(from), delegates(to), amount);\n }\n\n /**\n * @dev Moves delegated votes from one delegate to another.\n */\n function _moveDelegateVotes(\n address from,\n address to,\n uint256 amount\n ) private {\n if (from != to && amount > 0) {\n if (from != address(0)) {\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[from].push(_subtract, amount);\n emit DelegateVotesChanged(from, oldValue, newValue);\n }\n if (to != address(0)) {\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[to].push(_add, amount);\n emit DelegateVotesChanged(to, oldValue, newValue);\n }\n }\n }\n\n function _add(uint256 a, uint256 b) private pure returns (uint256) {\n return a + b;\n }\n\n function _subtract(uint256 a, uint256 b) private pure returns (uint256) {\n return a - b;\n }\n\n /**\n * @dev Consumes a nonce.\n *\n * Returns the current value and increments nonce.\n */\n function _useNonce(address owner) internal virtual returns (uint256 current) {\n CountersUpgradeable.Counter storage nonce = _nonces[owner];\n current = nonce.current();\n nonce.increment();\n }\n\n /**\n * @dev Returns an address nonce.\n */\n function nonces(address owner) public view virtual returns (uint256) {\n return _nonces[owner].current();\n }\n\n /**\n * @dev Returns the contract's {EIP712} domain separator.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32) {\n return _domainSeparatorV4();\n }\n\n /**\n * @dev Must return the voting units held by an account.\n */\n function _getVotingUnits(address) internal view virtual returns (uint256);\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[46] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/introspection/IERC165Upgradeable.sol\";\n\n/**\n * @dev Interface for the NFT Royalty Standard.\n *\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\n *\n * _Available since v4.5._\n */\ninterface IERC2981Upgradeable is IERC165Upgradeable {\n /**\n * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\n * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\n */\n function royaltyInfo(uint256 tokenId, uint256 salePrice)\n external\n view\n returns (address receiver, uint256 royaltyAmount);\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized < type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC1155/ERC1155.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC1155Upgradeable.sol\";\nimport \"./IERC1155ReceiverUpgradeable.sol\";\nimport \"./extensions/IERC1155MetadataURIUpgradeable.sol\";\nimport \"../../utils/AddressUpgradeable.sol\";\nimport \"../../utils/ContextUpgradeable.sol\";\nimport \"../../utils/introspection/ERC165Upgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the basic standard multi-token.\n * See https://eips.ethereum.org/EIPS/eip-1155\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\n *\n * _Available since v3.1._\n */\ncontract ERC1155Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC1155Upgradeable, IERC1155MetadataURIUpgradeable {\n using AddressUpgradeable for address;\n\n // Mapping from token ID to account balances\n mapping(uint256 => mapping(address => uint256)) private _balances;\n\n // Mapping from account to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\n string private _uri;\n\n /**\n * @dev See {_setURI}.\n */\n function __ERC1155_init(string memory uri_) internal onlyInitializing {\n __ERC1155_init_unchained(uri_);\n }\n\n function __ERC1155_init_unchained(string memory uri_) internal onlyInitializing {\n _setURI(uri_);\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\n return\n interfaceId == type(IERC1155Upgradeable).interfaceId ||\n interfaceId == type(IERC1155MetadataURIUpgradeable).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC1155MetadataURI-uri}.\n *\n * This implementation returns the same URI for *all* token types. It relies\n * on the token type ID substitution mechanism\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n *\n * Clients calling this function must replace the `\\{id\\}` substring with the\n * actual token type ID.\n */\n function uri(uint256) public view virtual override returns (string memory) {\n return _uri;\n }\n\n /**\n * @dev See {IERC1155-balanceOf}.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\n require(account != address(0), \"ERC1155: address zero is not a valid owner\");\n return _balances[id][account];\n }\n\n /**\n * @dev See {IERC1155-balanceOfBatch}.\n *\n * Requirements:\n *\n * - `accounts` and `ids` must have the same length.\n */\n function balanceOfBatch(address[] memory accounts, uint256[] memory ids)\n public\n view\n virtual\n override\n returns (uint256[] memory)\n {\n require(accounts.length == ids.length, \"ERC1155: accounts and ids length mismatch\");\n\n uint256[] memory batchBalances = new uint256[](accounts.length);\n\n for (uint256 i = 0; i < accounts.length; ++i) {\n batchBalances[i] = balanceOf(accounts[i], ids[i]);\n }\n\n return batchBalances;\n }\n\n /**\n * @dev See {IERC1155-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC1155-isApprovedForAll}.\n */\n function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[account][operator];\n }\n\n /**\n * @dev See {IERC1155-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) public virtual override {\n require(\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\n \"ERC1155: caller is not token owner or approved\"\n );\n _safeTransferFrom(from, to, id, amount, data);\n }\n\n /**\n * @dev See {IERC1155-safeBatchTransferFrom}.\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) public virtual override {\n require(\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\n \"ERC1155: caller is not token owner or approved\"\n );\n _safeBatchTransferFrom(from, to, ids, amounts, data);\n }\n\n /**\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function _safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) internal virtual {\n require(to != address(0), \"ERC1155: transfer to the zero address\");\n\n address operator = _msgSender();\n uint256[] memory ids = _asSingletonArray(id);\n uint256[] memory amounts = _asSingletonArray(amount);\n\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n uint256 fromBalance = _balances[id][from];\n require(fromBalance >= amount, \"ERC1155: insufficient balance for transfer\");\n unchecked {\n _balances[id][from] = fromBalance - amount;\n }\n _balances[id][to] += amount;\n\n emit TransferSingle(operator, from, to, id, amount);\n\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\n\n _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function _safeBatchTransferFrom(\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n require(to != address(0), \"ERC1155: transfer to the zero address\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n for (uint256 i = 0; i < ids.length; ++i) {\n uint256 id = ids[i];\n uint256 amount = amounts[i];\n\n uint256 fromBalance = _balances[id][from];\n require(fromBalance >= amount, \"ERC1155: insufficient balance for transfer\");\n unchecked {\n _balances[id][from] = fromBalance - amount;\n }\n _balances[id][to] += amount;\n }\n\n emit TransferBatch(operator, from, to, ids, amounts);\n\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\n\n _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\n }\n\n /**\n * @dev Sets a new URI for all token types, by relying on the token type ID\n * substitution mechanism\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n *\n * By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n * URI or any of the amounts in the JSON file at said URI will be replaced by\n * clients with the token type ID.\n *\n * For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n * interpreted by clients as\n * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n * for token type ID 0x4cce0.\n *\n * See {uri}.\n *\n * Because these URIs cannot be meaningfully represented by the {URI} event,\n * this function emits no events.\n */\n function _setURI(string memory newuri) internal virtual {\n _uri = newuri;\n }\n\n /**\n * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function _mint(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) internal virtual {\n require(to != address(0), \"ERC1155: mint to the zero address\");\n\n address operator = _msgSender();\n uint256[] memory ids = _asSingletonArray(id);\n uint256[] memory amounts = _asSingletonArray(amount);\n\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n _balances[id][to] += amount;\n emit TransferSingle(operator, address(0), to, id, amount);\n\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function _mintBatch(\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n require(to != address(0), \"ERC1155: mint to the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n for (uint256 i = 0; i < ids.length; i++) {\n _balances[ids[i]][to] += amounts[i];\n }\n\n emit TransferBatch(operator, address(0), to, ids, amounts);\n\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\n }\n\n /**\n * @dev Destroys `amount` tokens of token type `id` from `from`\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `from` must have at least `amount` tokens of token type `id`.\n */\n function _burn(\n address from,\n uint256 id,\n uint256 amount\n ) internal virtual {\n require(from != address(0), \"ERC1155: burn from the zero address\");\n\n address operator = _msgSender();\n uint256[] memory ids = _asSingletonArray(id);\n uint256[] memory amounts = _asSingletonArray(amount);\n\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n\n uint256 fromBalance = _balances[id][from];\n require(fromBalance >= amount, \"ERC1155: burn amount exceeds balance\");\n unchecked {\n _balances[id][from] = fromBalance - amount;\n }\n\n emit TransferSingle(operator, from, address(0), id, amount);\n\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n */\n function _burnBatch(\n address from,\n uint256[] memory ids,\n uint256[] memory amounts\n ) internal virtual {\n require(from != address(0), \"ERC1155: burn from the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n\n for (uint256 i = 0; i < ids.length; i++) {\n uint256 id = ids[i];\n uint256 amount = amounts[i];\n\n uint256 fromBalance = _balances[id][from];\n require(fromBalance >= amount, \"ERC1155: burn amount exceeds balance\");\n unchecked {\n _balances[id][from] = fromBalance - amount;\n }\n }\n\n emit TransferBatch(operator, from, address(0), ids, amounts);\n\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(\n address owner,\n address operator,\n bool approved\n ) internal virtual {\n require(owner != operator, \"ERC1155: setting approval status for self\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning, as well as batched variants.\n *\n * The same hook is called on both single and batched variants. For single\n * transfers, the length of the `ids` and `amounts` arrays will be 1.\n *\n * Calling conditions (for each `id` and `amount` pair):\n *\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * of token type `id` will be transferred to `to`.\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\n * for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n * will be burned.\n * - `from` and `to` are never both zero.\n * - `ids` and `amounts` have the same, non-zero length.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any token transfer. This includes minting\n * and burning, as well as batched variants.\n *\n * The same hook is called on both single and batched variants. For single\n * transfers, the length of the `id` and `amount` arrays will be 1.\n *\n * Calling conditions (for each `id` and `amount` pair):\n *\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * of token type `id` will be transferred to `to`.\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\n * for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n * will be burned.\n * - `from` and `to` are never both zero.\n * - `ids` and `amounts` have the same, non-zero length.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {}\n\n function _doSafeTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) private {\n if (to.isContract()) {\n try IERC1155ReceiverUpgradeable(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\n if (response != IERC1155ReceiverUpgradeable.onERC1155Received.selector) {\n revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n }\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non-ERC1155Receiver implementer\");\n }\n }\n }\n\n function _doSafeBatchTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) private {\n if (to.isContract()) {\n try IERC1155ReceiverUpgradeable(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\n bytes4 response\n ) {\n if (response != IERC1155ReceiverUpgradeable.onERC1155BatchReceived.selector) {\n revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n }\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non-ERC1155Receiver implementer\");\n }\n }\n }\n\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\n uint256[] memory array = new uint256[](1);\n array[0] = element;\n\n return array;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[47] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC1155/extensions/ERC1155Supply.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC1155Upgradeable.sol\";\nimport \"../../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Extension of ERC1155 that adds tracking of total supply per id.\n *\n * Useful for scenarios where Fungible and Non-fungible tokens have to be\n * clearly identified. Note: While a totalSupply of 1 might mean the\n * corresponding is an NFT, there is no guarantees that no other token with the\n * same id are not going to be minted.\n */\nabstract contract ERC1155SupplyUpgradeable is Initializable, ERC1155Upgradeable {\n function __ERC1155Supply_init() internal onlyInitializing {\n }\n\n function __ERC1155Supply_init_unchained() internal onlyInitializing {\n }\n mapping(uint256 => uint256) private _totalSupply;\n\n /**\n * @dev Total amount of tokens in with a given id.\n */\n function totalSupply(uint256 id) public view virtual returns (uint256) {\n return _totalSupply[id];\n }\n\n /**\n * @dev Indicates whether any token exist with a given id, or not.\n */\n function exists(uint256 id) public view virtual returns (bool) {\n return ERC1155SupplyUpgradeable.totalSupply(id) > 0;\n }\n\n /**\n * @dev See {ERC1155-_beforeTokenTransfer}.\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual override {\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n if (from == address(0)) {\n for (uint256 i = 0; i < ids.length; ++i) {\n _totalSupply[ids[i]] += amounts[i];\n }\n }\n\n if (to == address(0)) {\n for (uint256 i = 0; i < ids.length; ++i) {\n uint256 id = ids[i];\n uint256 amount = amounts[i];\n uint256 supply = _totalSupply[id];\n require(supply >= amount, \"ERC1155: burn amount exceeds totalSupply\");\n unchecked {\n _totalSupply[id] = supply - amount;\n }\n }\n }\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC1155Upgradeable.sol\";\n\n/**\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155MetadataURIUpgradeable is IERC1155Upgradeable {\n /**\n * @dev Returns the URI for token type `id`.\n *\n * If the `\\{id\\}` substring is present in the URI, it must be replaced by\n * clients with the actual token type ID.\n */\n function uri(uint256 id) external view returns (string memory);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165Upgradeable.sol\";\n\n/**\n * @dev _Available since v3.1._\n */\ninterface IERC1155ReceiverUpgradeable is IERC165Upgradeable {\n /**\n * @dev Handles the receipt of a single ERC1155 token type. This function is\n * called at the end of a `safeTransferFrom` after the balance has been updated.\n *\n * NOTE: To accept the transfer, this must return\n * `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n * (i.e. 0xf23a6e61, or its own function selector).\n *\n * @param operator The address which initiated the transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param id The ID of the token being transferred\n * @param value The amount of tokens being transferred\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n */\n function onERC1155Received(\n address operator,\n address from,\n uint256 id,\n uint256 value,\n bytes calldata data\n ) external returns (bytes4);\n\n /**\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\n * is called at the end of a `safeBatchTransferFrom` after the balances have\n * been updated.\n *\n * NOTE: To accept the transfer(s), this must return\n * `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n * (i.e. 0xbc197c81, or its own function selector).\n *\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n */\n function onERC1155BatchReceived(\n address operator,\n address from,\n uint256[] calldata ids,\n uint256[] calldata values,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165Upgradeable.sol\";\n\n/**\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155Upgradeable is IERC165Upgradeable {\n /**\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\n */\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n /**\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n * transfers.\n */\n event TransferBatch(\n address indexed operator,\n address indexed from,\n address indexed to,\n uint256[] ids,\n uint256[] values\n );\n\n /**\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n * `approved`.\n */\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n\n /**\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n *\n * If an {URI} event was emitted for `id`, the standard\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n * returned by {IERC1155MetadataURI-uri}.\n */\n event URI(string value, uint256 indexed id);\n\n /**\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function balanceOf(address account, uint256 id) external view returns (uint256);\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n *\n * Requirements:\n *\n * - `accounts` and `ids` must have the same length.\n */\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\n external\n view\n returns (uint256[] memory);\n\n /**\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n *\n * Emits an {ApprovalForAll} event.\n *\n * Requirements:\n *\n * - `operator` cannot be the caller.\n */\n function setApprovalForAll(address operator, bool approved) external;\n\n /**\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n *\n * See {setApprovalForAll}.\n */\n function isApprovedForAll(address account, address operator) external view returns (bool);\n\n /**\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes calldata data\n ) external;\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts,\n bytes calldata data\n ) external;\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20PermitUpgradeable {\n /**\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n * given ``owner``'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20Upgradeable {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20Upgradeable.sol\";\nimport \"../extensions/draft-IERC20PermitUpgradeable.sol\";\nimport \"../../../utils/AddressUpgradeable.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20Upgradeable {\n using AddressUpgradeable for address;\n\n function safeTransfer(\n IERC20Upgradeable token,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(\n IERC20Upgradeable token,\n address from,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */\n function safeApprove(\n IERC20Upgradeable token,\n address spender,\n uint256 value\n ) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n require(\n (value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n function safeIncreaseAllowance(\n IERC20Upgradeable token,\n address spender,\n uint256 value\n ) internal {\n uint256 newAllowance = token.allowance(address(this), spender) + value;\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n function safeDecreaseAllowance(\n IERC20Upgradeable token,\n address spender,\n uint256 value\n ) internal {\n unchecked {\n uint256 oldAllowance = token.allowance(address(this), spender);\n require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n uint256 newAllowance = oldAllowance - value;\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n }\n\n function safePermit(\n IERC20PermitUpgradeable token,\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal {\n uint256 nonceBefore = token.nonces(owner);\n token.permit(owner, spender, value, deadline, v, r, s);\n uint256 nonceAfter = token.nonces(owner);\n require(nonceAfter == nonceBefore + 1, \"SafeERC20: permit did not succeed\");\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n if (returndata.length > 0) {\n // Return data is optional\n require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.2) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721Upgradeable.sol\";\nimport \"./IERC721ReceiverUpgradeable.sol\";\nimport \"./extensions/IERC721MetadataUpgradeable.sol\";\nimport \"../../utils/AddressUpgradeable.sol\";\nimport \"../../utils/ContextUpgradeable.sol\";\nimport \"../../utils/StringsUpgradeable.sol\";\nimport \"../../utils/introspection/ERC165Upgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\n using AddressUpgradeable for address;\n using StringsUpgradeable for uint256;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to owner address\n mapping(uint256 => address) private _owners;\n\n // Mapping owner address to token count\n mapping(address => uint256) private _balances;\n\n // Mapping from token ID to approved address\n mapping(uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\n __ERC721_init_unchained(name_, symbol_);\n }\n\n function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\n return\n interfaceId == type(IERC721Upgradeable).interfaceId ||\n interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n address owner = _ownerOf(tokenId);\n require(owner != address(0), \"ERC721: invalid token ID\");\n return owner;\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ERC721Upgradeable.ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not token owner or approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n _requireMinted(tokenId);\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner or approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner or approved\");\n _safeTransfer(from, to, tokenId, data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n */\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\n return _owners[tokenId];\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _ownerOf(tokenId) != address(0);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n address owner = ERC721Upgradeable.ownerOf(tokenId);\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _mint(to, tokenId);\n require(\n _checkOnERC721Received(address(0), to, tokenId, data),\n \"ERC721: transfer to non ERC721Receiver implementer\"\n );\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId, 1);\n\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n unchecked {\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\n // Given that tokens are minted one by one, it is impossible in practice that\n // this ever happens. Might change if we allow batch minting.\n // The ERC fails to describe this case.\n _balances[to] += 1;\n }\n\n _owners[tokenId] = to;\n\n emit Transfer(address(0), to, tokenId);\n\n _afterTokenTransfer(address(0), to, tokenId, 1);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n * This is an internal function that does not check if the sender is authorized to operate on the token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ERC721Upgradeable.ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\n\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\n owner = ERC721Upgradeable.ownerOf(tokenId);\n\n // Clear approvals\n delete _tokenApprovals[tokenId];\n\n unchecked {\n // Cannot overflow, as that would require more tokens to be burned/transferred\n // out than the owner initially received through minting and transferring in.\n _balances[owner] -= 1;\n }\n delete _owners[tokenId];\n\n emit Transfer(owner, address(0), tokenId);\n\n _afterTokenTransfer(owner, address(0), tokenId, 1);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId, 1);\n\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n\n // Clear approvals from the previous owner\n delete _tokenApprovals[tokenId];\n\n unchecked {\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\n // `from`'s balance is the number of token held, which is at least one before the current\n // transfer.\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\n // all 2**256 token ids to be minted, which in practice is impossible.\n _balances[from] -= 1;\n _balances[to] += 1;\n }\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n _afterTokenTransfer(from, to, tokenId, 1);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits an {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(\n address owner,\n address operator,\n bool approved\n ) internal virtual {\n require(owner != operator, \"ERC721: approve to caller\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` has not been minted yet.\n */\n function _requireMinted(uint256 tokenId) internal view virtual {\n require(_exists(tokenId), \"ERC721: invalid token ID\");\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) private returns (bool) {\n if (to.isContract()) {\n try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n /// @solidity memory-safe-assembly\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n * - When `from` is zero, the tokens will be minted for `to`.\n * - When `to` is zero, ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n * - `batchSize` is non-zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 firstTokenId,\n uint256 batchSize\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n * - When `from` is zero, the tokens were minted for `to`.\n * - When `to` is zero, ``from``'s tokens were burned.\n * - `from` and `to` are never both zero.\n * - `batchSize` is non-zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 firstTokenId,\n uint256 batchSize\n ) internal virtual {}\n\n /**\n * @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n *\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\n * that `ownerOf(tokenId)` is `a`.\n */\n // solhint-disable-next-line func-name-mixedcase\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\n _balances[account] += amount;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[44] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/extensions/ERC721URIStorage.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC721Upgradeable.sol\";\nimport \"../../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev ERC721 token with storage based token URI management.\n */\nabstract contract ERC721URIStorageUpgradeable is Initializable, ERC721Upgradeable {\n function __ERC721URIStorage_init() internal onlyInitializing {\n }\n\n function __ERC721URIStorage_init_unchained() internal onlyInitializing {\n }\n using StringsUpgradeable for uint256;\n\n // Optional mapping for token URIs\n mapping(uint256 => string) private _tokenURIs;\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory _tokenURI = _tokenURIs[tokenId];\n string memory base = _baseURI();\n\n // If there is no base URI, return the token URI.\n if (bytes(base).length == 0) {\n return _tokenURI;\n }\n // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\n if (bytes(_tokenURI).length > 0) {\n return string(abi.encodePacked(base, _tokenURI));\n }\n\n return super.tokenURI(tokenId);\n }\n\n /**\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\n require(_exists(tokenId), \"ERC721URIStorage: URI set of nonexistent token\");\n _tokenURIs[tokenId] = _tokenURI;\n }\n\n /**\n * @dev See {ERC721-_burn}. This override additionally checks to see if a\n * token-specific URI was set for the token, and if so, it deletes the token URI from\n * the storage mapping.\n */\n function _burn(uint256 tokenId) internal virtual override {\n super._burn(tokenId);\n\n if (bytes(_tokenURIs[tokenId]).length != 0) {\n delete _tokenURIs[tokenId];\n }\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/extensions/ERC721Votes.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC721Upgradeable.sol\";\nimport \"../../../governance/utils/VotesUpgradeable.sol\";\nimport \"../../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Extension of ERC721 to support voting and delegation as implemented by {Votes}, where each individual NFT counts\n * as 1 vote unit.\n *\n * Tokens do not count as votes until they are delegated, because votes must be tracked which incurs an additional cost\n * on every transfer. Token holders can either delegate to a trusted representative who will decide how to make use of\n * the votes in governance decisions, or they can delegate to themselves to be their own representative.\n *\n * _Available since v4.5._\n */\nabstract contract ERC721VotesUpgradeable is Initializable, ERC721Upgradeable, VotesUpgradeable {\n function __ERC721Votes_init() internal onlyInitializing {\n }\n\n function __ERC721Votes_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {ERC721-_afterTokenTransfer}. Adjusts votes when tokens are transferred.\n *\n * Emits a {IVotes-DelegateVotesChanged} event.\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 firstTokenId,\n uint256 batchSize\n ) internal virtual override {\n _transferVotingUnits(from, to, batchSize);\n super._afterTokenTransfer(from, to, firstTokenId, batchSize);\n }\n\n /**\n * @dev Returns the balance of `account`.\n */\n function _getVotingUnits(address account) internal view virtual override returns (uint256) {\n return balanceOf(account);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721Upgradeable.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721ReceiverUpgradeable {\n /**\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n * by `operator` from `from`, this function is called.\n *\n * It must return its Solidity selector to confirm the token transfer.\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n *\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n */\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165Upgradeable.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721Upgradeable is IERC165Upgradeable {\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes calldata data\n ) external;\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool _approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.1) (utils/Checkpoints.sol)\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\n\npragma solidity ^0.8.0;\n\nimport \"./math/MathUpgradeable.sol\";\nimport \"./math/SafeCastUpgradeable.sol\";\n\n/**\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\n * time, and later looking up past values by block number. See {Votes} as an example.\n *\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\n * checkpoint for the current transaction block using the {push} function.\n *\n * _Available since v4.5._\n */\nlibrary CheckpointsUpgradeable {\n struct History {\n Checkpoint[] _checkpoints;\n }\n\n struct Checkpoint {\n uint32 _blockNumber;\n uint224 _value;\n }\n\n /**\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\n * block, the requested block number must be in the past, excluding the current block.\n */\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\n require(blockNumber < block.number, \"Checkpoints: block not yet mined\");\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\n\n uint256 len = self._checkpoints.length;\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\n * checkpoint is probably \"recent\", defined as being among the last sqrt(N) checkpoints where N is the number of\n * checkpoints.\n */\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\n require(blockNumber < block.number, \"Checkpoints: block not yet mined\");\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\n\n uint256 len = self._checkpoints.length;\n\n uint256 low = 0;\n uint256 high = len;\n\n if (len > 5) {\n uint256 mid = len - MathUpgradeable.sqrt(len);\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\n\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\n *\n * Returns previous value and new value.\n */\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\n }\n\n /**\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\n * be set to `op(latest, delta)`.\n *\n * Returns previous value and new value.\n */\n function push(\n History storage self,\n function(uint256, uint256) view returns (uint256) op,\n uint256 delta\n ) internal returns (uint256, uint256) {\n return push(self, op(latest(self), delta));\n }\n\n /**\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\n */\n function latest(History storage self) internal view returns (uint224) {\n uint256 pos = self._checkpoints.length;\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n * in the most recent checkpoint.\n */\n function latestCheckpoint(History storage self)\n internal\n view\n returns (\n bool exists,\n uint32 _blockNumber,\n uint224 _value\n )\n {\n uint256 pos = self._checkpoints.length;\n if (pos == 0) {\n return (false, 0, 0);\n } else {\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\n return (true, ckpt._blockNumber, ckpt._value);\n }\n }\n\n /**\n * @dev Returns the number of checkpoint.\n */\n function length(History storage self) internal view returns (uint256) {\n return self._checkpoints.length;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n * or by updating the last one.\n */\n function _insert(\n Checkpoint[] storage self,\n uint32 key,\n uint224 value\n ) private returns (uint224, uint224) {\n uint256 pos = self.length;\n\n if (pos > 0) {\n // Copying to memory is important here.\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\n\n // Checkpoints keys must be increasing.\n require(last._blockNumber <= key, \"Checkpoint: invalid key\");\n\n // Update or push new checkpoint\n if (last._blockNumber == key) {\n _unsafeAccess(self, pos - 1)._value = value;\n } else {\n self.push(Checkpoint({_blockNumber: key, _value: value}));\n }\n return (last._value, value);\n } else {\n self.push(Checkpoint({_blockNumber: key, _value: value}));\n return (0, value);\n }\n }\n\n /**\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _upperBinaryLookup(\n Checkpoint[] storage self,\n uint32 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._blockNumber > key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n return high;\n }\n\n /**\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _lowerBinaryLookup(\n Checkpoint[] storage self,\n uint32 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._blockNumber < key) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n\n /**\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\n */\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\n assembly {\n mstore(0, self.slot)\n result.slot := add(keccak256(0, 0x20), pos)\n }\n }\n\n struct Trace224 {\n Checkpoint224[] _checkpoints;\n }\n\n struct Checkpoint224 {\n uint32 _key;\n uint224 _value;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\n *\n * Returns previous value and new value.\n */\n function push(\n Trace224 storage self,\n uint32 key,\n uint224 value\n ) internal returns (uint224, uint224) {\n return _insert(self._checkpoints, key, value);\n }\n\n /**\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\n */\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\n uint256 len = self._checkpoints.length;\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\n }\n\n /**\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\n */\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\n uint256 len = self._checkpoints.length;\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\n */\n function latest(Trace224 storage self) internal view returns (uint224) {\n uint256 pos = self._checkpoints.length;\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n * in the most recent checkpoint.\n */\n function latestCheckpoint(Trace224 storage self)\n internal\n view\n returns (\n bool exists,\n uint32 _key,\n uint224 _value\n )\n {\n uint256 pos = self._checkpoints.length;\n if (pos == 0) {\n return (false, 0, 0);\n } else {\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\n return (true, ckpt._key, ckpt._value);\n }\n }\n\n /**\n * @dev Returns the number of checkpoint.\n */\n function length(Trace224 storage self) internal view returns (uint256) {\n return self._checkpoints.length;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n * or by updating the last one.\n */\n function _insert(\n Checkpoint224[] storage self,\n uint32 key,\n uint224 value\n ) private returns (uint224, uint224) {\n uint256 pos = self.length;\n\n if (pos > 0) {\n // Copying to memory is important here.\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\n\n // Checkpoints keys must be increasing.\n require(last._key <= key, \"Checkpoint: invalid key\");\n\n // Update or push new checkpoint\n if (last._key == key) {\n _unsafeAccess(self, pos - 1)._value = value;\n } else {\n self.push(Checkpoint224({_key: key, _value: value}));\n }\n return (last._value, value);\n } else {\n self.push(Checkpoint224({_key: key, _value: value}));\n return (0, value);\n }\n }\n\n /**\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _upperBinaryLookup(\n Checkpoint224[] storage self,\n uint32 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._key > key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n return high;\n }\n\n /**\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _lowerBinaryLookup(\n Checkpoint224[] storage self,\n uint32 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._key < key) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n\n /**\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\n */\n function _unsafeAccess(Checkpoint224[] storage self, uint256 pos)\n private\n pure\n returns (Checkpoint224 storage result)\n {\n assembly {\n mstore(0, self.slot)\n result.slot := add(keccak256(0, 0x20), pos)\n }\n }\n\n struct Trace160 {\n Checkpoint160[] _checkpoints;\n }\n\n struct Checkpoint160 {\n uint96 _key;\n uint160 _value;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\n *\n * Returns previous value and new value.\n */\n function push(\n Trace160 storage self,\n uint96 key,\n uint160 value\n ) internal returns (uint160, uint160) {\n return _insert(self._checkpoints, key, value);\n }\n\n /**\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\n */\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\n uint256 len = self._checkpoints.length;\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\n }\n\n /**\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\n */\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\n uint256 len = self._checkpoints.length;\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\n */\n function latest(Trace160 storage self) internal view returns (uint160) {\n uint256 pos = self._checkpoints.length;\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n * in the most recent checkpoint.\n */\n function latestCheckpoint(Trace160 storage self)\n internal\n view\n returns (\n bool exists,\n uint96 _key,\n uint160 _value\n )\n {\n uint256 pos = self._checkpoints.length;\n if (pos == 0) {\n return (false, 0, 0);\n } else {\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\n return (true, ckpt._key, ckpt._value);\n }\n }\n\n /**\n * @dev Returns the number of checkpoint.\n */\n function length(Trace160 storage self) internal view returns (uint256) {\n return self._checkpoints.length;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n * or by updating the last one.\n */\n function _insert(\n Checkpoint160[] storage self,\n uint96 key,\n uint160 value\n ) private returns (uint160, uint160) {\n uint256 pos = self.length;\n\n if (pos > 0) {\n // Copying to memory is important here.\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\n\n // Checkpoints keys must be increasing.\n require(last._key <= key, \"Checkpoint: invalid key\");\n\n // Update or push new checkpoint\n if (last._key == key) {\n _unsafeAccess(self, pos - 1)._value = value;\n } else {\n self.push(Checkpoint160({_key: key, _value: value}));\n }\n return (last._value, value);\n } else {\n self.push(Checkpoint160({_key: key, _value: value}));\n return (0, value);\n }\n }\n\n /**\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _upperBinaryLookup(\n Checkpoint160[] storage self,\n uint96 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._key > key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n return high;\n }\n\n /**\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _lowerBinaryLookup(\n Checkpoint160[] storage self,\n uint96 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._key < key) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n\n /**\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\n */\n function _unsafeAccess(Checkpoint160[] storage self, uint256 pos)\n private\n pure\n returns (Checkpoint160 storage result)\n {\n assembly {\n mstore(0, self.slot)\n result.slot := add(keccak256(0, 0x20), pos)\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary CountersUpgradeable {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../StringsUpgradeable.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSAUpgradeable {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS,\n InvalidSignatureV // Deprecated in v4.8\n }\n\n function _throwError(RecoverError error) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert(\"ECDSA: invalid signature\");\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert(\"ECDSA: invalid signature length\");\n } else if (error == RecoverError.InvalidSignatureS) {\n revert(\"ECDSA: invalid signature 's' value\");\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature` or error string. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength);\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, signature);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n *\n * _Available since v4.3._\n */\n function tryRecover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address, RecoverError) {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n *\n * _Available since v4.2._\n */\n function recover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n *\n * _Available since v4.3._\n */\n function tryRecover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address, RecoverError) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature);\n }\n\n return (signer, RecoverError.NoError);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", hash));\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from `s`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", StringsUpgradeable.toString(s.length), s));\n }\n\n /**\n * @dev Returns an Ethereum Signed Typed Data, created from a\n * `domainSeparator` and a `structHash`. This produces hash corresponding\n * to the one signed with the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n * JSON-RPC method as part of EIP-712.\n *\n * See {recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/EIP712.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./ECDSAUpgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n *\n * @custom:storage-size 52\n */\nabstract contract EIP712Upgradeable is Initializable {\n /* solhint-disable var-name-mixedcase */\n bytes32 private _HASHED_NAME;\n bytes32 private _HASHED_VERSION;\n bytes32 private constant _TYPE_HASH = keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n\n /* solhint-enable var-name-mixedcase */\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n function __EIP712_init(string memory name, string memory version) internal onlyInitializing {\n __EIP712_init_unchained(name, version);\n }\n\n function __EIP712_init_unchained(string memory name, string memory version) internal onlyInitializing {\n bytes32 hashedName = keccak256(bytes(name));\n bytes32 hashedVersion = keccak256(bytes(version));\n _HASHED_NAME = hashedName;\n _HASHED_VERSION = hashedVersion;\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view returns (bytes32) {\n return _buildDomainSeparator(_TYPE_HASH, _EIP712NameHash(), _EIP712VersionHash());\n }\n\n function _buildDomainSeparator(\n bytes32 typeHash,\n bytes32 nameHash,\n bytes32 versionHash\n ) private view returns (bytes32) {\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return ECDSAUpgradeable.toTypedDataHash(_domainSeparatorV4(), structHash);\n }\n\n /**\n * @dev The hash of the name parameter for the EIP712 domain.\n *\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\n * are a concern.\n */\n function _EIP712NameHash() internal virtual view returns (bytes32) {\n return _HASHED_NAME;\n }\n\n /**\n * @dev The hash of the version parameter for the EIP712 domain.\n *\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\n * are a concern.\n */\n function _EIP712VersionHash() internal virtual view returns (bytes32) {\n return _HASHED_VERSION;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165Upgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\n function __ERC165_init() internal onlyInitializing {\n }\n\n function __ERC165_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165Upgradeable).interfaceId;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165Upgradeable {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary MathUpgradeable {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(\n uint256 x,\n uint256 y,\n uint256 denominator\n ) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1);\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(\n uint256 x,\n uint256 y,\n uint256 denominator,\n Rounding rounding\n ) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10**64) {\n value /= 10**64;\n result += 64;\n }\n if (value >= 10**32) {\n value /= 10**32;\n result += 32;\n }\n if (value >= 10**16) {\n value /= 10**16;\n result += 16;\n }\n if (value >= 10**8) {\n value /= 10**8;\n result += 8;\n }\n if (value >= 10**4) {\n value /= 10**4;\n result += 4;\n }\n if (value >= 10**2) {\n value /= 10**2;\n result += 2;\n }\n if (value >= 10**1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n *\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n * all math on `uint256` and `int256` and then downcasting.\n */\nlibrary SafeCastUpgradeable {\n /**\n * @dev Returns the downcasted uint248 from uint256, reverting on\n * overflow (when the input is greater than largest uint248).\n *\n * Counterpart to Solidity's `uint248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n *\n * _Available since v4.7._\n */\n function toUint248(uint256 value) internal pure returns (uint248) {\n require(value <= type(uint248).max, \"SafeCast: value doesn't fit in 248 bits\");\n return uint248(value);\n }\n\n /**\n * @dev Returns the downcasted uint240 from uint256, reverting on\n * overflow (when the input is greater than largest uint240).\n *\n * Counterpart to Solidity's `uint240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n *\n * _Available since v4.7._\n */\n function toUint240(uint256 value) internal pure returns (uint240) {\n require(value <= type(uint240).max, \"SafeCast: value doesn't fit in 240 bits\");\n return uint240(value);\n }\n\n /**\n * @dev Returns the downcasted uint232 from uint256, reverting on\n * overflow (when the input is greater than largest uint232).\n *\n * Counterpart to Solidity's `uint232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n *\n * _Available since v4.7._\n */\n function toUint232(uint256 value) internal pure returns (uint232) {\n require(value <= type(uint232).max, \"SafeCast: value doesn't fit in 232 bits\");\n return uint232(value);\n }\n\n /**\n * @dev Returns the downcasted uint224 from uint256, reverting on\n * overflow (when the input is greater than largest uint224).\n *\n * Counterpart to Solidity's `uint224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n *\n * _Available since v4.2._\n */\n function toUint224(uint256 value) internal pure returns (uint224) {\n require(value <= type(uint224).max, \"SafeCast: value doesn't fit in 224 bits\");\n return uint224(value);\n }\n\n /**\n * @dev Returns the downcasted uint216 from uint256, reverting on\n * overflow (when the input is greater than largest uint216).\n *\n * Counterpart to Solidity's `uint216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n *\n * _Available since v4.7._\n */\n function toUint216(uint256 value) internal pure returns (uint216) {\n require(value <= type(uint216).max, \"SafeCast: value doesn't fit in 216 bits\");\n return uint216(value);\n }\n\n /**\n * @dev Returns the downcasted uint208 from uint256, reverting on\n * overflow (when the input is greater than largest uint208).\n *\n * Counterpart to Solidity's `uint208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n *\n * _Available since v4.7._\n */\n function toUint208(uint256 value) internal pure returns (uint208) {\n require(value <= type(uint208).max, \"SafeCast: value doesn't fit in 208 bits\");\n return uint208(value);\n }\n\n /**\n * @dev Returns the downcasted uint200 from uint256, reverting on\n * overflow (when the input is greater than largest uint200).\n *\n * Counterpart to Solidity's `uint200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n *\n * _Available since v4.7._\n */\n function toUint200(uint256 value) internal pure returns (uint200) {\n require(value <= type(uint200).max, \"SafeCast: value doesn't fit in 200 bits\");\n return uint200(value);\n }\n\n /**\n * @dev Returns the downcasted uint192 from uint256, reverting on\n * overflow (when the input is greater than largest uint192).\n *\n * Counterpart to Solidity's `uint192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n *\n * _Available since v4.7._\n */\n function toUint192(uint256 value) internal pure returns (uint192) {\n require(value <= type(uint192).max, \"SafeCast: value doesn't fit in 192 bits\");\n return uint192(value);\n }\n\n /**\n * @dev Returns the downcasted uint184 from uint256, reverting on\n * overflow (when the input is greater than largest uint184).\n *\n * Counterpart to Solidity's `uint184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n *\n * _Available since v4.7._\n */\n function toUint184(uint256 value) internal pure returns (uint184) {\n require(value <= type(uint184).max, \"SafeCast: value doesn't fit in 184 bits\");\n return uint184(value);\n }\n\n /**\n * @dev Returns the downcasted uint176 from uint256, reverting on\n * overflow (when the input is greater than largest uint176).\n *\n * Counterpart to Solidity's `uint176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n *\n * _Available since v4.7._\n */\n function toUint176(uint256 value) internal pure returns (uint176) {\n require(value <= type(uint176).max, \"SafeCast: value doesn't fit in 176 bits\");\n return uint176(value);\n }\n\n /**\n * @dev Returns the downcasted uint168 from uint256, reverting on\n * overflow (when the input is greater than largest uint168).\n *\n * Counterpart to Solidity's `uint168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n *\n * _Available since v4.7._\n */\n function toUint168(uint256 value) internal pure returns (uint168) {\n require(value <= type(uint168).max, \"SafeCast: value doesn't fit in 168 bits\");\n return uint168(value);\n }\n\n /**\n * @dev Returns the downcasted uint160 from uint256, reverting on\n * overflow (when the input is greater than largest uint160).\n *\n * Counterpart to Solidity's `uint160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n *\n * _Available since v4.7._\n */\n function toUint160(uint256 value) internal pure returns (uint160) {\n require(value <= type(uint160).max, \"SafeCast: value doesn't fit in 160 bits\");\n return uint160(value);\n }\n\n /**\n * @dev Returns the downcasted uint152 from uint256, reverting on\n * overflow (when the input is greater than largest uint152).\n *\n * Counterpart to Solidity's `uint152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n *\n * _Available since v4.7._\n */\n function toUint152(uint256 value) internal pure returns (uint152) {\n require(value <= type(uint152).max, \"SafeCast: value doesn't fit in 152 bits\");\n return uint152(value);\n }\n\n /**\n * @dev Returns the downcasted uint144 from uint256, reverting on\n * overflow (when the input is greater than largest uint144).\n *\n * Counterpart to Solidity's `uint144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n *\n * _Available since v4.7._\n */\n function toUint144(uint256 value) internal pure returns (uint144) {\n require(value <= type(uint144).max, \"SafeCast: value doesn't fit in 144 bits\");\n return uint144(value);\n }\n\n /**\n * @dev Returns the downcasted uint136 from uint256, reverting on\n * overflow (when the input is greater than largest uint136).\n *\n * Counterpart to Solidity's `uint136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n *\n * _Available since v4.7._\n */\n function toUint136(uint256 value) internal pure returns (uint136) {\n require(value <= type(uint136).max, \"SafeCast: value doesn't fit in 136 bits\");\n return uint136(value);\n }\n\n /**\n * @dev Returns the downcasted uint128 from uint256, reverting on\n * overflow (when the input is greater than largest uint128).\n *\n * Counterpart to Solidity's `uint128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n *\n * _Available since v2.5._\n */\n function toUint128(uint256 value) internal pure returns (uint128) {\n require(value <= type(uint128).max, \"SafeCast: value doesn't fit in 128 bits\");\n return uint128(value);\n }\n\n /**\n * @dev Returns the downcasted uint120 from uint256, reverting on\n * overflow (when the input is greater than largest uint120).\n *\n * Counterpart to Solidity's `uint120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n *\n * _Available since v4.7._\n */\n function toUint120(uint256 value) internal pure returns (uint120) {\n require(value <= type(uint120).max, \"SafeCast: value doesn't fit in 120 bits\");\n return uint120(value);\n }\n\n /**\n * @dev Returns the downcasted uint112 from uint256, reverting on\n * overflow (when the input is greater than largest uint112).\n *\n * Counterpart to Solidity's `uint112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n *\n * _Available since v4.7._\n */\n function toUint112(uint256 value) internal pure returns (uint112) {\n require(value <= type(uint112).max, \"SafeCast: value doesn't fit in 112 bits\");\n return uint112(value);\n }\n\n /**\n * @dev Returns the downcasted uint104 from uint256, reverting on\n * overflow (when the input is greater than largest uint104).\n *\n * Counterpart to Solidity's `uint104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n *\n * _Available since v4.7._\n */\n function toUint104(uint256 value) internal pure returns (uint104) {\n require(value <= type(uint104).max, \"SafeCast: value doesn't fit in 104 bits\");\n return uint104(value);\n }\n\n /**\n * @dev Returns the downcasted uint96 from uint256, reverting on\n * overflow (when the input is greater than largest uint96).\n *\n * Counterpart to Solidity's `uint96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n *\n * _Available since v4.2._\n */\n function toUint96(uint256 value) internal pure returns (uint96) {\n require(value <= type(uint96).max, \"SafeCast: value doesn't fit in 96 bits\");\n return uint96(value);\n }\n\n /**\n * @dev Returns the downcasted uint88 from uint256, reverting on\n * overflow (when the input is greater than largest uint88).\n *\n * Counterpart to Solidity's `uint88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n *\n * _Available since v4.7._\n */\n function toUint88(uint256 value) internal pure returns (uint88) {\n require(value <= type(uint88).max, \"SafeCast: value doesn't fit in 88 bits\");\n return uint88(value);\n }\n\n /**\n * @dev Returns the downcasted uint80 from uint256, reverting on\n * overflow (when the input is greater than largest uint80).\n *\n * Counterpart to Solidity's `uint80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n *\n * _Available since v4.7._\n */\n function toUint80(uint256 value) internal pure returns (uint80) {\n require(value <= type(uint80).max, \"SafeCast: value doesn't fit in 80 bits\");\n return uint80(value);\n }\n\n /**\n * @dev Returns the downcasted uint72 from uint256, reverting on\n * overflow (when the input is greater than largest uint72).\n *\n * Counterpart to Solidity's `uint72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n *\n * _Available since v4.7._\n */\n function toUint72(uint256 value) internal pure returns (uint72) {\n require(value <= type(uint72).max, \"SafeCast: value doesn't fit in 72 bits\");\n return uint72(value);\n }\n\n /**\n * @dev Returns the downcasted uint64 from uint256, reverting on\n * overflow (when the input is greater than largest uint64).\n *\n * Counterpart to Solidity's `uint64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n *\n * _Available since v2.5._\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n require(value <= type(uint64).max, \"SafeCast: value doesn't fit in 64 bits\");\n return uint64(value);\n }\n\n /**\n * @dev Returns the downcasted uint56 from uint256, reverting on\n * overflow (when the input is greater than largest uint56).\n *\n * Counterpart to Solidity's `uint56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n *\n * _Available since v4.7._\n */\n function toUint56(uint256 value) internal pure returns (uint56) {\n require(value <= type(uint56).max, \"SafeCast: value doesn't fit in 56 bits\");\n return uint56(value);\n }\n\n /**\n * @dev Returns the downcasted uint48 from uint256, reverting on\n * overflow (when the input is greater than largest uint48).\n *\n * Counterpart to Solidity's `uint48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n *\n * _Available since v4.7._\n */\n function toUint48(uint256 value) internal pure returns (uint48) {\n require(value <= type(uint48).max, \"SafeCast: value doesn't fit in 48 bits\");\n return uint48(value);\n }\n\n /**\n * @dev Returns the downcasted uint40 from uint256, reverting on\n * overflow (when the input is greater than largest uint40).\n *\n * Counterpart to Solidity's `uint40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n *\n * _Available since v4.7._\n */\n function toUint40(uint256 value) internal pure returns (uint40) {\n require(value <= type(uint40).max, \"SafeCast: value doesn't fit in 40 bits\");\n return uint40(value);\n }\n\n /**\n * @dev Returns the downcasted uint32 from uint256, reverting on\n * overflow (when the input is greater than largest uint32).\n *\n * Counterpart to Solidity's `uint32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n *\n * _Available since v2.5._\n */\n function toUint32(uint256 value) internal pure returns (uint32) {\n require(value <= type(uint32).max, \"SafeCast: value doesn't fit in 32 bits\");\n return uint32(value);\n }\n\n /**\n * @dev Returns the downcasted uint24 from uint256, reverting on\n * overflow (when the input is greater than largest uint24).\n *\n * Counterpart to Solidity's `uint24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n *\n * _Available since v4.7._\n */\n function toUint24(uint256 value) internal pure returns (uint24) {\n require(value <= type(uint24).max, \"SafeCast: value doesn't fit in 24 bits\");\n return uint24(value);\n }\n\n /**\n * @dev Returns the downcasted uint16 from uint256, reverting on\n * overflow (when the input is greater than largest uint16).\n *\n * Counterpart to Solidity's `uint16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n *\n * _Available since v2.5._\n */\n function toUint16(uint256 value) internal pure returns (uint16) {\n require(value <= type(uint16).max, \"SafeCast: value doesn't fit in 16 bits\");\n return uint16(value);\n }\n\n /**\n * @dev Returns the downcasted uint8 from uint256, reverting on\n * overflow (when the input is greater than largest uint8).\n *\n * Counterpart to Solidity's `uint8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n *\n * _Available since v2.5._\n */\n function toUint8(uint256 value) internal pure returns (uint8) {\n require(value <= type(uint8).max, \"SafeCast: value doesn't fit in 8 bits\");\n return uint8(value);\n }\n\n /**\n * @dev Converts a signed int256 into an unsigned uint256.\n *\n * Requirements:\n *\n * - input must be greater than or equal to 0.\n *\n * _Available since v3.0._\n */\n function toUint256(int256 value) internal pure returns (uint256) {\n require(value >= 0, \"SafeCast: value must be positive\");\n return uint256(value);\n }\n\n /**\n * @dev Returns the downcasted int248 from int256, reverting on\n * overflow (when the input is less than smallest int248 or\n * greater than largest int248).\n *\n * Counterpart to Solidity's `int248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n *\n * _Available since v4.7._\n */\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\n downcasted = int248(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 248 bits\");\n }\n\n /**\n * @dev Returns the downcasted int240 from int256, reverting on\n * overflow (when the input is less than smallest int240 or\n * greater than largest int240).\n *\n * Counterpart to Solidity's `int240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n *\n * _Available since v4.7._\n */\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\n downcasted = int240(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 240 bits\");\n }\n\n /**\n * @dev Returns the downcasted int232 from int256, reverting on\n * overflow (when the input is less than smallest int232 or\n * greater than largest int232).\n *\n * Counterpart to Solidity's `int232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n *\n * _Available since v4.7._\n */\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\n downcasted = int232(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 232 bits\");\n }\n\n /**\n * @dev Returns the downcasted int224 from int256, reverting on\n * overflow (when the input is less than smallest int224 or\n * greater than largest int224).\n *\n * Counterpart to Solidity's `int224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n *\n * _Available since v4.7._\n */\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\n downcasted = int224(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 224 bits\");\n }\n\n /**\n * @dev Returns the downcasted int216 from int256, reverting on\n * overflow (when the input is less than smallest int216 or\n * greater than largest int216).\n *\n * Counterpart to Solidity's `int216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n *\n * _Available since v4.7._\n */\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\n downcasted = int216(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 216 bits\");\n }\n\n /**\n * @dev Returns the downcasted int208 from int256, reverting on\n * overflow (when the input is less than smallest int208 or\n * greater than largest int208).\n *\n * Counterpart to Solidity's `int208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n *\n * _Available since v4.7._\n */\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\n downcasted = int208(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 208 bits\");\n }\n\n /**\n * @dev Returns the downcasted int200 from int256, reverting on\n * overflow (when the input is less than smallest int200 or\n * greater than largest int200).\n *\n * Counterpart to Solidity's `int200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n *\n * _Available since v4.7._\n */\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\n downcasted = int200(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 200 bits\");\n }\n\n /**\n * @dev Returns the downcasted int192 from int256, reverting on\n * overflow (when the input is less than smallest int192 or\n * greater than largest int192).\n *\n * Counterpart to Solidity's `int192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n *\n * _Available since v4.7._\n */\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\n downcasted = int192(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 192 bits\");\n }\n\n /**\n * @dev Returns the downcasted int184 from int256, reverting on\n * overflow (when the input is less than smallest int184 or\n * greater than largest int184).\n *\n * Counterpart to Solidity's `int184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n *\n * _Available since v4.7._\n */\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\n downcasted = int184(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 184 bits\");\n }\n\n /**\n * @dev Returns the downcasted int176 from int256, reverting on\n * overflow (when the input is less than smallest int176 or\n * greater than largest int176).\n *\n * Counterpart to Solidity's `int176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n *\n * _Available since v4.7._\n */\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\n downcasted = int176(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 176 bits\");\n }\n\n /**\n * @dev Returns the downcasted int168 from int256, reverting on\n * overflow (when the input is less than smallest int168 or\n * greater than largest int168).\n *\n * Counterpart to Solidity's `int168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n *\n * _Available since v4.7._\n */\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\n downcasted = int168(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 168 bits\");\n }\n\n /**\n * @dev Returns the downcasted int160 from int256, reverting on\n * overflow (when the input is less than smallest int160 or\n * greater than largest int160).\n *\n * Counterpart to Solidity's `int160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n *\n * _Available since v4.7._\n */\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\n downcasted = int160(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 160 bits\");\n }\n\n /**\n * @dev Returns the downcasted int152 from int256, reverting on\n * overflow (when the input is less than smallest int152 or\n * greater than largest int152).\n *\n * Counterpart to Solidity's `int152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n *\n * _Available since v4.7._\n */\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\n downcasted = int152(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 152 bits\");\n }\n\n /**\n * @dev Returns the downcasted int144 from int256, reverting on\n * overflow (when the input is less than smallest int144 or\n * greater than largest int144).\n *\n * Counterpart to Solidity's `int144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n *\n * _Available since v4.7._\n */\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\n downcasted = int144(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 144 bits\");\n }\n\n /**\n * @dev Returns the downcasted int136 from int256, reverting on\n * overflow (when the input is less than smallest int136 or\n * greater than largest int136).\n *\n * Counterpart to Solidity's `int136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n *\n * _Available since v4.7._\n */\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\n downcasted = int136(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 136 bits\");\n }\n\n /**\n * @dev Returns the downcasted int128 from int256, reverting on\n * overflow (when the input is less than smallest int128 or\n * greater than largest int128).\n *\n * Counterpart to Solidity's `int128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n *\n * _Available since v3.1._\n */\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\n downcasted = int128(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 128 bits\");\n }\n\n /**\n * @dev Returns the downcasted int120 from int256, reverting on\n * overflow (when the input is less than smallest int120 or\n * greater than largest int120).\n *\n * Counterpart to Solidity's `int120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n *\n * _Available since v4.7._\n */\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\n downcasted = int120(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 120 bits\");\n }\n\n /**\n * @dev Returns the downcasted int112 from int256, reverting on\n * overflow (when the input is less than smallest int112 or\n * greater than largest int112).\n *\n * Counterpart to Solidity's `int112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n *\n * _Available since v4.7._\n */\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\n downcasted = int112(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 112 bits\");\n }\n\n /**\n * @dev Returns the downcasted int104 from int256, reverting on\n * overflow (when the input is less than smallest int104 or\n * greater than largest int104).\n *\n * Counterpart to Solidity's `int104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n *\n * _Available since v4.7._\n */\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\n downcasted = int104(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 104 bits\");\n }\n\n /**\n * @dev Returns the downcasted int96 from int256, reverting on\n * overflow (when the input is less than smallest int96 or\n * greater than largest int96).\n *\n * Counterpart to Solidity's `int96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n *\n * _Available since v4.7._\n */\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\n downcasted = int96(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 96 bits\");\n }\n\n /**\n * @dev Returns the downcasted int88 from int256, reverting on\n * overflow (when the input is less than smallest int88 or\n * greater than largest int88).\n *\n * Counterpart to Solidity's `int88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n *\n * _Available since v4.7._\n */\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\n downcasted = int88(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 88 bits\");\n }\n\n /**\n * @dev Returns the downcasted int80 from int256, reverting on\n * overflow (when the input is less than smallest int80 or\n * greater than largest int80).\n *\n * Counterpart to Solidity's `int80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n *\n * _Available since v4.7._\n */\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\n downcasted = int80(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 80 bits\");\n }\n\n /**\n * @dev Returns the downcasted int72 from int256, reverting on\n * overflow (when the input is less than smallest int72 or\n * greater than largest int72).\n *\n * Counterpart to Solidity's `int72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n *\n * _Available since v4.7._\n */\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\n downcasted = int72(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 72 bits\");\n }\n\n /**\n * @dev Returns the downcasted int64 from int256, reverting on\n * overflow (when the input is less than smallest int64 or\n * greater than largest int64).\n *\n * Counterpart to Solidity's `int64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n *\n * _Available since v3.1._\n */\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\n downcasted = int64(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 64 bits\");\n }\n\n /**\n * @dev Returns the downcasted int56 from int256, reverting on\n * overflow (when the input is less than smallest int56 or\n * greater than largest int56).\n *\n * Counterpart to Solidity's `int56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n *\n * _Available since v4.7._\n */\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\n downcasted = int56(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 56 bits\");\n }\n\n /**\n * @dev Returns the downcasted int48 from int256, reverting on\n * overflow (when the input is less than smallest int48 or\n * greater than largest int48).\n *\n * Counterpart to Solidity's `int48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n *\n * _Available since v4.7._\n */\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\n downcasted = int48(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 48 bits\");\n }\n\n /**\n * @dev Returns the downcasted int40 from int256, reverting on\n * overflow (when the input is less than smallest int40 or\n * greater than largest int40).\n *\n * Counterpart to Solidity's `int40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n *\n * _Available since v4.7._\n */\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\n downcasted = int40(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 40 bits\");\n }\n\n /**\n * @dev Returns the downcasted int32 from int256, reverting on\n * overflow (when the input is less than smallest int32 or\n * greater than largest int32).\n *\n * Counterpart to Solidity's `int32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n *\n * _Available since v3.1._\n */\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\n downcasted = int32(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 32 bits\");\n }\n\n /**\n * @dev Returns the downcasted int24 from int256, reverting on\n * overflow (when the input is less than smallest int24 or\n * greater than largest int24).\n *\n * Counterpart to Solidity's `int24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n *\n * _Available since v4.7._\n */\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\n downcasted = int24(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 24 bits\");\n }\n\n /**\n * @dev Returns the downcasted int16 from int256, reverting on\n * overflow (when the input is less than smallest int16 or\n * greater than largest int16).\n *\n * Counterpart to Solidity's `int16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n *\n * _Available since v3.1._\n */\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\n downcasted = int16(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 16 bits\");\n }\n\n /**\n * @dev Returns the downcasted int8 from int256, reverting on\n * overflow (when the input is less than smallest int8 or\n * greater than largest int8).\n *\n * Counterpart to Solidity's `int8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n *\n * _Available since v3.1._\n */\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\n downcasted = int8(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 8 bits\");\n }\n\n /**\n * @dev Converts an unsigned uint256 into a signed int256.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxInt256.\n *\n * _Available since v3.0._\n */\n function toInt256(uint256 value) internal pure returns (int256) {\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n require(value <= uint256(type(int256).max), \"SafeCast: value doesn't fit in an int256\");\n return int256(value);\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/MathUpgradeable.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary StringsUpgradeable {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = MathUpgradeable.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, MathUpgradeable.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n}\n"},"@openzeppelin/contracts/governance/utils/IVotes.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/IVotes.sol)\npragma solidity ^0.8.0;\n\n/**\n * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\n *\n * _Available since v4.5._\n */\ninterface IVotes {\n /**\n * @dev Emitted when an account changes their delegate.\n */\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\n\n /**\n * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\n */\n event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance);\n\n /**\n * @dev Returns the current amount of votes that `account` has.\n */\n function getVotes(address account) external view returns (uint256);\n\n /**\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\n */\n function getPastVotes(address account, uint256 blockNumber) external view returns (uint256);\n\n /**\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\n *\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\n * vote.\n */\n function getPastTotalSupply(uint256 blockNumber) external view returns (uint256);\n\n /**\n * @dev Returns the delegate that `account` has chosen.\n */\n function delegates(address account) external view returns (address);\n\n /**\n * @dev Delegates votes from the sender to `delegatee`.\n */\n function delegate(address delegatee) external;\n\n /**\n * @dev Delegates votes from signer to `delegatee`.\n */\n function delegateBySig(\n address delegatee,\n uint256 nonce,\n uint256 expiry,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overridden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n"},"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC1155.sol\";\n\n/**\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155MetadataURI is IERC1155 {\n /**\n * @dev Returns the URI for token type `id`.\n *\n * If the `\\{id\\}` substring is present in the URI, it must be replaced by\n * clients with the actual token type ID.\n */\n function uri(uint256 id) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155 is IERC165 {\n /**\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\n */\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n /**\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n * transfers.\n */\n event TransferBatch(\n address indexed operator,\n address indexed from,\n address indexed to,\n uint256[] ids,\n uint256[] values\n );\n\n /**\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n * `approved`.\n */\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n\n /**\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n *\n * If an {URI} event was emitted for `id`, the standard\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n * returned by {IERC1155MetadataURI-uri}.\n */\n event URI(string value, uint256 indexed id);\n\n /**\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function balanceOf(address account, uint256 id) external view returns (uint256);\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n *\n * Requirements:\n *\n * - `accounts` and `ids` must have the same length.\n */\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\n external\n view\n returns (uint256[] memory);\n\n /**\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n *\n * Emits an {ApprovalForAll} event.\n *\n * Requirements:\n *\n * - `operator` cannot be the caller.\n */\n function setApprovalForAll(address operator, bool approved) external;\n\n /**\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n *\n * See {setApprovalForAll}.\n */\n function isApprovedForAll(address account, address operator) external view returns (bool);\n\n /**\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes calldata data\n ) external;\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts,\n bytes calldata data\n ) external;\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes calldata data\n ) external;\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool _approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"contracts/beacon/N2MERC1155Upgradeable.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * ----------------------------------------------------------------------------- */\n\n// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"./N2MUpgradeable.sol\";\n\ncontract N2MERC1155Upgradeable is N2MUpgradeable {\n constructor(address factoryAddress) N2MUpgradeable(factoryAddress) {}\n\n function _implementation() internal view override returns (address) {\n return IN2MBeaconFactory(FACTORY_ADDRESS).getERC1155Implementation();\n }\n}\n"},"contracts/beacon/N2MERC721Upgradeable.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"./N2MUpgradeable.sol\";\n\ncontract N2MERC721Upgradeable is N2MUpgradeable {\n constructor(address factoryAddress) N2MUpgradeable(factoryAddress) {}\n\n function _implementation() internal view override returns (address) {\n return IN2MBeaconFactory(FACTORY_ADDRESS).getERC721Implementation();\n }\n}\n"},"contracts/beacon/N2MUpgradeable.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"@nfts2me/contracts/important/README.sol\";\nimport \"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol\";\nimport \"@openzeppelin/contracts/proxy/Proxy.sol\";\nimport \"../N2MVersion.sol\";\n\nabstract contract N2MUpgradeable is Proxy {\n address internal immutable FACTORY_ADDRESS;\n\n constructor(address factoryAddress) {\n FACTORY_ADDRESS = factoryAddress;\n }\n\n function n2mVersions() external view returns (uint256 implementationVersion, uint256 beaconVersion) {\n implementationVersion = N2MVersion(address(this)).n2mVersion();\n beaconVersion = 1000;\n }\n}\n"},"contracts/interfaces/IN2M_ERCBase.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\";\nimport \"./IN2M_ERCStorage.sol\";\n\ninterface IN2M_ERCBase is IERC2981Upgradeable, IN2M_ERCStorage {\n /// @notice To be called to create the collection. Can only be called once.\n function initialize\n (\n string memory tokenName,\n string memory tokenSymbol,\n uint256 iMintPrice,\n bytes32 baseURICIDHash,\n bytes32 placeholderImageCIDHash,\n RevenueAddress[] calldata revenueAddresses,\n address iErc20PaymentAddress,\n uint32 iTotalSupply,\n uint16 iRoyaltyFee,\n bool soulboundCollection,\n MintingType iMintingType\n ) external payable;\n\n /// @notice A descriptive name for a collection of NFTs in this contract\n function name() external view returns (string memory);\n\n /// @notice An abbreviated name for NFTs in this contract\n /// @return the collection symbol\n function symbol() external view returns (string memory);\n\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\n /// 3986. The URI may point to a JSON file that conforms to the \"ERC721\n /// Metadata JSON Schema\".\n function tokenURI(uint256 tokenId) external view returns (string memory);\n\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n function mint() external payable;\n\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param amount The number of NFTs to mint\n function mint(uint256 amount) external payable;\n\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param amount The number of NFTs to mint\n /// @param affiliate The affiliate address\n function mint(uint256 amount, address affiliate) external payable;\n\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param to The address of the NFTs receiver\n /// @param amount The number of NFTs to mint \n function mintTo(address to, uint256 amount) external payable;\n\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param to The address of the NFTs receiver\n /// @param amount The number of NFTs to mint \n /// @param affiliate The affiliate address\n function mintTo(address to, uint256 amount, address affiliate) external payable;\n\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\n /// @param to The address of the NFTs receiver\n /// @param amount The number of NFTs to mint \n function mintRandomTo(address to, uint256 amount) external payable; \n\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\n /// @param to The address of the NFTs receiver\n /// @param amount The number of NFTs to mint \n /// @param affiliate The affiliate address\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable;\n\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\n function redeemRandom() external payable;\n\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param to The address of the NFTs receiver\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n function mintSpecifyTo(address to, uint256[] memory tokenIds) external payable; \n\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param to The address of the NFTs receiver\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n /// @param affiliate The affiliate address\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) external payable; \n\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\n /// @param to The address of the NFTs receiver\n /// @param customURICIDHash The CID of the given token.\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound) external payable;\n\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\n /// @param to The addresses of the NFTs receivers\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n function airdropSequential(address[] memory to, bool soulbound) external payable;\n\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\n /// @param to The addresses of the NFTs receivers\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n function airdropRandom(address[] memory to, bool soulbound) external payable;\n\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\n /// @param to The addresses of the NFTs receivers\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n function airdropSpecify(address[] memory to, uint256[] memory tokenIds, bool soulbound) external payable;\n\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\n /// @param to The addresses of the NFTs receivers\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\n /// @param freeMinting True is minting is free\n /// @param customFee Zero is fee is different from `mintingPrice`.\n /// @param maxAmount Max Amount to be minted with the given `signature`.\n /// @param amount Amount to mint.\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n /// @param signature Valid `signature` for the presale/whitelist.\n function mintPresale (\n address to, \n uint256[] memory tokenIds,\n bool freeMinting, \n uint256 customFee, \n uint256 maxAmount,\n uint256 amount, \n bool soulbound,\n bytes calldata signature) payable external;\n\n /// @notice Returns the minting price of one NFT.\n /// @return Mint price for one NFT in native coin or ERC-20.\n function mintPrice() external view returns (uint256);\n\n /// @notice Returns the current total supply.\n /// @return Current total supply.\n function totalSupply() external view returns (uint256);\n\n /// @notice Max amount of NFTs to be hold per address.\n /// @return Max per address allowed.\n function maxPerAddress() external view returns (uint16);\n\n}\n\n"},"contracts/interfaces/IN2M_ERCCommon.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"./IN2M_ERCLibrary.sol\";\nimport \"./IN2M_ERCBase.sol\";\n\ninterface IN2M_ERCCommon is IN2M_ERCBase, IN2M_ERCLibrary {\n /// @notice Returns the address of the current collection owner.\n /// @return The address of the owner.\n function owner() external view returns (address);\n}\n\n"},"contracts/interfaces/IN2M_ERCLibrary.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"./IN2M_ERCStorage.sol\";\n\ninterface IN2M_ERCLibrary is IN2M_ERCStorage {\n function setAndRevealBaseURI(bytes32 baseURICIDHash) external;\n function changeMintPrice(uint256 newMintPrice) external;\n function contractURI() external view returns (string memory);\n function setContractURI(bytes32 newContractURIMetadataCIDHash) external;\n function setAffiliatesPercentageAndDiscount(uint16 userDiscount, uint16 affiliatePercentage, address affiliateAddress) external;\n function affiliateWithdraw(address affiliate) external;\n function withdrawERC20(address erc20Address) external;\n function withdrawERC20Pro(uint256 signatureExpireDate, uint n2mFee, address erc20Address, bytes calldata signature) external;\n function withdraw() external;\n function withdrawPro(uint256 signatureExpireDate, uint256 n2mFee, bytes calldata signature) external;\n function setReverseENSName(address rerverseResolver, string calldata collectionENSName) external;\n function initializeAndSetReverseENSName(address resolver, string calldata collectionENSName) external;\n function changePlaceholderImageCID(bytes32 newPlaceholderImageCIDHash) external;\n function setPhase(SalePhase newPhase) external;\n function setDropDate(uint256 dropDateTimestamp) external;\n function setDropAndEndDate(uint256 dropDateTimestamp, uint256 endDateTimestamp) external;\n function setMaxPerAddress(uint16 newMaxPerAddress) external;\n function isOperatorFilterRegistryEnabled() external view returns (bool);\n function enableOperatorFilterRegistry() external;\n function disableOperatorFilterRegistry() external;\n function collectionSize() external view returns (uint256);\n function randomTickets(address affiliate) external view returns (uint amount, uint blockNumberToReveal);\n function affiliatesInfo(address affiliate) external view returns (bool enabled, uint16 affiliatePercentage, uint16 userDiscount);\n function pendingAffiliateBalance(address affiliate) external view returns (uint256);\n function pendingTotalAffiliatesBalance() external view returns (uint256);\n function royaltyFee() external view returns (uint256);\n function withdrawnAmount() external view returns (uint256);\n function withdrawnERC20Amount(address erc20) external view returns (uint256);\n function erc20PaymentAddress() external view returns (address);\n function currentPhase() external view returns (SalePhase);\n function mintingType() external view returns (MintingType);\n function saleDates() external view returns (uint256 dropDateTimestamp, uint256 endDateTimestamp);\n function isOpen() external view returns (bool);\n function ownerMaxRevenue() external view returns (uint256);\n\n}\n\n"},"contracts/interfaces/IN2M_ERCStorage.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"@nfts2me/contracts/important/README.sol\";\n\ninterface IN2M_ERCStorage is Readme {\n /// @notice This event is emitted when a token is minted using an affiliate\n /// @param affiliate The affiliate address\n event AffiliateSell(address indexed affiliate);\n\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\n error TokenAlreadyMinted();\n\n /// @notice Error thrown when input variable differ in length\n error InvalidInputSizesDontMatch();\n\n /// @notice Error thrown when input variable differ in length\n error InputSizeMismatch();\n\n /// @notice Error thrown when trying to mint a token with a given invalid id\n error InvalidTokenId();\n\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\n error NothingToRedeem();\n\n /// @notice Error thrown when trying to redeem random tickets too soon\n error CantRevealYetWaitABitToBeAbleToRedeem();\n\n /// @notice Error thrown when the input amount is not valid\n error InvalidAmount();\n\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\n error CollectionSoldOut();\n\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\n error PresaleNotOpen();\n\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\n error PublicSaleNotOpen();\n\n /// @notice Error thrown when trying to mint but the sale has already finished\n error SaleFinished();\n\n /// @notice Error thrown when trying to mint more than the allowance to mint\n error NotEnoughAmountToMint();\n\n /// @notice Error thrown when sending funds to a free minting\n error InvalidMintFeeForFreeMinting();\n\n /// @notice Error thrown when the sent amount is not valid\n error InvalidMintFee();\n\n /// @notice Royalty fee can't be higher than 10%\n error RoyaltyFeeTooHigh();\n\n /// @notice Invalid input. Total supply must be greater than zero\n error TotalSupplyMustBeGreaterThanZero();\n\n /// @notice Can't set BaseURI and Placeholder at the same time\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\n\n /// @notice No BaseURI nor Placeholder set\n error NoBaseURINorPlaceholderSet();\n\n /// @notice Can't transfer a Soulbound Token (SBT)\n error NonTransferrableSoulboundNFT();\n\n /// @notice The input revenue percentages are not valid\n error InvalidRevenuePercentage();\n\n /// @notice Can't mint until specified drop date\n error WaitUntilDropDate();\n\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\n error PresaleInvalidMintingType();\n\n /// @notice Metadata is already fixed. Can't change metadata once fixed\n error MetadataAlreadyFixed();\n\n /// @notice Invalid collection minting type for the current minting function\n error InvalidMintingType();\n\n /// @notice The address exceeded the max per address amount\n error MaxPerAddressExceeded();\n\n /// @notice The given signature doesn't match the input values\n error SignatureMismatch();\n\n /// @notice Reentrancy Guard protection\n error ReentrancyGuard();\n\n /// @notice New Placeholder can't be empty\n error NewPlaceholderCantBeEmpty();\n\n /// @notice New BaseURI can't be empty\n error NewBaseURICantBeEmpty(); \n\n /// @notice Invalid percentage or discount values\n error InvalidPercentageOrDiscountValues();\n\n /// @notice Can't lower current percentages\n error CantLowerCurrentPercentages();\n\n /// @notice Contract MetadataURI already fixed\n error ContractMetadataURIAlreadyFixed();\n\n /// @notice Only owner of N2M can call this function\n error OnlyOwnerOrN2M();\n\n /// @notice Only the given affiliate or N2M can call this function\n error OnlyAffiliateOrN2M();\n\n /// @notice The signature has expired\n error SignatureExpired();\n\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\n error InvalidPhaseWithoutDate();\n\n /// @notice Invalid drop date\n error InvalidDropDate();\n\n /// @notice Operator address is filtered\n error AddressFiltered(address filtered);\n\n struct RandomTicket {\n uint256 amount;\n uint256 blockNumberToReveal;\n }\n\n struct RevenueAddress {\n address to;\n uint16 percentage;\n }\n\n struct AffiliateInformation {\n bool enabled;\n uint16 affiliatePercentage;\n uint16 userDiscount;\n }\n\n enum SalePhase { \n CLOSED,\n PRESALE,\n PUBLIC,\n DROP_DATE,\n DROP_AND_END_DATE\n }\n\n enum MintingType { \n SEQUENTIAL, \n RANDOM, \n SPECIFY, \n CUSTOM_URI \n }\n\n enum OperatorFilterStatus { \n ENABLED_NOT_INITIALIZED, \n ENABLED_EXISTS, \n DISABLED_NOT_INITIALIZED,\n DISABLED_EXISTS \n }\n\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\n function isMetadataFixed() external view returns (bool);\n\n}\n\n"},"contracts/interfaces/IN2MBeaconFactory.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\ninterface IN2MUpgradeable {\n function getERC721Implementation() external view returns (address);\n function getERC1155Implementation() external view returns (address);\n}\n"},"contracts/interfaces/IN2MCrossFactory.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\ninterface IN2MCrossFactory {\n function getN2MTreasuryAddress() external pure returns (address);\n function ownerOf(uint256 tokenId) external view returns (address);\n function strictOwnerOf(uint256 tokenId) external view returns (address);\n}\n"},"contracts/interfaces/IN2MERC1155.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\";\nimport \"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\";\nimport \"./IN2M_ERCCommon.sol\";\n\ninterface IN2MERC1155 is IERC1155MetadataURI, IN2M_ERCCommon {\n function supportsInterface(bytes4 interfaceId) external view override(IERC165, IERC165Upgradeable) returns (bool);\n function balanceOf(address owner) external view returns (uint256 balance);\n function totalSupply(uint256 id) external view returns (uint256);\n function exists(uint256 id) external view returns (bool);\n function getSupplies(uint256 startId, uint256 endId) external view returns (uint256[] memory supplies, uint256 blockNumber, uint256 blockTimestamp);\n}\n\n"},"contracts/interfaces/IN2MERC721.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\";\nimport \"@openzeppelin/contracts/governance/utils/IVotes.sol\";\nimport \"./IN2M_ERCCommon.sol\";\n\ninterface IN2MERC721 is IERC721Metadata, IN2M_ERCCommon, IVotes {\n function name() external view override(IERC721Metadata, IN2M_ERCBase) returns (string memory);\n function tokenURI(uint256 tokenId) external view override(IERC721Metadata, IN2M_ERCBase) returns (string memory);\n function symbol() external view override(IERC721Metadata, IN2M_ERCBase) returns (string memory);\n function supportsInterface(bytes4 interfaceId) external view override(IERC165, IERC165Upgradeable) returns (bool);\n}\n\n"},"contracts/interfaces/IOperatorFilterRegistry.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\ninterface IOperatorFilterRegistry {\n function isOperatorAllowed(address registrant, address operator) external view returns (bool);\n function register(address registrant) external;\n function registerAndSubscribe(address registrant, address subscription) external;\n function registerAndCopyEntries(address registrant, address registrantToCopy) external;\n function updateOperator(address registrant, address operator, bool filtered) external;\n function updateOperators(address registrant, address[] calldata operators, bool filtered) external;\n function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;\n function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;\n function subscribe(address registrant, address registrantToSubscribe) external;\n function unsubscribe(address registrant, bool copyExistingEntries) external;\n function subscriptionOf(address addr) external returns (address registrant);\n function subscribers(address registrant) external returns (address[] memory);\n function subscriberAt(address registrant, uint256 index) external returns (address);\n function copyEntriesOf(address registrant, address registrantToCopy) external;\n function isOperatorFiltered(address registrant, address operator) external returns (bool);\n function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);\n function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);\n function filteredOperators(address addr) external returns (address[] memory);\n function filteredCodeHashes(address addr) external returns (bytes32[] memory);\n function filteredOperatorAt(address registrant, uint256 index) external returns (address);\n function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);\n function isRegistered(address addr) external view returns (bool);\n function codeHashOf(address addr) external view returns (bytes32);\n}"},"contracts/interfaces/IReverseRegistrar.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\ninterface IReverseRegistrar {\n function setDefaultResolver(address resolver) external;\n\n function claim(address owner) external returns (bytes32);\n\n function claimForAddr(\n address addr,\n address owner,\n address resolver\n ) external returns (bytes32);\n\n function claimWithResolver(address owner, address resolver)\n external\n returns (bytes32);\n\n function setName(string memory name) external returns (bytes32);\n\n function setNameForAddr(\n address addr,\n address owner,\n address resolver,\n string memory name\n ) external returns (bytes32);\n\n function node(address addr) external pure returns (bytes32);\n}"},"contracts/N2MCommonStorage.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\";\nimport \"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\";\nimport \"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\";\nimport {IOperatorFilterRegistry} from \"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\";\nimport \"./N2MVersion.sol\";\n\n/// @title NFTs2Me.com Smart Contracts\n/// @author The NFTs2Me Team\n/// @notice Read our terms of service\n/// @custom:security-contact security@nfts2me.com\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\n/// @custom:website https://nfts2me.com/\nabstract contract N2MCommonStorage is\n NFTOwnableUpgradeable,\n IN2M_ERCStorage,\n N2MVersion\n{\n /// CONSTANTS\n address internal constant DEFAULT_SUBSCRIPTION = address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6);\n address internal constant OPENSEA_CONDUIT = address(0x1E0049783F008A0085193E00003D00cd54003c71);\n address internal constant N2M_CONDUIT = address(0x88899DC0B84C6E726840e00DFb94ABc6248825eC);\n IOperatorFilterRegistry internal constant operatorFilterRegistry = IOperatorFilterRegistry(0x000000000000AAeB6D7670E522A718067333cd4E);\n address internal constant N2M_PRESALE_SIGNER = address(0xC0ffee06CE3D6689305035601a055A96acd619c6);\n address internal constant N2M_TREASURY = address(0x955aF4de9Ca03f84c9462457D075aCABf1A8AfC8);\n uint256 internal constant N2M_FEE = 5_00;\n uint256 internal constant MAX_AFFILIATE_DISCOUNT = 100_00;\n uint256 internal constant MAX_AFFILIATE_PERCENTAGE = 100_00;\n uint256 internal constant NOT_ENTERED = 0;\n\n /// IMMUTABLE \n address payable internal immutable _factory;\n\n bytes32 internal _baseURICIDHash;\n bytes32 internal _placeholderImageCIDHash;\n bytes32 internal _contractURIMetadataCIDHash;\n\n mapping(address => uint256) internal _pendingAffiliateBalance;\n uint256 internal _pendingTotalAffiliatesBalance;\n\n RevenueAddress[] internal _revenueInfo;\n mapping(address => AffiliateInformation) internal _affiliatesInfo;\n\n uint256 internal _mintPrice;\n uint256 internal _withdrawnAmount;\n uint256 internal _reentrancyEntered;\n uint256 internal _dropDateTimestamp;\n uint256 internal _endDateTimestamp; \n\n mapping(address => uint256) internal _withdrawnERC20Amount;\n address internal _erc20PaymentAddress;\n\n mapping(address => RandomTicket) internal _randomTickets;\n mapping(bytes => uint256) internal _usedAmountSignature;\n mapping(uint256 => bool) internal _soulbound;\n mapping(uint256 => bytes32) internal _customURICIDHashes;\n\n uint32 internal _soldTokens;\n SalePhase internal _currentPhase;\n OperatorFilterStatus internal _operatorFilterStatus;\n MintingType internal _mintingType; \n uint16 internal _royaltyFee;\n uint16 internal _maxPerAddress; \n uint32 internal _collectionSize;\n bool internal _isERC20Payment;\n bool internal _soulboundCollection;\n\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(address payable factoryAddress) {\n _factory = factoryAddress;\n _disableInitializers();\n }\n\n /// @notice Returns the address of the current collection owner.\n function owner() public view override(NFTOwnableUpgradeable) returns (address collectionOwner) {\n try IN2MCrossFactory(_factory).ownerOf(uint256(uint160(address(this)))) returns (address ownerOf) {\n return ownerOf;\n } catch {}\n }\n\n function _strictOwner() internal view override(NFTOwnableUpgradeable) returns (address ownerStrictAddress) {\n try IN2MCrossFactory(_factory).strictOwnerOf(uint256(uint160(address(this)))) returns (address strictOwnerOf) {\n return strictOwnerOf;\n } catch {}\n }\n\n function _getN2MFeeAddress() internal view override(NFTOwnableUpgradeable) returns (address) {\n\n try IN2MCrossFactory(_factory).getN2MTreasuryAddress() returns (address n2mTreasuryAddress) {\n return n2mTreasuryAddress;\n } catch {\n return N2M_TREASURY;\n }\n } \n\n modifier nonReentrant() {\n _nonReentrantBefore();\n _;\n _nonReentrantAfter();\n }\n\n function _nonReentrantBefore() private {\n if (_reentrancyEntered != 0) revert ReentrancyGuard();\n _reentrancyEntered = 1;\n }\n\n function _nonReentrantAfter() private {\n delete(_reentrancyEntered);\n } \n\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\n function isMetadataFixed() public view override returns (bool) {\n return (_baseURICIDHash != 0 || (_mintingType == MintingType.CUSTOM_URI));\n }\n\n}\n"},"contracts/N2MERC1155.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\";\n\nimport \"./N2MTokenCommon.sol\";\n\n/// @title NFTs2Me.com Smart Contracts for ERC-1155.\n/// @author The NFTs2Me Team\n/// @notice Read our terms of service\n/// @custom:security-contact security@nfts2me.com\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\n/// @custom:website https://nfts2me.com/\ncontract N2MERC1155 is\n N2MTokenCommon,\n ERC1155Upgradeable,\n ERC1155SupplyUpgradeable\n{\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(address libraryAddress, address payable factoryAddress) N2MTokenCommon(libraryAddress, factoryAddress) {}\n\n string private _name;\n string public override symbol;\n\n mapping(address => uint256) private _balances;\n\n /// @notice To be called to create the collection. Can only be called once.\n function initialize(\n string memory tokenName,\n string memory tokenSymbol,\n uint256 iMintPrice,\n bytes32 baseURICIDHash,\n bytes32 placeholderImageCIDHash,\n RevenueAddress[] calldata revenueAddresses,\n address iErc20PaymentAddress,\n uint32 iTotalSupply,\n uint16 iRoyaltyFee,\n bool soulboundCollection,\n MintingType iMintingType\n ) public payable override initializer {\n\n _name = tokenName;\n symbol = tokenSymbol;\n\n if (iTotalSupply == 0) revert TotalSupplyMustBeGreaterThanZero();\n if (baseURICIDHash != 0 && placeholderImageCIDHash != 0) revert CantSetBaseURIAndPlaceholderAtTheSameTime();\n if (iRoyaltyFee > 50_00) revert RoyaltyFeeTooHigh();\n\n _collectionSize = iTotalSupply;\n if (baseURICIDHash == 0) {\n if (placeholderImageCIDHash == 0) {\n if (iMintingType != MintingType.CUSTOM_URI)\n revert NoBaseURINorPlaceholderSet();\n } else {\n _placeholderImageCIDHash = placeholderImageCIDHash;\n }\n } else {\n _baseURICIDHash = baseURICIDHash;\n }\n\n _mintPrice = iMintPrice;\n _royaltyFee = iRoyaltyFee;\n if (iMintingType != MintingType.SEQUENTIAL) {\n _mintingType = iMintingType;\n }\n if (iErc20PaymentAddress != address(0)) {\n _isERC20Payment = true;\n _erc20PaymentAddress = iErc20PaymentAddress;\n }\n if (soulboundCollection == true) {\n _soulboundCollection = true;\n }\n\n if (revenueAddresses.length > 0) {\n uint256 revenuePercentageTotal;\n for (uint256 i; i < revenueAddresses.length; ) {\n revenuePercentageTotal += revenueAddresses[i].percentage;\n unchecked {\n ++i;\n }\n }\n _revenueInfo = revenueAddresses;\n if (revenuePercentageTotal > 100_00 - N2M_FEE) revert InvalidRevenuePercentage();\n }\n\n }\n\n /// @notice alias for `uri`\n function tokenURI(uint256 tokenId)\n public\n view\n override\n returns (string memory)\n {\n return uri(tokenId);\n }\n\n /// @notice tokenURI of the given token\n /// @param tokenId of the token to ask for\n /// @return tokenURI for `tokenId`\n function uri(uint256 tokenId)\n public\n view\n override(ERC1155Upgradeable)\n returns (string memory)\n {\n return IN2MLibrary(address(this)).tokenURIImpl(tokenId);\n }\n\n function _exists(uint256 tokenId) internal view override returns (bool) {\n return exists(tokenId);\n }\n\n function _mint(address to, uint256 tokenId) internal override {\n super._mint(to, tokenId, 1, \"\");\n }\n\n /// @notice Collection name\n /// @return the collection name\n function name() public view override returns (string memory) {\n return _name;\n }\n\n /// @notice Balance of a given address for ERC-1155 (non-standard).\n /// @param owner to ask for the balance\n /// @return balance of the `owner`\n function balanceOf(address owner) public view override returns (uint256 balance) {\n if (owner == address(0)) revert();\n balance = _balances[owner];\n if (_mintingType == MintingType.RANDOM) {\n balance += _randomTickets[owner].amount;\n }\n }\n\n function _mintSequential(address to, uint256 amount) internal override {\n if (amount == 1) {\n unchecked {\n _mint(to, ++_soldTokens, 1, \"\");\n }\n } else {\n uint256[] memory ids = new uint256[](amount);\n uint256[] memory amounts = new uint256[](amount);\n\n for (uint256 i; i < amount; ) {\n unchecked {\n ids[i] = ++_soldTokens;\n amounts[i] = 1;\n ++i;\n }\n }\n\n _mintBatch(to, ids, amounts, \"\");\n }\n }\n\n function _mintSpecify(address to, uint256[] memory tokenIds)\n internal\n override\n {\n uint32 amount = uint32(tokenIds.length);\n _soldTokens += amount;\n uint256[] memory amounts = new uint256[](amount);\n\n for (uint256 i; i < amount; ) {\n uint256 tokenId = tokenIds[i];\n amounts[i] = 1;\n if (_exists(tokenId)) revert TokenAlreadyMinted();\n if (tokenId <= 0 || tokenId > _collectionSize) revert InvalidTokenId();\n unchecked {\n ++i;\n }\n }\n _mintBatch(to, tokenIds, amounts, \"\");\n }\n\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal override(ERC1155Upgradeable, ERC1155SupplyUpgradeable) {\n uint256 length = ids.length;\n for (uint256 i; i < length; ) {\n\n if (from != address(0)) {\n if (_soulbound[ids[i]] || _soulboundCollection) revert NonTransferrableSoulboundNFT();\n\n _balances[from] -= amounts[i];\n }\n\n if (to != address(0)) {\n\n _balances[to] += amounts[i];\n }\n\n unchecked {\n ++i;\n }\n }\n\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n if (_maxPerAddress != 0) {\n\n if (balanceOf(to) > _maxPerAddress) revert MaxPerAddressExceeded();\n } \n }\n\n /// @notice Query if a contract implements an interface\n /// @param interfaceId The interface identifier, as specified in ERC-165\n /// @dev Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\n /// @return `true` if the contract implements `interfaceId` and `interfaceId` is not 0xffffffff, `false` otherwise\n function supportsInterface(bytes4 interfaceId)\n public\n view\n override(ERC1155Upgradeable, IERC165Upgradeable)\n returns (bool)\n {\n return (\n\n interfaceId == type(IERC2981Upgradeable).interfaceId || super.supportsInterface(interfaceId));\n }\n\n /// @notice Enable or disable approval for a third party (\"operator\") to manage all of the caller's tokens.\n /// @dev MUST emit the ApprovalForAll event on success.\n /// @param operator Address to add to the set of authorized operators\n /// @param approved True if the operator is approved, false to revoke approval\n function setApprovalForAll(address operator, bool approved) public override onlyAllowedOperatorApproval(operator) {\n super.setApprovalForAll(operator, approved);\n } \n\n /// @notice Queries the approval status of an operator for a given owner.\n /// @param owner The owner of the tokens\n /// @param operator Address of authorized operator\n /// @return True if the operator is approved, false if not\n function isApprovedForAll(address owner, address operator)\n public\n view\n virtual\n override\n returns (bool)\n {\n\n if (operator == N2M_CONDUIT) return true;\n if (operator == OPENSEA_CONDUIT) return true;\n\n return super.isApprovedForAll(owner, operator);\n }\n\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) public override onlyAllowedOperator() {\n super.safeTransferFrom(from, to, id, amount, data);\n }\n\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) public override onlyAllowedOperator() {\n super.safeBatchTransferFrom(from, to, ids, amounts, data);\n }\n\n // ////////\n\n // ////////\n\n function getSupplies(uint256 startId, uint256 endId)\n external\n view\n returns (\n uint256[] memory supplies,\n uint256 blockNumber,\n uint256 blockTimestamp\n )\n {\n blockNumber = block.number;\n blockTimestamp = block.timestamp;\n\n if (endId >= startId) {\n uint256 total = 1 + endId - startId;\n unchecked {\n supplies = new uint256[](total);\n for (uint256 i; i < total; i++) {\n supplies[i] = totalSupply(startId + i);\n }\n }\n } else {\n uint256[] memory emptyArray;\n supplies = emptyArray;\n }\n } \n\n}\n"},"contracts/N2MERC721.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport \"./N2MTokenCommon.sol\";\n\n/// @title NFTs2Me.com Smart Contracts for ERC-721.\n/// @author The NFTs2Me Team\n/// @notice Read our terms of service\n/// @custom:security-contact security@nfts2me.com\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\n/// @custom:website https://nfts2me.com/\ncontract N2MERC721 is\n N2MTokenCommon,\n ERC721Upgradeable,\n EIP712Upgradeable,\n ERC721VotesUpgradeable\n{\n\n /// @notice To be called to create the collection. Can only be called once.\n function initialize(\n string memory tokenName,\n string memory tokenSymbol,\n uint256 iMintPrice,\n bytes32 baseURICIDHash,\n bytes32 placeholderImageCIDHash,\n RevenueAddress[] calldata revenueAddresses,\n address iErc20PaymentAddress,\n uint32 iTotalSupply,\n uint16 iRoyaltyFee,\n bool soulboundCollection,\n MintingType iMintingType\n ) public payable override initializer {\n __ERC721_init(tokenName, tokenSymbol);\n\n if (iTotalSupply == 0) revert TotalSupplyMustBeGreaterThanZero();\n if (baseURICIDHash != 0 && placeholderImageCIDHash != 0) revert CantSetBaseURIAndPlaceholderAtTheSameTime();\n if (iRoyaltyFee > 50_00) revert RoyaltyFeeTooHigh();\n\n _collectionSize = iTotalSupply;\n if (baseURICIDHash == 0) {\n if (placeholderImageCIDHash == 0) {\n if (iMintingType != MintingType.CUSTOM_URI)\n revert NoBaseURINorPlaceholderSet();\n } else {\n _placeholderImageCIDHash = placeholderImageCIDHash;\n }\n } else {\n _baseURICIDHash = baseURICIDHash;\n }\n\n _mintPrice = iMintPrice;\n _royaltyFee = iRoyaltyFee;\n if (iMintingType != MintingType.SEQUENTIAL) {\n _mintingType = iMintingType;\n }\n if (iErc20PaymentAddress != address(0)) {\n _isERC20Payment = true;\n _erc20PaymentAddress = iErc20PaymentAddress;\n }\n if (soulboundCollection == true) {\n _soulboundCollection = true;\n }\n\n if (revenueAddresses.length > 0) {\n uint256 revenuePercentageTotal;\n for (uint256 i; i < revenueAddresses.length; ) {\n revenuePercentageTotal += revenueAddresses[i].percentage;\n unchecked {\n ++i;\n }\n }\n _revenueInfo = revenueAddresses;\n if (revenuePercentageTotal > 100_00 - N2M_FEE) revert InvalidRevenuePercentage();\n }\n\n }\n\n constructor(address libraryAddress, address payable factoryAddress) N2MTokenCommon(libraryAddress, factoryAddress) {}\n\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\n /// 3986. The URI may point to a JSON file that conforms to the \"ERC721\n /// Metadata JSON Schema\".\n function tokenURI(uint256 tokenId)\n public\n view\n override(N2MTokenCommon, ERC721Upgradeable)\n returns (string memory)\n {\n _requireMinted(tokenId);\n return IN2MLibrary(address(this)).tokenURIImpl(tokenId);\n }\n\n function _exists(uint256 tokenId)\n internal\n view\n override(ERC721Upgradeable, N2MTokenCommon)\n returns (bool)\n {\n return super._exists(tokenId);\n }\n\n function _mint(address to, uint256 tokenId)\n internal\n override(ERC721Upgradeable, N2MTokenCommon)\n {\n super._mint(to, tokenId);\n }\n\n /// @notice A descriptive name for a collection of NFTs in this contract\n function name()\n public\n view\n override(ERC721Upgradeable, N2MTokenCommon)\n returns (string memory)\n {\n return super.name();\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 firstTokenId,\n uint256 batchSize\n ) internal override {\n if (\n from != address(0) &&\n (_soulbound[firstTokenId] || _soulboundCollection)\n ) revert NonTransferrableSoulboundNFT();\n\n super._beforeTokenTransfer(from, to, firstTokenId, batchSize);\n }\n\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 firstTokenId,\n uint256 batchSize\n ) internal override(ERC721Upgradeable, ERC721VotesUpgradeable) {\n super._afterTokenTransfer(from, to, firstTokenId, batchSize);\n\n if (_maxPerAddress != 0) {\n\n if (balanceOf(to) > _maxPerAddress) revert MaxPerAddressExceeded();\n }\n }\n\n function _burn(uint256 tokenId)\n internal\n override(ERC721Upgradeable)\n {\n super._burn(tokenId);\n if (_customURICIDHashes[tokenId] != 0) {\n delete _customURICIDHashes[tokenId];\n } \n }\n\n /// @notice Query if a contract implements an interface\n /// @param interfaceId The interface identifier, as specified in ERC-165\n /// @dev Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\n /// @return `true` if the contract implements `interfaceId` and `interfaceId` is not 0xffffffff, `false` otherwise\n function supportsInterface(bytes4 interfaceId)\n public\n view\n override(ERC721Upgradeable, IERC165Upgradeable)\n returns (bool)\n {\n return (\n\n interfaceId == type(IERC2981Upgradeable).interfaceId || super.supportsInterface(interfaceId));\n }\n\n /// @notice An abbreviated name for NFTs in this contract\n /// @return the collection symbol\n function symbol()\n public\n view\n virtual\n override(IN2M_ERCBase, ERC721Upgradeable)\n returns (string memory)\n {\n return super.symbol();\n }\n\n /// @notice Count all NFTs assigned to an owner\n /// @dev NFTs assigned to the zero address are considered invalid, and this\n /// function throws for queries about the zero address.\n /// @param owner An address for whom to query the balance\n /// @return balance The number of NFTs owned by `owner`, possibly zero\n function balanceOf(address owner) public view override(ERC721Upgradeable, N2MTokenCommon) returns (uint256 balance) {\n balance = super.balanceOf(owner);\n if (_mintingType == MintingType.RANDOM) {\n balance += _randomTickets[owner].amount;\n }\n }\n\n function _EIP712NameHash() internal virtual override view returns (bytes32) {\n\n return keccak256(\"NFTs2Me\");\n }\n\n function _EIP712VersionHash() internal virtual override view returns (bytes32) {\n return keccak256(\"1\");\n } \n\n /// @notice Enable or disable approval for a third party (\"operator\") to manage\n /// all of `msg.sender`'s assets\n /// @dev Emits the ApprovalForAll event. The contract MUST allow\n /// multiple operators per owner.\n /// @param operator Address to add to the set of authorized operators\n /// @param approved True if the operator is approved, false to revoke approval\n function setApprovalForAll(address operator, bool approved) public override onlyAllowedOperatorApproval(operator) {\n super.setApprovalForAll(operator, approved);\n }\n\n /// @notice Change or reaffirm the approved address for an NFT\n /// @dev The zero address indicates there is no approved address.\n /// Throws unless `msg.sender` is the current NFT owner, or an authorized\n /// operator of the current owner.\n /// @param operator The new approved NFT controller\n /// @param tokenId The NFT to approve\n function approve(address operator, uint256 tokenId) public override onlyAllowedOperatorApproval(operator) {\n super.approve(operator, tokenId);\n }\n\n /// @notice Query if an address is an authorized operator for another address\n /// @param owner The address that owns the NFTs\n /// @param operator The address that acts on behalf of the owner\n /// @return True if `operator` is an approved operator for `owner`, false otherwise\n function isApprovedForAll(address owner, address operator)\n public\n view\n virtual\n override\n returns (bool)\n {\n\n if (operator == N2M_CONDUIT) return true;\n if (operator == OPENSEA_CONDUIT) return true;\n\n return super.isApprovedForAll(owner, operator);\n }\n\n /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE\n /// TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE\n /// THEY MAY BE PERMANENTLY LOST\n /// @dev Throws unless `msg.sender` is the current owner, an authorized\n /// operator, or the approved address for this NFT. Throws if `from` is\n /// not the current owner. Throws if `to` is the zero address. Throws if\n /// `tokenId` is not a valid NFT.\n /// @param from The current owner of the NFT\n /// @param to The new owner\n /// @param tokenId The NFT to transfer\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public override onlyAllowedOperator() {\n super.transferFrom(from, to, tokenId);\n }\n\n /// @notice Transfers the ownership of an NFT from one address to another address\n /// @dev This works identically to the other function with an extra data parameter,\n /// except this function just sets data to \"\".\n /// @param from The current owner of the NFT\n /// @param to The new owner\n /// @param tokenId The NFT to transfer\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public override onlyAllowedOperator() {\n super.safeTransferFrom(from, to, tokenId);\n }\n\n /// @notice Transfers the ownership of an NFT from one address to another address\n /// @dev Throws unless `msg.sender` is the current owner, an authorized\n /// operator, or the approved address for this NFT. Throws if `from` is\n /// not the current owner. Throws if `to` is the zero address. Throws if\n /// `tokenId` is not a valid NFT. When transfer is complete, this function\n /// checks if `to` is a smart contract (code size > 0). If so, it calls\n /// `onERC721Received` on `to` and throws if the return value is not\n /// `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.\n /// @param from The current owner of the NFT\n /// @param to The new owner\n /// @param tokenId The NFT to transfer\n /// @param data Additional data with no specified format, sent in call to `to`\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) public override onlyAllowedOperator() {\n super.safeTransferFrom(from, to, tokenId, data);\n }\n\n}\n"},"contracts/N2MTokenCommon.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\";\n\n/// Utils\nimport \"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport \"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\";\nimport \"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol\";\nimport \"./N2MCommonStorage.sol\";\n\ninterface IN2MLibrary {\n function tokenURIImpl(uint256 tokenId) external view returns (string memory);\n}\n\n/// @title NFTs2Me.com Smart Contracts\n/// @author The NFTs2Me Team\n/// @notice Read our terms of service\n/// @custom:security-contact security@nfts2me.com\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\n/// @custom:website https://nfts2me.com/\nabstract contract N2MTokenCommon is N2MCommonStorage, IN2M_ERCBase {\n /// IMMUTABLE\n address internal immutable LIBRARY_ADDRESS;\n\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(address libraryAddress, address payable factoryAddress) N2MCommonStorage(factoryAddress) {\n LIBRARY_ADDRESS = libraryAddress;\n }\n\n function _mint(address to, uint256 tokenId) internal virtual;\n\n function _exists(uint256 tokenId) internal view virtual returns (bool);\n\n function name() external view virtual override returns (string memory);\n\n function tokenURI(uint256 tokenId) external view virtual override returns (string memory);\n\n function balanceOf(address owner) public view virtual returns (uint256 balance); \n\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n function mint() external payable override {\n _requirePayment(_mintPrice, 1);\n _checkPhase();\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\n unchecked {\n if ((++_soldTokens) > _collectionSize) revert CollectionSoldOut();\n }\n _mint(msg.sender, _soldTokens);\n }\n\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param amount The number of NFTs to mint\n function mint(uint256 amount) external payable override {\n _requirePayment(_mintPrice, amount);\n _mintSequentialWithChecks(msg.sender, amount);\n }\n\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param amount The number of NFTs to mint\n /// @param affiliate The affiliate address\n function mint(uint256 amount, address affiliate) external payable override {\n _requirePaymentWithAffiliates(amount, affiliate);\n _mintSequentialWithChecks(msg.sender, amount);\n }\n\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param to The address of the NFTs receiver\n /// @param amount The number of NFTs to mint \n function mintTo(address to, uint256 amount) external payable override {\n _requirePayment(_mintPrice, amount);\n _mintSequentialWithChecks(to, amount);\n }\n\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param to The address of the NFTs receiver\n /// @param amount The number of NFTs to mint \n /// @param affiliate The affiliate address\n function mintTo(address to, uint256 amount, address affiliate) external payable override {\n _requirePaymentWithAffiliates(amount, affiliate);\n _mintSequentialWithChecks(to, amount);\n }\n\n function _mintSequentialWithChecks(address to, uint256 amount) private {\n _checkPhase();\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\n if ((_soldTokens + amount) > _collectionSize) revert CollectionSoldOut();\n\n _mintSequential(to, amount);\n }\n\n function _mintSequential(address to, uint256 amount, bool soulbound) private {\n for (uint256 i; i < amount; ) {\n unchecked {\n _mint(to, ++_soldTokens);\n }\n if (soulbound) _soulbound[_soldTokens] = true;\n unchecked {\n ++i;\n }\n }\n }\n\n function _mintSequential(address to, uint256 amount) internal virtual {\n for (uint256 i; i < amount; ) {\n unchecked {\n _mint(to, ++_soldTokens);\n ++i;\n }\n }\n }\n\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\n /// @param to The address of the NFTs receiver\n /// @param amount The number of NFTs to mint \n function mintRandomTo(address to, uint256 amount) external payable override {\n _requirePayment(_mintPrice, amount);\n _mintRandomWithChecks(to, amount);\n }\n\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\n /// @param to The address of the NFTs receiver\n /// @param amount The number of NFTs to mint \n /// @param affiliate The affiliate address\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable override {\n _requirePaymentWithAffiliates(amount, affiliate);\n _mintRandomWithChecks(to, amount);\n }\n\n function _mintRandomWithChecks(address to, uint256 amount) private {\n _checkPhase();\n if (_mintingType != MintingType.RANDOM) revert InvalidMintingType();\n if (_soldTokens + (amount) > _collectionSize) revert CollectionSoldOut();\n\n unchecked {\n _randomTickets[to].blockNumberToReveal = block.number + 2;\n _randomTickets[to].amount += amount;\n _soldTokens += uint32(amount);\n }\n\n if (_maxPerAddress != 0) {\n\n if (balanceOf(to) > _maxPerAddress) revert MaxPerAddressExceeded();\n } \n }\n\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\n function redeemRandom() external payable override {\n uint256 blockNumberToReveal = _randomTickets[msg.sender].blockNumberToReveal;\n uint256 amountToRedeem = _randomTickets[msg.sender].amount;\n\n if (amountToRedeem == 0) revert NothingToRedeem();\n if (block.number <= _randomTickets[msg.sender].blockNumberToReveal) revert CantRevealYetWaitABitToBeAbleToRedeem();\n\n bytes32 seedFromBlockNumber = blockhash(blockNumberToReveal);\n\n if (seedFromBlockNumber == 0) {\n\n uint256 newBlockNumber = ((block.number & uint256(int256(-0x100))) + (blockNumberToReveal & 0xff));\n\n if ((newBlockNumber >= block.number)) {\n newBlockNumber -= 256;\n\n }\n seedFromBlockNumber = blockhash(newBlockNumber);\n\n }\n\n delete(_randomTickets[msg.sender].blockNumberToReveal);\n delete(_randomTickets[msg.sender].amount);\n\n uint16 maxPerAddressTemp = _maxPerAddress;\n delete(_maxPerAddress);\n _mintRandom(msg.sender, amountToRedeem, seedFromBlockNumber, false);\n _maxPerAddress = maxPerAddressTemp;\n }\n\n function _mintRandom(address to, uint256 amount, bytes32 seed, bool soulbound) private {\n for (; amount > 0; ) {\n uint256 tokenId = _randomTokenId(seed, amount);\n _mint(to, tokenId);\n if (soulbound) _soulbound[tokenId] = true;\n unchecked {\n --amount;\n }\n }\n }\n\n function _randomTokenId(bytes32 seed, uint256 extraModifier) private view returns (uint256 tokenId) {\n\n tokenId = (uint256(keccak256(abi.encodePacked(seed, extraModifier))) % _collectionSize) + 1;\n\n while (_exists(tokenId)) {\n unchecked {\n tokenId = (tokenId % _collectionSize) + 1;\n }\n }\n }\n\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param to The address of the NFTs receiver\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n function mintSpecifyTo(address to, uint256[] memory tokenIds)\n external\n payable\n override\n {\n _requirePayment(_mintPrice, tokenIds.length);\n _mintSpecifyWithChecks(to, tokenIds);\n }\n\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n /// @param to The address of the NFTs receiver\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n /// @param affiliate The affiliate address\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) \n external\n payable\n override\n {\n _requirePaymentWithAffiliates(tokenIds.length, affiliate);\n _mintSpecifyWithChecks(to, tokenIds);\n }\n\n function _mintSpecifyWithChecks(address to, uint256[] memory tokenIds)\n private\n {\n _checkPhase();\n if (_mintingType != MintingType.SPECIFY) revert InvalidMintingType();\n\n if (_soldTokens + (tokenIds.length) > _collectionSize) revert CollectionSoldOut();\n\n _mintSpecify(to, tokenIds);\n }\n\n function _mintSpecify(\n address to,\n uint256[] memory tokenIds,\n bool soulbound\n ) private {\n _mintSpecify(to, tokenIds);\n uint256 inputLength = tokenIds.length; \n if (soulbound) {\n for (uint256 i; i < inputLength; ) {\n _soulbound[tokenIds[i]] = true;\n unchecked {\n ++i;\n }\n }\n }\n }\n\n function _mintSpecify(address to, uint256[] memory tokenIds)\n internal\n virtual\n {\n\n uint256 inputLength = tokenIds.length;\n unchecked {\n _soldTokens += uint32(inputLength);\n }\n for (uint256 i; i < inputLength; ) {\n uint256 tokenId = tokenIds[i];\n\n if (tokenId == 0 || tokenId > _collectionSize) revert InvalidTokenId();\n _mint(to, tokenId);\n unchecked {\n ++i;\n }\n }\n }\n\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\n /// @param to The address of the NFTs receiver\n /// @param customURICIDHash The CID of the given token.\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound)\n external\n payable\n override\n {\n _requirePayment(_mintPrice, 1);\n _checkPhase();\n if (_mintingType != MintingType.CUSTOM_URI) revert InvalidMintingType();\n unchecked {\n if ((++_soldTokens) > _collectionSize) revert CollectionSoldOut();\n }\n _mint(to, _soldTokens);\n\n unchecked {\n if (soulbound) _soulbound[_soldTokens] = true;\n }\n _customURICIDHashes[_soldTokens] = customURICIDHash;\n }\n\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\n /// @param to The addresses of the NFTs receivers\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n function airdropSequential(address[] memory to, bool soulbound)\n external\n payable\n override\n onlyStrictOwner\n {\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\n if (_soldTokens + (to.length) > _collectionSize) revert CollectionSoldOut();\n\n uint256 toLength = to.length;\n for (uint256 i; i < toLength; ) {\n\n unchecked {\n _mint(to[i], ++_soldTokens); \n if (soulbound) _soulbound[_soldTokens] = true;\n ++i;\n }\n }\n }\n\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\n /// @param to The addresses of the NFTs receivers\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n function airdropRandom(address[] memory to, bool soulbound)\n external\n payable\n override\n onlyOwner\n {\n uint256 toLength = to.length;\n if (_mintingType != MintingType.RANDOM) revert InvalidMintingType();\n\n if ((_soldTokens + toLength) > _collectionSize) revert CollectionSoldOut();\n\n unchecked {\n _soldTokens += uint32(toLength);\n }\n\n bytes32 randomSeed = blockhash(block.number - 1);\n\n for (uint256 i; i < toLength; ) {\n uint256 newTokenId = _randomTokenId(randomSeed, i);\n _mint(to[i], newTokenId);\n if (soulbound) _soulbound[newTokenId] = true;\n unchecked {\n ++i;\n }\n }\n }\n\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\n /// @param to The addresses of the NFTs receivers\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n function airdropSpecify(\n address[] memory to,\n uint256[] memory tokenIds,\n bool soulbound\n ) external payable override onlyOwner {\n uint256 toLength = to.length;\n if (_mintingType != MintingType.SPECIFY) revert InvalidMintingType();\n\n if (_soldTokens + (tokenIds.length) > _collectionSize) revert CollectionSoldOut();\n if (toLength != tokenIds.length) revert InvalidInputSizesDontMatch();\n\n unchecked {\n _soldTokens += uint32(toLength);\n }\n\n for (uint256 i; i < toLength; ) {\n\n if (tokenIds[i] == 0 || tokenIds[i] > _collectionSize) revert InvalidTokenId();\n _mint(to[i], tokenIds[i]);\n if (soulbound) _soulbound[tokenIds[i]] = true;\n unchecked {\n ++i;\n }\n }\n }\n\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\n /// @param to The addresses of the NFTs receivers\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\n /// @param freeMinting True is minting is free\n /// @param customFee Zero is fee is different from `mintingPrice`.\n /// @param maxAmount Max Amount to be minted with the given `signature`.\n /// @param amount Amount to mint.\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n /// @param signature Valid `signature` for the presale/whitelist.\n function mintPresale(\n address to,\n uint256[] memory tokenIds,\n bool freeMinting,\n uint256 customFee,\n uint256 maxAmount,\n uint256 amount,\n bool soulbound,\n bytes calldata signature\n ) external payable override {\n if (amount == 0) revert InvalidAmount();\n\n _usedAmountSignature[signature] += amount;\n if (_usedAmountSignature[signature] > maxAmount) revert NotEnoughAmountToMint();\n\n if (_soldTokens + amount > _collectionSize) revert CollectionSoldOut();\n\n if (_currentPhase == SalePhase.CLOSED) revert PresaleNotOpen();\n\n address signer = ECDSAUpgradeable.recover(\n ECDSAUpgradeable.toEthSignedMessageHash(\n keccak256(\n abi.encodePacked(\n this.mintPresale.selector, \n address(this), \n block.chainid, \n to,\n freeMinting,\n customFee,\n maxAmount,\n soulbound\n )\n )\n ),\n signature\n );\n\n if (signer != N2M_PRESALE_SIGNER && signer != owner()) revert SignatureMismatch();\n\n if (freeMinting) {\n\n if (msg.value != 0) revert InvalidMintFeeForFreeMinting();\n } else {\n\n if (customFee == 0) customFee = _mintPrice;\n _requirePayment(customFee, amount);\n }\n\n if (_mintingType == MintingType.SPECIFY) {\n\n if (tokenIds.length != amount) revert InvalidInputSizesDontMatch();\n _mintSpecify(to, tokenIds, soulbound);\n } else if (_mintingType == MintingType.RANDOM) {\n bytes32 seed = keccak256(abi.encodePacked(signature));\n _soldTokens += uint32(amount);\n _mintRandom(to, amount, seed, soulbound);\n } else if (_mintingType == MintingType.SEQUENTIAL) {\n _mintSequential(to, amount, soulbound);\n } else {\n\n revert PresaleInvalidMintingType();\n }\n }\n\n /// @notice Returns the minting price of one NFT.\n /// @return Mint price for one NFT in native coin or ERC-20.\n function mintPrice() external view returns (uint256) {\n return _mintPrice;\n }\n\n /// @notice Returns the current total supply.\n /// @return Current total supply.\n function totalSupply() external view returns (uint256) {\n return _soldTokens;\n }\n\n /// @notice Max amount of NFTs to be hold per address.\n /// @return Max per address allowed.\n function maxPerAddress() external view override returns (uint16) {\n return _maxPerAddress;\n }\n\n /// @notice Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\n /// @param salePrice The sale price\n /// @return receiver the receiver of the royalties.\n /// @return royaltyAmount the amount of the royalties for the given input.\n function royaltyInfo(\n uint256, \n uint256 salePrice\n ) external view virtual returns (address receiver, uint256 royaltyAmount) {\n\n return (address(this), uint256((salePrice * _royaltyFee) / 100_00));\n }\n\n function _requirePaymentWithAffiliates(uint256 amount, address affiliate)\n internal\n {\n uint16 currentUserDiscount;\n uint16 currentAffiliatePercentage;\n if (_affiliatesInfo[affiliate].enabled) {\n currentUserDiscount = _affiliatesInfo[affiliate].userDiscount;\n currentAffiliatePercentage = _affiliatesInfo[affiliate].affiliatePercentage;\n } else {\n currentUserDiscount = _affiliatesInfo[address(0)].userDiscount;\n currentAffiliatePercentage = _affiliatesInfo[address(0)].affiliatePercentage;\n }\n\n uint256 discountMintPrice = ((100_00 - currentUserDiscount) * _mintPrice) / 100_00;\n _requirePayment(discountMintPrice, amount);\n if (affiliate != address(0)) {\n uint256 affiliateAmount = (currentAffiliatePercentage * discountMintPrice * amount) / 100_00;\n _pendingTotalAffiliatesBalance += affiliateAmount;\n _pendingAffiliateBalance[affiliate] += affiliateAmount;\n emit AffiliateSell(affiliate);\n }\n }\n\n function _checkPhase() private {\n\n if (_currentPhase != SalePhase.PUBLIC) {\n if (_currentPhase == SalePhase.DROP_DATE) {\n if (block.timestamp >= _dropDateTimestamp) {\n _currentPhase = SalePhase.PUBLIC;\n delete(_dropDateTimestamp);\n } else {\n revert WaitUntilDropDate();\n }\n } else if (_currentPhase == SalePhase.DROP_AND_END_DATE) {\n if (block.timestamp < _dropDateTimestamp) {\n revert WaitUntilDropDate();\n }\n if (block.timestamp >= _endDateTimestamp) {\n revert SaleFinished();\n }\n } else {\n\n revert PublicSaleNotOpen();\n }\n }\n }\n\n function _requirePayment(uint256 p_mintPrice, uint256 amount) internal {\n if (_isERC20Payment == false) {\n\n if (msg.value != (p_mintPrice * amount)) revert InvalidMintFee();\n } else {\n\n if (p_mintPrice == 0) return;\n uint256 totalAmount = p_mintPrice * amount;\n\n SafeERC20Upgradeable.safeTransferFrom(\n IERC20Upgradeable(_erc20PaymentAddress),\n msg.sender,\n address(this),\n totalAmount\n );\n }\n }\n\n modifier onlyAllowedOperator() {\n\n _isOperatorAllowed(msg.sender);\n _;\n }\n\n modifier onlyAllowedOperatorApproval(address operator) {\n _isOperatorAllowed(operator);\n _;\n } \n\n function _isOperatorAllowed(address operator) private {\n if (_operatorFilterStatus == OperatorFilterStatus.ENABLED_EXISTS) {\n\n operatorFilterRegistry.isOperatorAllowed(address(this), operator);\n\n } else if (_operatorFilterStatus == OperatorFilterStatus.ENABLED_NOT_INITIALIZED) {\n\n if (address(operatorFilterRegistry).code.length > 0) {\n try operatorFilterRegistry.registerAndSubscribe(address(this), DEFAULT_SUBSCRIPTION) {\n\n _operatorFilterStatus = OperatorFilterStatus.ENABLED_EXISTS;\n operatorFilterRegistry.isOperatorAllowed(address(this), operator);\n } catch {\n }\n }\n } \n\n }\n\n fallback() external payable\n {\n address libraryAddress = LIBRARY_ADDRESS;\n\n assembly {\n\n calldatacopy(0, 0, calldatasize())\n\n let result := delegatecall(\n gas(),\n libraryAddress,\n 0,\n calldatasize(),\n 0,\n 0\n )\n\n returndatacopy(0, 0, returndatasize())\n\n switch result\n\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n receive() external payable {} \n}\n"},"contracts/N2MVersion.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"@nfts2me/contracts/important/README.sol\";\n\n/// @title NFTs2Me.com Smart Contracts Version\n/// @author The NFTs2Me Team\n/// @notice Read our terms of service\n/// @custom:security-contact security@nfts2me.com\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\n/// @custom:website https://nfts2me.com/\nabstract contract N2MVersion is Readme {\n /// @notice Current version of the nfts2me.com contracts.\n function n2mVersion() virtual external pure returns (uint256) {\n return 1000;\n }\n\n}\n"},"contracts/ownable/NFTOwnableUpgradeable.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\";\n\n/// @title NFTs2Me.com Smart Contracts\n/// @author The NFTs2Me Team\n/// @notice Read our terms of service\n/// @custom:security-contact security@nfts2me.com\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\n/// @custom:website https://nfts2me.com/\nabstract contract NFTOwnableUpgradeable is Initializable, ContextUpgradeable {\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n modifier onlyStrictOwner() {\n _checkStrictOwner();\n _;\n }\n\n modifier onlyOwnerOrN2M() {\n _checkOwnerOrN2M();\n _;\n }\n\n modifier onlyN2M() {\n _checkN2M();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address);\n function _strictOwner() internal view virtual returns (address);\n function _getN2MFeeAddress() internal view virtual returns (address);\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == msg.sender, \"Ownable: caller is not the owner\");\n }\n\n function _checkStrictOwner() internal view virtual {\n require(_strictOwner() == msg.sender, \"Ownable: caller is not the owner\");\n }\n\n function _checkOwnerOrN2M() internal view virtual {\n require(owner() == msg.sender || _getN2MFeeAddress() == msg.sender, \"Ownable: caller is not the owner\");\n }\n\n function _checkN2M() internal view virtual {\n require(_getN2MFeeAddress() == msg.sender, \"Ownable: caller is not the owner\");\n }\n\n}"},"contracts/TextUtils.sol":{"content":"/** ---------------------------------------------------------------------------- //\n * //\n * .:::. //\n * .:::::::. //\n * ::::::::. //\n * .:::::::::. //\n * ..:::. .. //\n * .::::. ::::.. //\n * ..:::.. ::::::::. //\n * .::::. :::. ..:::. //\n * ..:::.. :::. .:::. //\n * .::::. :::. .:::.. //\n * .:::.. .. :::. .::::. //\n * .::::. ..:::=- :::: ..:::. //\n * :::. .:::::::===: ::::::. .:::: //\n * .::. .:::::::::::=====. ::::::::::. .::. //\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\n * .::. .:::::::::: .=====-::::::::::.. ::. //\n * :::.. ..:::::: :===-::::::.. .:::. //\n * .:::.. .::: -=-:::. .::::. //\n * .::::. .::: .. .::::. //\n * .::::. .::: ..:::. //\n * .:::. .::: .::::. //\n * .:::.. .::: ..:::.. //\n * .::::.::: .::::. //\n * ..:::: ..:::.. //\n * .: .::::. //\n * :::::.::::. //\n * ::::::::. //\n * :::::::. //\n * .::::. //\n * //\n * //\n * Smart contract generated by https://nfts2me.com //\n * //\n * NFTs2Me. Make an NFT Collection. //\n * With ZERO Coding Skills. //\n * //\n * NFTs2Me is not associated or affiliated with this project. //\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\n * ----------------------------------------------------------------------------- */\n\n/// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.18;\nbytes constant BASE64_TABLE = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n/// @title NFTs2Me.com TextUtils Library\n/// @author The NFTs2Me Team\n/// @notice Read our terms of service\n/// @custom:security-contact security@nfts2me.com\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\n/// @custom:website https://nfts2me.com/\nlibrary TextUtils {\n\n /// @notice Encodes some bytes to the base64 representation\n function base64Encode(bytes memory data)\n internal\n pure\n returns (string memory)\n {\n uint256 len = data.length;\n if (len == 0) return \"\";\n\n uint256 encodedLen = 4 * ((len + 2) / 3);\n\n bytes memory result = new bytes(encodedLen + 32);\n\n bytes memory table = BASE64_TABLE;\n\n assembly {\n let tablePtr := add(table, 1)\n let resultPtr := add(result, 32)\n\n for {\n let i := 0\n } lt(i, len) {\n\n } {\n i := add(i, 3)\n let input := and(mload(add(data, i)), 0xffffff)\n\n let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))\n out := shl(8, out)\n out := add(\n out,\n and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF)\n )\n out := shl(8, out)\n out := add(\n out,\n and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF)\n )\n out := shl(8, out)\n out := add(\n out,\n and(mload(add(tablePtr, and(input, 0x3F))), 0xFF)\n )\n out := shl(224, out)\n\n mstore(resultPtr, out)\n\n resultPtr := add(resultPtr, 4)\n }\n\n switch mod(len, 3)\n case 1 {\n mstore(sub(resultPtr, 2), shl(240, 0x3d3d))\n }\n case 2 {\n mstore(sub(resultPtr, 1), shl(248, 0x3d))\n }\n\n mstore(result, encodedLen)\n }\n\n return string(result);\n }\n\n function escapeQuotesAndBackslash(string memory symbol)\n internal\n pure\n returns (string memory)\n {\n bytes memory symbolBytes = bytes(symbol);\n uint8 quotesCount;\n for (uint8 i; i < symbolBytes.length; ) {\n if (symbolBytes[i] == '\"' || symbolBytes[i] == \"\\\\\") {\n unchecked {\n ++quotesCount;\n }\n }\n unchecked {\n ++i;\n }\n }\n if (quotesCount > 0) {\n bytes memory escapedBytes = new bytes(\n symbolBytes.length + (quotesCount)\n );\n uint256 index;\n for (uint8 i; i < symbolBytes.length; ) {\n if (symbolBytes[i] == '\"' || symbolBytes[i] == \"\\\\\") {\n escapedBytes[index++] = \"\\\\\";\n }\n escapedBytes[index++] = symbolBytes[i];\n unchecked {\n ++i;\n }\n }\n return string(escapedBytes);\n }\n return symbol;\n } \n}"}},"settings":{"optimizer":{"enabled":true,"runs":17766},"viaIR":true,"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","storageLayout","devdoc","userdoc","evm.gasEstimates","storageLayout"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@nfts2me/contracts/important/README.sol":{"ast":{"absolutePath":"@nfts2me/contracts/important/README.sol","exportedSymbols":{"Readme":[8]},"id":9,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"2981:24:0"},{"abstract":false,"baseContracts":[],"canonicalName":"Readme","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"3007:271:0","text":"@title NFTs2Me.com Smart Contracts README\n @author The NFTs2Me Team\n @notice Read our terms of service\n @custom:security-contact security@nfts2me.com\n @custom:terms-of-service https://nfts2me.com/terms-of-service/\n @custom:website https://nfts2me.com/"},"fullyImplemented":false,"id":8,"linearizedBaseContracts":[8],"name":"Readme","nameLocation":"3288:6:0","nodeType":"ContractDefinition","nodes":[{"functionSelector":"cb93c48f","id":7,"implemented":false,"kind":"function","modifiers":[],"name":"n2mVersion","nameLocation":"3310:10:0","nodeType":"FunctionDefinition","parameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"3320:2:0"},"returnParameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7,"src":"3346:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4,"name":"uint256","nodeType":"ElementaryTypeName","src":"3346:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3345:9:0"},"scope":8,"src":"3301:54:0","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":9,"src":"3278:80:0","usedErrors":[]}],"src":"2981:378:0"},"id":0},"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol":{"ast":{"absolutePath":"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol","exportedSymbols":{"IN2MBeaconFactory":[21]},"id":22,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":10,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"4913:24:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IN2MBeaconFactory","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":21,"linearizedBaseContracts":[21],"name":"IN2MBeaconFactory","nameLocation":"4949:17:1","nodeType":"ContractDefinition","nodes":[{"functionSelector":"84663e53","id":15,"implemented":false,"kind":"function","modifiers":[],"name":"getERC721Implementation","nameLocation":"4982:23:1","nodeType":"FunctionDefinition","parameters":{"id":11,"nodeType":"ParameterList","parameters":[],"src":"5005:2:1"},"returnParameters":{"id":14,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15,"src":"5031:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12,"name":"address","nodeType":"ElementaryTypeName","src":"5031:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5030:9:1"},"scope":21,"src":"4973:67:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9ccaabf6","id":20,"implemented":false,"kind":"function","modifiers":[],"name":"getERC1155Implementation","nameLocation":"5054:24:1","nodeType":"FunctionDefinition","parameters":{"id":16,"nodeType":"ParameterList","parameters":[],"src":"5078:2:1"},"returnParameters":{"id":19,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20,"src":"5104:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17,"name":"address","nodeType":"ElementaryTypeName","src":"5104:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5103:9:1"},"scope":21,"src":"5045:68:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":22,"src":"4939:176:1","usedErrors":[]}],"src":"4913:203:1"},"id":1},"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol":{"ast":{"absolutePath":"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol","exportedSymbols":{"IN2MCrossFactory":[43]},"id":44,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":23,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"4913:24:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IN2MCrossFactory","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":43,"linearizedBaseContracts":[43],"name":"IN2MCrossFactory","nameLocation":"4949:16:2","nodeType":"ContractDefinition","nodes":[{"functionSelector":"3765cb6a","id":28,"implemented":false,"kind":"function","modifiers":[],"name":"getN2MTreasuryAddress","nameLocation":"4981:21:2","nodeType":"FunctionDefinition","parameters":{"id":24,"nodeType":"ParameterList","parameters":[],"src":"5002:2:2"},"returnParameters":{"id":27,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28,"src":"5028:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25,"name":"address","nodeType":"ElementaryTypeName","src":"5028:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5027:9:2"},"scope":43,"src":"4972:65:2","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"6352211e","id":35,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"5051:7:2","nodeType":"FunctionDefinition","parameters":{"id":31,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30,"mutability":"mutable","name":"tokenId","nameLocation":"5067:7:2","nodeType":"VariableDeclaration","scope":35,"src":"5059:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29,"name":"uint256","nodeType":"ElementaryTypeName","src":"5059:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5058:17:2"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":35,"src":"5099:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"5099:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5098:9:2"},"scope":43,"src":"5042:66:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"713562fe","id":42,"implemented":false,"kind":"function","modifiers":[],"name":"strictOwnerOf","nameLocation":"5122:13:2","nodeType":"FunctionDefinition","parameters":{"id":38,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37,"mutability":"mutable","name":"tokenId","nameLocation":"5144:7:2","nodeType":"VariableDeclaration","scope":42,"src":"5136:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36,"name":"uint256","nodeType":"ElementaryTypeName","src":"5136:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5135:17:2"},"returnParameters":{"id":41,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42,"src":"5176:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39,"name":"address","nodeType":"ElementaryTypeName","src":"5176:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5175:9:2"},"scope":43,"src":"5113:72:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":44,"src":"4939:248:2","usedErrors":[]}],"src":"4913:275:2"},"id":2},"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol":{"ast":{"absolutePath":"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol","exportedSymbols":{"IERC165Upgradeable":[7305],"IERC2981Upgradeable":[1297],"IN2M_ERCBase":[258],"IN2M_ERCStorage":[424],"Readme":[8]},"id":259,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":45,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"4913:24:3"},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol","id":46,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":259,"sourceUnit":1298,"src":"4939:80:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol","file":"./IN2M_ERCStorage.sol","id":47,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":259,"sourceUnit":425,"src":"5020:31:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":48,"name":"IERC2981Upgradeable","nameLocations":["5079:19:3"],"nodeType":"IdentifierPath","referencedDeclaration":1297,"src":"5079:19:3"},"id":49,"nodeType":"InheritanceSpecifier","src":"5079:19:3"},{"baseName":{"id":50,"name":"IN2M_ERCStorage","nameLocations":["5100:15:3"],"nodeType":"IdentifierPath","referencedDeclaration":424,"src":"5100:15:3"},"id":51,"nodeType":"InheritanceSpecifier","src":"5100:15:3"}],"canonicalName":"IN2M_ERCBase","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":258,"linearizedBaseContracts":[258,424,8,1297,7305],"name":"IN2M_ERCBase","nameLocation":"5063:12:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":52,"nodeType":"StructuredDocumentation","src":"5122:75:3","text":"@notice To be called to create the collection. Can only be called once."},"functionSelector":"5066e5c2","id":80,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"5211:10:3","nodeType":"FunctionDefinition","parameters":{"id":78,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54,"mutability":"mutable","name":"tokenName","nameLocation":"5250:9:3","nodeType":"VariableDeclaration","scope":80,"src":"5236:23:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":53,"name":"string","nodeType":"ElementaryTypeName","src":"5236:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":56,"mutability":"mutable","name":"tokenSymbol","nameLocation":"5283:11:3","nodeType":"VariableDeclaration","scope":80,"src":"5269:25:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":55,"name":"string","nodeType":"ElementaryTypeName","src":"5269:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":58,"mutability":"mutable","name":"iMintPrice","nameLocation":"5312:10:3","nodeType":"VariableDeclaration","scope":80,"src":"5304:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":57,"name":"uint256","nodeType":"ElementaryTypeName","src":"5304:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60,"mutability":"mutable","name":"baseURICIDHash","nameLocation":"5340:14:3","nodeType":"VariableDeclaration","scope":80,"src":"5332:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":59,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5332:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":62,"mutability":"mutable","name":"placeholderImageCIDHash","nameLocation":"5372:23:3","nodeType":"VariableDeclaration","scope":80,"src":"5364:31:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":61,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5364:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":66,"mutability":"mutable","name":"revenueAddresses","nameLocation":"5431:16:3","nodeType":"VariableDeclaration","scope":80,"src":"5405:42:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress[]"},"typeName":{"baseType":{"id":64,"nodeType":"UserDefinedTypeName","pathNode":{"id":63,"name":"RevenueAddress","nameLocations":["5405:14:3"],"nodeType":"IdentifierPath","referencedDeclaration":394,"src":"5405:14:3"},"referencedDeclaration":394,"src":"5405:14:3","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueAddress_$394_storage_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress"}},"id":65,"nodeType":"ArrayTypeName","src":"5405:16:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_storage_$dyn_storage_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress[]"}},"visibility":"internal"},{"constant":false,"id":68,"mutability":"mutable","name":"iErc20PaymentAddress","nameLocation":"5465:20:3","nodeType":"VariableDeclaration","scope":80,"src":"5457:28:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67,"name":"address","nodeType":"ElementaryTypeName","src":"5457:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":70,"mutability":"mutable","name":"iTotalSupply","nameLocation":"5502:12:3","nodeType":"VariableDeclaration","scope":80,"src":"5495:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":69,"name":"uint32","nodeType":"ElementaryTypeName","src":"5495:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":72,"mutability":"mutable","name":"iRoyaltyFee","nameLocation":"5531:11:3","nodeType":"VariableDeclaration","scope":80,"src":"5524:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":71,"name":"uint16","nodeType":"ElementaryTypeName","src":"5524:6:3","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":74,"mutability":"mutable","name":"soulboundCollection","nameLocation":"5557:19:3","nodeType":"VariableDeclaration","scope":80,"src":"5552:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":73,"name":"bool","nodeType":"ElementaryTypeName","src":"5552:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":77,"mutability":"mutable","name":"iMintingType","nameLocation":"5598:12:3","nodeType":"VariableDeclaration","scope":80,"src":"5586:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"typeName":{"id":76,"nodeType":"UserDefinedTypeName","pathNode":{"id":75,"name":"MintingType","nameLocations":["5586:11:3"],"nodeType":"IdentifierPath","referencedDeclaration":412,"src":"5586:11:3"},"referencedDeclaration":412,"src":"5586:11:3","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"visibility":"internal"}],"src":"5226:390:3"},"returnParameters":{"id":79,"nodeType":"ParameterList","parameters":[],"src":"5633:0:3"},"scope":258,"src":"5202:432:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":81,"nodeType":"StructuredDocumentation","src":"5640:72:3","text":"@notice A descriptive name for a collection of NFTs in this contract"},"functionSelector":"06fdde03","id":86,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"5726:4:3","nodeType":"FunctionDefinition","parameters":{"id":82,"nodeType":"ParameterList","parameters":[],"src":"5730:2:3"},"returnParameters":{"id":85,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86,"src":"5756:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":83,"name":"string","nodeType":"ElementaryTypeName","src":"5756:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5755:15:3"},"scope":258,"src":"5717:54:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":87,"nodeType":"StructuredDocumentation","src":"5777:95:3","text":"@notice An abbreviated name for NFTs in this contract\n @return the collection symbol"},"functionSelector":"95d89b41","id":92,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"5886:6:3","nodeType":"FunctionDefinition","parameters":{"id":88,"nodeType":"ParameterList","parameters":[],"src":"5892:2:3"},"returnParameters":{"id":91,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":92,"src":"5918:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":89,"name":"string","nodeType":"ElementaryTypeName","src":"5918:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5917:15:3"},"scope":258,"src":"5877:56:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":93,"nodeType":"StructuredDocumentation","src":"5939:262:3","text":"@notice A distinct Uniform Resource Identifier (URI) for a given asset.\n @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\n 3986. The URI may point to a JSON file that conforms to the \"ERC721\n Metadata JSON Schema\"."},"functionSelector":"c87b56dd","id":100,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"6215:8:3","nodeType":"FunctionDefinition","parameters":{"id":96,"nodeType":"ParameterList","parameters":[{"constant":false,"id":95,"mutability":"mutable","name":"tokenId","nameLocation":"6232:7:3","nodeType":"VariableDeclaration","scope":100,"src":"6224:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":94,"name":"uint256","nodeType":"ElementaryTypeName","src":"6224:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6223:17:3"},"returnParameters":{"id":99,"nodeType":"ParameterList","parameters":[{"constant":false,"id":98,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":100,"src":"6264:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":97,"name":"string","nodeType":"ElementaryTypeName","src":"6264:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6263:15:3"},"scope":258,"src":"6206:73:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":101,"nodeType":"StructuredDocumentation","src":"6285:184:3","text":"@notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"functionSelector":"1249c58b","id":104,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"6483:4:3","nodeType":"FunctionDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[],"src":"6487:2:3"},"returnParameters":{"id":103,"nodeType":"ParameterList","parameters":[],"src":"6506:0:3"},"scope":258,"src":"6474:33:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":105,"nodeType":"StructuredDocumentation","src":"6513:239:3","text":"@notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param amount The number of NFTs to mint"},"functionSelector":"a0712d68","id":110,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"6766:4:3","nodeType":"FunctionDefinition","parameters":{"id":108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":107,"mutability":"mutable","name":"amount","nameLocation":"6779:6:3","nodeType":"VariableDeclaration","scope":110,"src":"6771:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":106,"name":"uint256","nodeType":"ElementaryTypeName","src":"6771:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6770:16:3"},"returnParameters":{"id":109,"nodeType":"ParameterList","parameters":[],"src":"6803:0:3"},"scope":258,"src":"6757:47:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":111,"nodeType":"StructuredDocumentation","src":"6810:311:3","text":"@notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param amount The number of NFTs to mint\n @param affiliate The affiliate address"},"functionSelector":"94bf804d","id":118,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"7135:4:3","nodeType":"FunctionDefinition","parameters":{"id":116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113,"mutability":"mutable","name":"amount","nameLocation":"7148:6:3","nodeType":"VariableDeclaration","scope":118,"src":"7140:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":112,"name":"uint256","nodeType":"ElementaryTypeName","src":"7140:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":115,"mutability":"mutable","name":"affiliate","nameLocation":"7164:9:3","nodeType":"VariableDeclaration","scope":118,"src":"7156:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":114,"name":"address","nodeType":"ElementaryTypeName","src":"7156:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7139:35:3"},"returnParameters":{"id":117,"nodeType":"ParameterList","parameters":[],"src":"7191:0:3"},"scope":258,"src":"7126:66:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"7198:283:3","text":"@notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param to The address of the NFTs receiver\n @param amount The number of NFTs to mint "},"functionSelector":"449a52f8","id":126,"implemented":false,"kind":"function","modifiers":[],"name":"mintTo","nameLocation":"7495:6:3","nodeType":"FunctionDefinition","parameters":{"id":124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"to","nameLocation":"7510:2:3","nodeType":"VariableDeclaration","scope":126,"src":"7502:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"7502:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":123,"mutability":"mutable","name":"amount","nameLocation":"7522:6:3","nodeType":"VariableDeclaration","scope":126,"src":"7514:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":122,"name":"uint256","nodeType":"ElementaryTypeName","src":"7514:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7501:28:3"},"returnParameters":{"id":125,"nodeType":"ParameterList","parameters":[],"src":"7546:0:3"},"scope":258,"src":"7486:61:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":127,"nodeType":"StructuredDocumentation","src":"7553:355:3","text":"@notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param to The address of the NFTs receiver\n @param amount The number of NFTs to mint \n @param affiliate The affiliate address"},"functionSelector":"438b1b4b","id":136,"implemented":false,"kind":"function","modifiers":[],"name":"mintTo","nameLocation":"7922:6:3","nodeType":"FunctionDefinition","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":129,"mutability":"mutable","name":"to","nameLocation":"7937:2:3","nodeType":"VariableDeclaration","scope":136,"src":"7929:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":128,"name":"address","nodeType":"ElementaryTypeName","src":"7929:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":131,"mutability":"mutable","name":"amount","nameLocation":"7949:6:3","nodeType":"VariableDeclaration","scope":136,"src":"7941:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"7941:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"affiliate","nameLocation":"7965:9:3","nodeType":"VariableDeclaration","scope":136,"src":"7957:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":132,"name":"address","nodeType":"ElementaryTypeName","src":"7957:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7928:47:3"},"returnParameters":{"id":135,"nodeType":"ParameterList","parameters":[],"src":"7992:0:3"},"scope":258,"src":"7913:80:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":137,"nodeType":"StructuredDocumentation","src":"7999:413:3","text":"@notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\n @param to The address of the NFTs receiver\n @param amount The number of NFTs to mint "},"functionSelector":"1d7df191","id":144,"implemented":false,"kind":"function","modifiers":[],"name":"mintRandomTo","nameLocation":"8426:12:3","nodeType":"FunctionDefinition","parameters":{"id":142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":139,"mutability":"mutable","name":"to","nameLocation":"8447:2:3","nodeType":"VariableDeclaration","scope":144,"src":"8439:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"8439:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":141,"mutability":"mutable","name":"amount","nameLocation":"8459:6:3","nodeType":"VariableDeclaration","scope":144,"src":"8451:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":140,"name":"uint256","nodeType":"ElementaryTypeName","src":"8451:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8438:28:3"},"returnParameters":{"id":143,"nodeType":"ParameterList","parameters":[],"src":"8483:0:3"},"scope":258,"src":"8417:67:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":145,"nodeType":"StructuredDocumentation","src":"8494:485:3","text":"@notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\n @param to The address of the NFTs receiver\n @param amount The number of NFTs to mint \n @param affiliate The affiliate address"},"functionSelector":"fefa5d72","id":154,"implemented":false,"kind":"function","modifiers":[],"name":"mintRandomTo","nameLocation":"8993:12:3","nodeType":"FunctionDefinition","parameters":{"id":152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":147,"mutability":"mutable","name":"to","nameLocation":"9014:2:3","nodeType":"VariableDeclaration","scope":154,"src":"9006:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":146,"name":"address","nodeType":"ElementaryTypeName","src":"9006:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":149,"mutability":"mutable","name":"amount","nameLocation":"9026:6:3","nodeType":"VariableDeclaration","scope":154,"src":"9018:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":148,"name":"uint256","nodeType":"ElementaryTypeName","src":"9018:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":151,"mutability":"mutable","name":"affiliate","nameLocation":"9042:9:3","nodeType":"VariableDeclaration","scope":154,"src":"9034:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":150,"name":"address","nodeType":"ElementaryTypeName","src":"9034:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9005:47:3"},"returnParameters":{"id":153,"nodeType":"ParameterList","parameters":[],"src":"9069:0:3"},"scope":258,"src":"8984:86:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":155,"nodeType":"StructuredDocumentation","src":"9076:115:3","text":"@notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs."},"functionSelector":"1ff4cc7d","id":158,"implemented":false,"kind":"function","modifiers":[],"name":"redeemRandom","nameLocation":"9205:12:3","nodeType":"FunctionDefinition","parameters":{"id":156,"nodeType":"ParameterList","parameters":[],"src":"9217:2:3"},"returnParameters":{"id":157,"nodeType":"ParameterList","parameters":[],"src":"9236:0:3"},"scope":258,"src":"9196:41:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":159,"nodeType":"StructuredDocumentation","src":"9243:337:3","text":"@notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param to The address of the NFTs receiver\n @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert."},"functionSelector":"4402d254","id":167,"implemented":false,"kind":"function","modifiers":[],"name":"mintSpecifyTo","nameLocation":"9594:13:3","nodeType":"FunctionDefinition","parameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161,"mutability":"mutable","name":"to","nameLocation":"9616:2:3","nodeType":"VariableDeclaration","scope":167,"src":"9608:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":160,"name":"address","nodeType":"ElementaryTypeName","src":"9608:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":164,"mutability":"mutable","name":"tokenIds","nameLocation":"9637:8:3","nodeType":"VariableDeclaration","scope":167,"src":"9620:25:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":162,"name":"uint256","nodeType":"ElementaryTypeName","src":"9620:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":163,"nodeType":"ArrayTypeName","src":"9620:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9607:39:3"},"returnParameters":{"id":166,"nodeType":"ParameterList","parameters":[],"src":"9663:0:3"},"scope":258,"src":"9585:79:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":168,"nodeType":"StructuredDocumentation","src":"9671:409:3","text":"@notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param to The address of the NFTs receiver\n @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n @param affiliate The affiliate address"},"functionSelector":"4a50aa85","id":178,"implemented":false,"kind":"function","modifiers":[],"name":"mintSpecifyTo","nameLocation":"10094:13:3","nodeType":"FunctionDefinition","parameters":{"id":176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":170,"mutability":"mutable","name":"to","nameLocation":"10116:2:3","nodeType":"VariableDeclaration","scope":178,"src":"10108:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":169,"name":"address","nodeType":"ElementaryTypeName","src":"10108:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":173,"mutability":"mutable","name":"tokenIds","nameLocation":"10137:8:3","nodeType":"VariableDeclaration","scope":178,"src":"10120:25:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":171,"name":"uint256","nodeType":"ElementaryTypeName","src":"10120:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":172,"nodeType":"ArrayTypeName","src":"10120:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":175,"mutability":"mutable","name":"affiliate","nameLocation":"10155:9:3","nodeType":"VariableDeclaration","scope":178,"src":"10147:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":174,"name":"address","nodeType":"ElementaryTypeName","src":"10147:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10107:58:3"},"returnParameters":{"id":177,"nodeType":"ParameterList","parameters":[],"src":"10182:0:3"},"scope":258,"src":"10085:98:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":179,"nodeType":"StructuredDocumentation","src":"10190:298:3","text":"@notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\n @param to The address of the NFTs receiver\n @param customURICIDHash The CID of the given token.\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred."},"functionSelector":"6ad54240","id":188,"implemented":false,"kind":"function","modifiers":[],"name":"mintCustomURITo","nameLocation":"10502:15:3","nodeType":"FunctionDefinition","parameters":{"id":186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":181,"mutability":"mutable","name":"to","nameLocation":"10526:2:3","nodeType":"VariableDeclaration","scope":188,"src":"10518:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":180,"name":"address","nodeType":"ElementaryTypeName","src":"10518:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":183,"mutability":"mutable","name":"customURICIDHash","nameLocation":"10538:16:3","nodeType":"VariableDeclaration","scope":188,"src":"10530:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":182,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10530:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":185,"mutability":"mutable","name":"soulbound","nameLocation":"10561:9:3","nodeType":"VariableDeclaration","scope":188,"src":"10556:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":184,"name":"bool","nodeType":"ElementaryTypeName","src":"10556:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10517:54:3"},"returnParameters":{"id":187,"nodeType":"ParameterList","parameters":[],"src":"10588:0:3"},"scope":258,"src":"10493:96:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":189,"nodeType":"StructuredDocumentation","src":"10595:300:3","text":"@notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\n @param to The addresses of the NFTs receivers\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred."},"functionSelector":"68fdda33","id":197,"implemented":false,"kind":"function","modifiers":[],"name":"airdropSequential","nameLocation":"10909:17:3","nodeType":"FunctionDefinition","parameters":{"id":195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"to","nameLocation":"10944:2:3","nodeType":"VariableDeclaration","scope":197,"src":"10927:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":190,"name":"address","nodeType":"ElementaryTypeName","src":"10927:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":191,"nodeType":"ArrayTypeName","src":"10927:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":194,"mutability":"mutable","name":"soulbound","nameLocation":"10953:9:3","nodeType":"VariableDeclaration","scope":197,"src":"10948:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":193,"name":"bool","nodeType":"ElementaryTypeName","src":"10948:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10926:37:3"},"returnParameters":{"id":196,"nodeType":"ParameterList","parameters":[],"src":"10980:0:3"},"scope":258,"src":"10900:81:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":198,"nodeType":"StructuredDocumentation","src":"10987:317:3","text":"@notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\n @param to The addresses of the NFTs receivers\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred."},"functionSelector":"be172edf","id":206,"implemented":false,"kind":"function","modifiers":[],"name":"airdropRandom","nameLocation":"11318:13:3","nodeType":"FunctionDefinition","parameters":{"id":204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":201,"mutability":"mutable","name":"to","nameLocation":"11349:2:3","nodeType":"VariableDeclaration","scope":206,"src":"11332:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":199,"name":"address","nodeType":"ElementaryTypeName","src":"11332:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":200,"nodeType":"ArrayTypeName","src":"11332:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":203,"mutability":"mutable","name":"soulbound","nameLocation":"11358:9:3","nodeType":"VariableDeclaration","scope":206,"src":"11353:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":202,"name":"bool","nodeType":"ElementaryTypeName","src":"11353:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11331:37:3"},"returnParameters":{"id":205,"nodeType":"ParameterList","parameters":[],"src":"11385:0:3"},"scope":258,"src":"11309:77:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":207,"nodeType":"StructuredDocumentation","src":"11392:431:3","text":"@notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\n @param to The addresses of the NFTs receivers\n @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred."},"functionSelector":"71e6775f","id":218,"implemented":false,"kind":"function","modifiers":[],"name":"airdropSpecify","nameLocation":"11837:14:3","nodeType":"FunctionDefinition","parameters":{"id":216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":210,"mutability":"mutable","name":"to","nameLocation":"11869:2:3","nodeType":"VariableDeclaration","scope":218,"src":"11852:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":208,"name":"address","nodeType":"ElementaryTypeName","src":"11852:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":209,"nodeType":"ArrayTypeName","src":"11852:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":213,"mutability":"mutable","name":"tokenIds","nameLocation":"11890:8:3","nodeType":"VariableDeclaration","scope":218,"src":"11873:25:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":211,"name":"uint256","nodeType":"ElementaryTypeName","src":"11873:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":212,"nodeType":"ArrayTypeName","src":"11873:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":215,"mutability":"mutable","name":"soulbound","nameLocation":"11905:9:3","nodeType":"VariableDeclaration","scope":218,"src":"11900:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":214,"name":"bool","nodeType":"ElementaryTypeName","src":"11900:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11851:64:3"},"returnParameters":{"id":217,"nodeType":"ParameterList","parameters":[],"src":"11932:0:3"},"scope":258,"src":"11828:105:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"11939:803:3","text":"@notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\n @param to The addresses of the NFTs receivers\n @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\n @param freeMinting True is minting is free\n @param customFee Zero is fee is different from `mintingPrice`.\n @param maxAmount Max Amount to be minted with the given `signature`.\n @param amount Amount to mint.\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n @param signature Valid `signature` for the presale/whitelist."},"functionSelector":"9d13a5ba","id":239,"implemented":false,"kind":"function","modifiers":[],"name":"mintPresale","nameLocation":"12756:11:3","nodeType":"FunctionDefinition","parameters":{"id":237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"to","nameLocation":"12786:2:3","nodeType":"VariableDeclaration","scope":239,"src":"12778:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":220,"name":"address","nodeType":"ElementaryTypeName","src":"12778:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":224,"mutability":"mutable","name":"tokenIds","nameLocation":"12816:8:3","nodeType":"VariableDeclaration","scope":239,"src":"12799:25:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":222,"name":"uint256","nodeType":"ElementaryTypeName","src":"12799:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":223,"nodeType":"ArrayTypeName","src":"12799:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":226,"mutability":"mutable","name":"freeMinting","nameLocation":"12839:11:3","nodeType":"VariableDeclaration","scope":239,"src":"12834:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":225,"name":"bool","nodeType":"ElementaryTypeName","src":"12834:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":228,"mutability":"mutable","name":"customFee","nameLocation":"12869:9:3","nodeType":"VariableDeclaration","scope":239,"src":"12861:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":227,"name":"uint256","nodeType":"ElementaryTypeName","src":"12861:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":230,"mutability":"mutable","name":"maxAmount","nameLocation":"12897:9:3","nodeType":"VariableDeclaration","scope":239,"src":"12889:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":229,"name":"uint256","nodeType":"ElementaryTypeName","src":"12889:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":232,"mutability":"mutable","name":"amount","nameLocation":"12924:6:3","nodeType":"VariableDeclaration","scope":239,"src":"12916:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":231,"name":"uint256","nodeType":"ElementaryTypeName","src":"12916:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":234,"mutability":"mutable","name":"soulbound","nameLocation":"12946:9:3","nodeType":"VariableDeclaration","scope":239,"src":"12941:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":233,"name":"bool","nodeType":"ElementaryTypeName","src":"12941:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":236,"mutability":"mutable","name":"signature","nameLocation":"12980:9:3","nodeType":"VariableDeclaration","scope":239,"src":"12965:24:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":235,"name":"bytes","nodeType":"ElementaryTypeName","src":"12965:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12768:222:3"},"returnParameters":{"id":238,"nodeType":"ParameterList","parameters":[],"src":"13007:0:3"},"scope":258,"src":"12747:261:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":240,"nodeType":"StructuredDocumentation","src":"13014:114:3","text":"@notice Returns the minting price of one NFT.\n @return Mint price for one NFT in native coin or ERC-20."},"functionSelector":"6817c76c","id":245,"implemented":false,"kind":"function","modifiers":[],"name":"mintPrice","nameLocation":"13142:9:3","nodeType":"FunctionDefinition","parameters":{"id":241,"nodeType":"ParameterList","parameters":[],"src":"13151:2:3"},"returnParameters":{"id":244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":245,"src":"13177:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":242,"name":"uint256","nodeType":"ElementaryTypeName","src":"13177:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13176:9:3"},"scope":258,"src":"13133:53:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":246,"nodeType":"StructuredDocumentation","src":"13192:83:3","text":"@notice Returns the current total supply.\n @return Current total supply."},"functionSelector":"18160ddd","id":251,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"13289:11:3","nodeType":"FunctionDefinition","parameters":{"id":247,"nodeType":"ParameterList","parameters":[],"src":"13300:2:3"},"returnParameters":{"id":250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":249,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":251,"src":"13326:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":248,"name":"uint256","nodeType":"ElementaryTypeName","src":"13326:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13325:9:3"},"scope":258,"src":"13280:55:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":252,"nodeType":"StructuredDocumentation","src":"13341:95:3","text":"@notice Max amount of NFTs to be hold per address.\n @return Max per address allowed."},"functionSelector":"639814e0","id":257,"implemented":false,"kind":"function","modifiers":[],"name":"maxPerAddress","nameLocation":"13450:13:3","nodeType":"FunctionDefinition","parameters":{"id":253,"nodeType":"ParameterList","parameters":[],"src":"13463:2:3"},"returnParameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":257,"src":"13489:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":254,"name":"uint16","nodeType":"ElementaryTypeName","src":"13489:6:3","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"13488:8:3"},"scope":258,"src":"13441:56:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":259,"src":"5053:8447:3","usedErrors":[271,274,277,280,283,286,289,292,295,298,301,304,307,310,313,316,319,322,325,328,331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376,379,384]}],"src":"4913:8589:3"},"id":3},"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol":{"ast":{"absolutePath":"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol","exportedSymbols":{"IN2M_ERCStorage":[424],"Readme":[8]},"id":425,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":260,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"4913:24:4"},{"absolutePath":"@nfts2me/contracts/important/README.sol","file":"../important/README.sol","id":261,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":425,"sourceUnit":9,"src":"4939:33:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":262,"name":"Readme","nameLocations":["5003:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":8,"src":"5003:6:4"},"id":263,"nodeType":"InheritanceSpecifier","src":"5003:6:4"}],"canonicalName":"IN2M_ERCStorage","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":424,"linearizedBaseContracts":[424,8],"name":"IN2M_ERCStorage","nameLocation":"4984:15:4","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":264,"nodeType":"StructuredDocumentation","src":"5016:122:4","text":"@notice This event is emitted when a token is minted using an affiliate\n @param affiliate The affiliate address"},"eventSelector":"f2f90295cdb5dafd392bfc62d7868bcc79e8c6164c820c7cc195d6c8cda8e674","id":268,"name":"AffiliateSell","nameLocation":"5149:13:4","nodeType":"EventDefinition","parameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":266,"indexed":true,"mutability":"mutable","name":"affiliate","nameLocation":"5179:9:4","nodeType":"VariableDeclaration","scope":268,"src":"5163:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":265,"name":"address","nodeType":"ElementaryTypeName","src":"5163:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5162:27:4"},"src":"5143:47:4"},{"documentation":{"id":269,"nodeType":"StructuredDocumentation","src":"5196:92:4","text":"@notice Error thrown when trying to mint a token with a given id which is already minted"},"errorSelector":"00a5a1f5","id":271,"name":"TokenAlreadyMinted","nameLocation":"5299:18:4","nodeType":"ErrorDefinition","parameters":{"id":270,"nodeType":"ParameterList","parameters":[],"src":"5317:2:4"},"src":"5293:27:4"},{"documentation":{"id":272,"nodeType":"StructuredDocumentation","src":"5326:61:4","text":"@notice Error thrown when input variable differ in length"},"errorSelector":"991f339f","id":274,"name":"InvalidInputSizesDontMatch","nameLocation":"5398:26:4","nodeType":"ErrorDefinition","parameters":{"id":273,"nodeType":"ParameterList","parameters":[],"src":"5424:2:4"},"src":"5392:35:4"},{"documentation":{"id":275,"nodeType":"StructuredDocumentation","src":"5433:61:4","text":"@notice Error thrown when input variable differ in length"},"errorSelector":"1182c577","id":277,"name":"InputSizeMismatch","nameLocation":"5505:17:4","nodeType":"ErrorDefinition","parameters":{"id":276,"nodeType":"ParameterList","parameters":[],"src":"5522:2:4"},"src":"5499:26:4"},{"documentation":{"id":278,"nodeType":"StructuredDocumentation","src":"5531:76:4","text":"@notice Error thrown when trying to mint a token with a given invalid id"},"errorSelector":"3f6cc768","id":280,"name":"InvalidTokenId","nameLocation":"5618:14:4","nodeType":"ErrorDefinition","parameters":{"id":279,"nodeType":"ParameterList","parameters":[],"src":"5632:2:4"},"src":"5612:23:4"},{"documentation":{"id":281,"nodeType":"StructuredDocumentation","src":"5641:86:4","text":"@notice Error thrown when trying to redeem random tickets with no amount to redeem"},"errorSelector":"9890af60","id":283,"name":"NothingToRedeem","nameLocation":"5738:15:4","nodeType":"ErrorDefinition","parameters":{"id":282,"nodeType":"ParameterList","parameters":[],"src":"5753:2:4"},"src":"5732:24:4"},{"documentation":{"id":284,"nodeType":"StructuredDocumentation","src":"5762:70:4","text":"@notice Error thrown when trying to redeem random tickets too soon"},"errorSelector":"93c4a003","id":286,"name":"CantRevealYetWaitABitToBeAbleToRedeem","nameLocation":"5843:37:4","nodeType":"ErrorDefinition","parameters":{"id":285,"nodeType":"ParameterList","parameters":[],"src":"5880:2:4"},"src":"5837:46:4"},{"documentation":{"id":287,"nodeType":"StructuredDocumentation","src":"5889:59:4","text":"@notice Error thrown when the input amount is not valid"},"errorSelector":"2c5211c6","id":289,"name":"InvalidAmount","nameLocation":"5959:13:4","nodeType":"ErrorDefinition","parameters":{"id":288,"nodeType":"ParameterList","parameters":[],"src":"5972:2:4"},"src":"5953:22:4"},{"documentation":{"id":290,"nodeType":"StructuredDocumentation","src":"5981:117:4","text":"@notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"},"errorSelector":"5fd48f91","id":292,"name":"CollectionSoldOut","nameLocation":"6109:17:4","nodeType":"ErrorDefinition","parameters":{"id":291,"nodeType":"ParameterList","parameters":[],"src":"6126:2:4"},"src":"6103:26:4"},{"documentation":{"id":293,"nodeType":"StructuredDocumentation","src":"6135:107:4","text":"@notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"},"errorSelector":"7963e2b5","id":295,"name":"PresaleNotOpen","nameLocation":"6253:14:4","nodeType":"ErrorDefinition","parameters":{"id":294,"nodeType":"ParameterList","parameters":[],"src":"6267:2:4"},"src":"6247:23:4"},{"documentation":{"id":296,"nodeType":"StructuredDocumentation","src":"6276:91:4","text":"@notice Error thrown when trying to mint and the collection current phase is not `open`"},"errorSelector":"63a2de0f","id":298,"name":"PublicSaleNotOpen","nameLocation":"6378:17:4","nodeType":"ErrorDefinition","parameters":{"id":297,"nodeType":"ParameterList","parameters":[],"src":"6395:2:4"},"src":"6372:26:4"},{"documentation":{"id":299,"nodeType":"StructuredDocumentation","src":"6404:78:4","text":"@notice Error thrown when trying to mint but the sale has already finished"},"errorSelector":"0734f1ad","id":301,"name":"SaleFinished","nameLocation":"6493:12:4","nodeType":"ErrorDefinition","parameters":{"id":300,"nodeType":"ParameterList","parameters":[],"src":"6505:2:4"},"src":"6487:21:4"},{"documentation":{"id":302,"nodeType":"StructuredDocumentation","src":"6514:76:4","text":"@notice Error thrown when trying to mint more than the allowance to mint"},"errorSelector":"9a89c66a","id":304,"name":"NotEnoughAmountToMint","nameLocation":"6601:21:4","nodeType":"ErrorDefinition","parameters":{"id":303,"nodeType":"ParameterList","parameters":[],"src":"6622:2:4"},"src":"6595:30:4"},{"documentation":{"id":305,"nodeType":"StructuredDocumentation","src":"6631:61:4","text":"@notice Error thrown when sending funds to a free minting"},"errorSelector":"122d34a8","id":307,"name":"InvalidMintFeeForFreeMinting","nameLocation":"6703:28:4","nodeType":"ErrorDefinition","parameters":{"id":306,"nodeType":"ParameterList","parameters":[],"src":"6731:2:4"},"src":"6697:37:4"},{"documentation":{"id":308,"nodeType":"StructuredDocumentation","src":"6740:58:4","text":"@notice Error thrown when the sent amount is not valid"},"errorSelector":"c288bf8f","id":310,"name":"InvalidMintFee","nameLocation":"6809:14:4","nodeType":"ErrorDefinition","parameters":{"id":309,"nodeType":"ParameterList","parameters":[],"src":"6823:2:4"},"src":"6803:23:4"},{"documentation":{"id":311,"nodeType":"StructuredDocumentation","src":"6832:48:4","text":"@notice Royalty fee can't be higher than 10%"},"errorSelector":"44b93ba4","id":313,"name":"RoyaltyFeeTooHigh","nameLocation":"6891:17:4","nodeType":"ErrorDefinition","parameters":{"id":312,"nodeType":"ParameterList","parameters":[],"src":"6908:2:4"},"src":"6885:26:4"},{"documentation":{"id":314,"nodeType":"StructuredDocumentation","src":"6917:65:4","text":"@notice Invalid input. Total supply must be greater than zero"},"errorSelector":"b8a9effe","id":316,"name":"TotalSupplyMustBeGreaterThanZero","nameLocation":"6993:32:4","nodeType":"ErrorDefinition","parameters":{"id":315,"nodeType":"ParameterList","parameters":[],"src":"7025:2:4"},"src":"6987:41:4"},{"documentation":{"id":317,"nodeType":"StructuredDocumentation","src":"7034:62:4","text":"@notice Can't set BaseURI and Placeholder at the same time"},"errorSelector":"04cff63b","id":319,"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","nameLocation":"7107:41:4","nodeType":"ErrorDefinition","parameters":{"id":318,"nodeType":"ParameterList","parameters":[],"src":"7148:2:4"},"src":"7101:50:4"},{"documentation":{"id":320,"nodeType":"StructuredDocumentation","src":"7157:42:4","text":"@notice No BaseURI nor Placeholder set"},"errorSelector":"27bfeafe","id":322,"name":"NoBaseURINorPlaceholderSet","nameLocation":"7210:26:4","nodeType":"ErrorDefinition","parameters":{"id":321,"nodeType":"ParameterList","parameters":[],"src":"7236:2:4"},"src":"7204:35:4"},{"documentation":{"id":323,"nodeType":"StructuredDocumentation","src":"7245:50:4","text":"@notice Can't transfer a Soulbound Token (SBT)"},"errorSelector":"765c862b","id":325,"name":"NonTransferrableSoulboundNFT","nameLocation":"7306:28:4","nodeType":"ErrorDefinition","parameters":{"id":324,"nodeType":"ParameterList","parameters":[],"src":"7334:2:4"},"src":"7300:37:4"},{"documentation":{"id":326,"nodeType":"StructuredDocumentation","src":"7343:55:4","text":"@notice The input revenue percentages are not valid"},"errorSelector":"fe0c06b7","id":328,"name":"InvalidRevenuePercentage","nameLocation":"7409:24:4","nodeType":"ErrorDefinition","parameters":{"id":327,"nodeType":"ParameterList","parameters":[],"src":"7433:2:4"},"src":"7403:33:4"},{"documentation":{"id":329,"nodeType":"StructuredDocumentation","src":"7442:48:4","text":"@notice Can't mint until specified drop date"},"errorSelector":"b3c03577","id":331,"name":"WaitUntilDropDate","nameLocation":"7501:17:4","nodeType":"ErrorDefinition","parameters":{"id":330,"nodeType":"ParameterList","parameters":[],"src":"7518:2:4"},"src":"7495:26:4"},{"documentation":{"id":332,"nodeType":"StructuredDocumentation","src":"7527:111:4","text":"@notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"},"errorSelector":"3f886819","id":334,"name":"PresaleInvalidMintingType","nameLocation":"7649:25:4","nodeType":"ErrorDefinition","parameters":{"id":333,"nodeType":"ParameterList","parameters":[],"src":"7674:2:4"},"src":"7643:34:4"},{"documentation":{"id":335,"nodeType":"StructuredDocumentation","src":"7683:71:4","text":"@notice Metadata is already fixed. Can't change metadata once fixed"},"errorSelector":"f36c5604","id":337,"name":"MetadataAlreadyFixed","nameLocation":"7765:20:4","nodeType":"ErrorDefinition","parameters":{"id":336,"nodeType":"ParameterList","parameters":[],"src":"7785:2:4"},"src":"7759:29:4"},{"documentation":{"id":338,"nodeType":"StructuredDocumentation","src":"7794:76:4","text":"@notice Invalid collection minting type for the current minting function"},"errorSelector":"64151c75","id":340,"name":"InvalidMintingType","nameLocation":"7881:18:4","nodeType":"ErrorDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[],"src":"7899:2:4"},"src":"7875:27:4"},{"documentation":{"id":341,"nodeType":"StructuredDocumentation","src":"7908:59:4","text":"@notice The address exceeded the max per address amount"},"errorSelector":"550ffa9c","id":343,"name":"MaxPerAddressExceeded","nameLocation":"7978:21:4","nodeType":"ErrorDefinition","parameters":{"id":342,"nodeType":"ParameterList","parameters":[],"src":"7999:2:4"},"src":"7972:30:4"},{"documentation":{"id":344,"nodeType":"StructuredDocumentation","src":"8008:62:4","text":"@notice The given signature doesn't match the input values"},"errorSelector":"73a8ee18","id":346,"name":"SignatureMismatch","nameLocation":"8081:17:4","nodeType":"ErrorDefinition","parameters":{"id":345,"nodeType":"ParameterList","parameters":[],"src":"8098:2:4"},"src":"8075:26:4"},{"documentation":{"id":347,"nodeType":"StructuredDocumentation","src":"8107:39:4","text":"@notice Reentrancy Guard protection"},"errorSelector":"8beb9d16","id":349,"name":"ReentrancyGuard","nameLocation":"8157:15:4","nodeType":"ErrorDefinition","parameters":{"id":348,"nodeType":"ParameterList","parameters":[],"src":"8172:2:4"},"src":"8151:24:4"},{"documentation":{"id":350,"nodeType":"StructuredDocumentation","src":"8181:42:4","text":"@notice New Placeholder can't be empty"},"errorSelector":"1ef28297","id":352,"name":"NewPlaceholderCantBeEmpty","nameLocation":"8234:25:4","nodeType":"ErrorDefinition","parameters":{"id":351,"nodeType":"ParameterList","parameters":[],"src":"8259:2:4"},"src":"8228:34:4"},{"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"8268:38:4","text":"@notice New BaseURI can't be empty"},"errorSelector":"45e35773","id":355,"name":"NewBaseURICantBeEmpty","nameLocation":"8317:21:4","nodeType":"ErrorDefinition","parameters":{"id":354,"nodeType":"ParameterList","parameters":[],"src":"8338:2:4"},"src":"8311:30:4"},{"documentation":{"id":356,"nodeType":"StructuredDocumentation","src":"8351:49:4","text":"@notice Invalid percentage or discount values"},"errorSelector":"21d43b64","id":358,"name":"InvalidPercentageOrDiscountValues","nameLocation":"8411:33:4","nodeType":"ErrorDefinition","parameters":{"id":357,"nodeType":"ParameterList","parameters":[],"src":"8444:2:4"},"src":"8405:42:4"},{"documentation":{"id":359,"nodeType":"StructuredDocumentation","src":"8453:43:4","text":"@notice Can't lower current percentages"},"errorSelector":"288224ab","id":361,"name":"CantLowerCurrentPercentages","nameLocation":"8507:27:4","nodeType":"ErrorDefinition","parameters":{"id":360,"nodeType":"ParameterList","parameters":[],"src":"8534:2:4"},"src":"8501:36:4"},{"documentation":{"id":362,"nodeType":"StructuredDocumentation","src":"8543:46:4","text":"@notice Contract MetadataURI already fixed"},"errorSelector":"b50ac5b9","id":364,"name":"ContractMetadataURIAlreadyFixed","nameLocation":"8600:31:4","nodeType":"ErrorDefinition","parameters":{"id":363,"nodeType":"ParameterList","parameters":[],"src":"8631:2:4"},"src":"8594:40:4"},{"documentation":{"id":365,"nodeType":"StructuredDocumentation","src":"8640:52:4","text":"@notice Only owner of N2M can call this function"},"errorSelector":"e6427742","id":367,"name":"OnlyOwnerOrN2M","nameLocation":"8703:14:4","nodeType":"ErrorDefinition","parameters":{"id":366,"nodeType":"ParameterList","parameters":[],"src":"8717:2:4"},"src":"8697:23:4"},{"documentation":{"id":368,"nodeType":"StructuredDocumentation","src":"8726:66:4","text":"@notice Only the given affiliate or N2M can call this function"},"errorSelector":"cd6ca494","id":370,"name":"OnlyAffiliateOrN2M","nameLocation":"8803:18:4","nodeType":"ErrorDefinition","parameters":{"id":369,"nodeType":"ParameterList","parameters":[],"src":"8821:2:4"},"src":"8797:27:4"},{"documentation":{"id":371,"nodeType":"StructuredDocumentation","src":"8830:37:4","text":"@notice The signature has expired"},"errorSelector":"0819bdcd","id":373,"name":"SignatureExpired","nameLocation":"8878:16:4","nodeType":"ErrorDefinition","parameters":{"id":372,"nodeType":"ParameterList","parameters":[],"src":"8894:2:4"},"src":"8872:25:4"},{"documentation":{"id":374,"nodeType":"StructuredDocumentation","src":"8903:86:4","text":"@notice Invalid phase can't be set without giving a date, use the proper functions"},"errorSelector":"382936d1","id":376,"name":"InvalidPhaseWithoutDate","nameLocation":"9000:23:4","nodeType":"ErrorDefinition","parameters":{"id":375,"nodeType":"ParameterList","parameters":[],"src":"9023:2:4"},"src":"8994:32:4"},{"documentation":{"id":377,"nodeType":"StructuredDocumentation","src":"9032:29:4","text":"@notice Invalid drop date"},"errorSelector":"9404bf88","id":379,"name":"InvalidDropDate","nameLocation":"9072:15:4","nodeType":"ErrorDefinition","parameters":{"id":378,"nodeType":"ParameterList","parameters":[],"src":"9087:2:4"},"src":"9066:24:4"},{"documentation":{"id":380,"nodeType":"StructuredDocumentation","src":"9096:40:4","text":"@notice Operator address is filtered"},"errorSelector":"a8cf495d","id":384,"name":"AddressFiltered","nameLocation":"9147:15:4","nodeType":"ErrorDefinition","parameters":{"id":383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":382,"mutability":"mutable","name":"filtered","nameLocation":"9171:8:4","nodeType":"VariableDeclaration","scope":384,"src":"9163:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":381,"name":"address","nodeType":"ElementaryTypeName","src":"9163:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9162:18:4"},"src":"9141:40:4"},{"canonicalName":"IN2M_ERCStorage.RandomTicket","id":389,"members":[{"constant":false,"id":386,"mutability":"mutable","name":"amount","nameLocation":"9225:6:4","nodeType":"VariableDeclaration","scope":389,"src":"9217:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":385,"name":"uint256","nodeType":"ElementaryTypeName","src":"9217:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":388,"mutability":"mutable","name":"blockNumberToReveal","nameLocation":"9249:19:4","nodeType":"VariableDeclaration","scope":389,"src":"9241:27:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":387,"name":"uint256","nodeType":"ElementaryTypeName","src":"9241:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"RandomTicket","nameLocation":"9194:12:4","nodeType":"StructDefinition","scope":424,"src":"9187:88:4","visibility":"public"},{"canonicalName":"IN2M_ERCStorage.RevenueAddress","id":394,"members":[{"constant":false,"id":391,"mutability":"mutable","name":"to","nameLocation":"9321:2:4","nodeType":"VariableDeclaration","scope":394,"src":"9313:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":390,"name":"address","nodeType":"ElementaryTypeName","src":"9313:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":393,"mutability":"mutable","name":"percentage","nameLocation":"9340:10:4","nodeType":"VariableDeclaration","scope":394,"src":"9333:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":392,"name":"uint16","nodeType":"ElementaryTypeName","src":"9333:6:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"name":"RevenueAddress","nameLocation":"9288:14:4","nodeType":"StructDefinition","scope":424,"src":"9281:76:4","visibility":"public"},{"canonicalName":"IN2M_ERCStorage.AffiliateInformation","id":401,"members":[{"constant":false,"id":396,"mutability":"mutable","name":"enabled","nameLocation":"9406:7:4","nodeType":"VariableDeclaration","scope":401,"src":"9401:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":395,"name":"bool","nodeType":"ElementaryTypeName","src":"9401:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":398,"mutability":"mutable","name":"affiliatePercentage","nameLocation":"9430:19:4","nodeType":"VariableDeclaration","scope":401,"src":"9423:26:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":397,"name":"uint16","nodeType":"ElementaryTypeName","src":"9423:6:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":400,"mutability":"mutable","name":"userDiscount","nameLocation":"9466:12:4","nodeType":"VariableDeclaration","scope":401,"src":"9459:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":399,"name":"uint16","nodeType":"ElementaryTypeName","src":"9459:6:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"name":"AffiliateInformation","nameLocation":"9370:20:4","nodeType":"StructDefinition","scope":424,"src":"9363:122:4","visibility":"public"},{"canonicalName":"IN2M_ERCStorage.SalePhase","id":407,"members":[{"id":402,"name":"CLOSED","nameLocation":"9517:6:4","nodeType":"EnumValue","src":"9517:6:4"},{"id":403,"name":"PRESALE","nameLocation":"9533:7:4","nodeType":"EnumValue","src":"9533:7:4"},{"id":404,"name":"PUBLIC","nameLocation":"9550:6:4","nodeType":"EnumValue","src":"9550:6:4"},{"id":405,"name":"DROP_DATE","nameLocation":"9566:9:4","nodeType":"EnumValue","src":"9566:9:4"},{"id":406,"name":"DROP_AND_END_DATE","nameLocation":"9585:17:4","nodeType":"EnumValue","src":"9585:17:4"}],"name":"SalePhase","nameLocation":"9496:9:4","nodeType":"EnumDefinition","src":"9491:117:4"},{"canonicalName":"IN2M_ERCStorage.MintingType","id":412,"members":[{"id":408,"name":"SEQUENTIAL","nameLocation":"9642:10:4","nodeType":"EnumValue","src":"9642:10:4"},{"id":409,"name":"RANDOM","nameLocation":"9663:6:4","nodeType":"EnumValue","src":"9663:6:4"},{"id":410,"name":"SPECIFY","nameLocation":"9680:7:4","nodeType":"EnumValue","src":"9680:7:4"},{"id":411,"name":"CUSTOM_URI","nameLocation":"9698:10:4","nodeType":"EnumValue","src":"9698:10:4"}],"name":"MintingType","nameLocation":"9619:11:4","nodeType":"EnumDefinition","src":"9614:101:4"},{"canonicalName":"IN2M_ERCStorage.OperatorFilterStatus","id":417,"members":[{"id":413,"name":"ENABLED_NOT_INITIALIZED","nameLocation":"9758:23:4","nodeType":"EnumValue","src":"9758:23:4"},{"id":414,"name":"ENABLED_EXISTS","nameLocation":"9792:14:4","nodeType":"EnumValue","src":"9792:14:4"},{"id":415,"name":"DISABLED_NOT_INITIALIZED","nameLocation":"9826:24:4","nodeType":"EnumValue","src":"9826:24:4"},{"id":416,"name":"DISABLED_EXISTS","nameLocation":"9860:15:4","nodeType":"EnumValue","src":"9860:15:4"}],"name":"OperatorFilterStatus","nameLocation":"9726:20:4","nodeType":"EnumDefinition","src":"9721:170:4"},{"documentation":{"id":418,"nodeType":"StructuredDocumentation","src":"9897:167:4","text":"@notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."},"functionSelector":"0de77eb8","id":423,"implemented":false,"kind":"function","modifiers":[],"name":"isMetadataFixed","nameLocation":"10078:15:4","nodeType":"FunctionDefinition","parameters":{"id":419,"nodeType":"ParameterList","parameters":[],"src":"10093:2:4"},"returnParameters":{"id":422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":421,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":423,"src":"10119:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":420,"name":"bool","nodeType":"ElementaryTypeName","src":"10119:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10118:6:4"},"scope":424,"src":"10069:56:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":425,"src":"4974:5154:4","usedErrors":[271,274,277,280,283,286,289,292,295,298,301,304,307,310,313,316,319,322,325,328,331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376,379,384]}],"src":"4913:5217:4"},"id":4},"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol":{"ast":{"absolutePath":"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol","exportedSymbols":{"IOperatorFilterRegistry":[613]},"id":614,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":426,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"4913:24:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IOperatorFilterRegistry","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":613,"linearizedBaseContracts":[613],"name":"IOperatorFilterRegistry","nameLocation":"4949:23:5","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c6171134","id":435,"implemented":false,"kind":"function","modifiers":[],"name":"isOperatorAllowed","nameLocation":"4988:17:5","nodeType":"FunctionDefinition","parameters":{"id":431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":428,"mutability":"mutable","name":"registrant","nameLocation":"5014:10:5","nodeType":"VariableDeclaration","scope":435,"src":"5006:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":427,"name":"address","nodeType":"ElementaryTypeName","src":"5006:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":430,"mutability":"mutable","name":"operator","nameLocation":"5034:8:5","nodeType":"VariableDeclaration","scope":435,"src":"5026:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":429,"name":"address","nodeType":"ElementaryTypeName","src":"5026:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5005:38:5"},"returnParameters":{"id":434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":433,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":435,"src":"5067:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":432,"name":"bool","nodeType":"ElementaryTypeName","src":"5067:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5066:6:5"},"scope":613,"src":"4979:94:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4420e486","id":440,"implemented":false,"kind":"function","modifiers":[],"name":"register","nameLocation":"5087:8:5","nodeType":"FunctionDefinition","parameters":{"id":438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":437,"mutability":"mutable","name":"registrant","nameLocation":"5104:10:5","nodeType":"VariableDeclaration","scope":440,"src":"5096:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":436,"name":"address","nodeType":"ElementaryTypeName","src":"5096:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5095:20:5"},"returnParameters":{"id":439,"nodeType":"ParameterList","parameters":[],"src":"5124:0:5"},"scope":613,"src":"5078:47:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"7d3e3dbe","id":447,"implemented":false,"kind":"function","modifiers":[],"name":"registerAndSubscribe","nameLocation":"5139:20:5","nodeType":"FunctionDefinition","parameters":{"id":445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":442,"mutability":"mutable","name":"registrant","nameLocation":"5168:10:5","nodeType":"VariableDeclaration","scope":447,"src":"5160:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":441,"name":"address","nodeType":"ElementaryTypeName","src":"5160:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":444,"mutability":"mutable","name":"subscription","nameLocation":"5188:12:5","nodeType":"VariableDeclaration","scope":447,"src":"5180:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":443,"name":"address","nodeType":"ElementaryTypeName","src":"5180:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5159:42:5"},"returnParameters":{"id":446,"nodeType":"ParameterList","parameters":[],"src":"5210:0:5"},"scope":613,"src":"5130:81:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a0af2903","id":454,"implemented":false,"kind":"function","modifiers":[],"name":"registerAndCopyEntries","nameLocation":"5225:22:5","nodeType":"FunctionDefinition","parameters":{"id":452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":449,"mutability":"mutable","name":"registrant","nameLocation":"5256:10:5","nodeType":"VariableDeclaration","scope":454,"src":"5248:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":448,"name":"address","nodeType":"ElementaryTypeName","src":"5248:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":451,"mutability":"mutable","name":"registrantToCopy","nameLocation":"5276:16:5","nodeType":"VariableDeclaration","scope":454,"src":"5268:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":450,"name":"address","nodeType":"ElementaryTypeName","src":"5268:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5247:46:5"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[],"src":"5302:0:5"},"scope":613,"src":"5216:87:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a2f367ab","id":463,"implemented":false,"kind":"function","modifiers":[],"name":"updateOperator","nameLocation":"5317:14:5","nodeType":"FunctionDefinition","parameters":{"id":461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"registrant","nameLocation":"5340:10:5","nodeType":"VariableDeclaration","scope":463,"src":"5332:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":455,"name":"address","nodeType":"ElementaryTypeName","src":"5332:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":458,"mutability":"mutable","name":"operator","nameLocation":"5360:8:5","nodeType":"VariableDeclaration","scope":463,"src":"5352:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":457,"name":"address","nodeType":"ElementaryTypeName","src":"5352:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":460,"mutability":"mutable","name":"filtered","nameLocation":"5375:8:5","nodeType":"VariableDeclaration","scope":463,"src":"5370:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":459,"name":"bool","nodeType":"ElementaryTypeName","src":"5370:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5331:53:5"},"returnParameters":{"id":462,"nodeType":"ParameterList","parameters":[],"src":"5393:0:5"},"scope":613,"src":"5308:86:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a14584c1","id":473,"implemented":false,"kind":"function","modifiers":[],"name":"updateOperators","nameLocation":"5408:15:5","nodeType":"FunctionDefinition","parameters":{"id":471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":465,"mutability":"mutable","name":"registrant","nameLocation":"5432:10:5","nodeType":"VariableDeclaration","scope":473,"src":"5424:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":464,"name":"address","nodeType":"ElementaryTypeName","src":"5424:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":468,"mutability":"mutable","name":"operators","nameLocation":"5463:9:5","nodeType":"VariableDeclaration","scope":473,"src":"5444:28:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":466,"name":"address","nodeType":"ElementaryTypeName","src":"5444:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":467,"nodeType":"ArrayTypeName","src":"5444:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":470,"mutability":"mutable","name":"filtered","nameLocation":"5479:8:5","nodeType":"VariableDeclaration","scope":473,"src":"5474:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":469,"name":"bool","nodeType":"ElementaryTypeName","src":"5474:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5423:65:5"},"returnParameters":{"id":472,"nodeType":"ParameterList","parameters":[],"src":"5497:0:5"},"scope":613,"src":"5399:99:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"712fc00b","id":482,"implemented":false,"kind":"function","modifiers":[],"name":"updateCodeHash","nameLocation":"5512:14:5","nodeType":"FunctionDefinition","parameters":{"id":480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"registrant","nameLocation":"5535:10:5","nodeType":"VariableDeclaration","scope":482,"src":"5527:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":474,"name":"address","nodeType":"ElementaryTypeName","src":"5527:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":477,"mutability":"mutable","name":"codehash","nameLocation":"5555:8:5","nodeType":"VariableDeclaration","scope":482,"src":"5547:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":476,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5547:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":479,"mutability":"mutable","name":"filtered","nameLocation":"5570:8:5","nodeType":"VariableDeclaration","scope":482,"src":"5565:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":478,"name":"bool","nodeType":"ElementaryTypeName","src":"5565:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5526:53:5"},"returnParameters":{"id":481,"nodeType":"ParameterList","parameters":[],"src":"5588:0:5"},"scope":613,"src":"5503:86:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"063298b6","id":492,"implemented":false,"kind":"function","modifiers":[],"name":"updateCodeHashes","nameLocation":"5603:16:5","nodeType":"FunctionDefinition","parameters":{"id":490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":484,"mutability":"mutable","name":"registrant","nameLocation":"5628:10:5","nodeType":"VariableDeclaration","scope":492,"src":"5620:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":483,"name":"address","nodeType":"ElementaryTypeName","src":"5620:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":487,"mutability":"mutable","name":"codeHashes","nameLocation":"5659:10:5","nodeType":"VariableDeclaration","scope":492,"src":"5640:29:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":485,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5640:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":486,"nodeType":"ArrayTypeName","src":"5640:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":489,"mutability":"mutable","name":"filtered","nameLocation":"5676:8:5","nodeType":"VariableDeclaration","scope":492,"src":"5671:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":488,"name":"bool","nodeType":"ElementaryTypeName","src":"5671:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5619:66:5"},"returnParameters":{"id":491,"nodeType":"ParameterList","parameters":[],"src":"5694:0:5"},"scope":613,"src":"5594:101:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b314d414","id":499,"implemented":false,"kind":"function","modifiers":[],"name":"subscribe","nameLocation":"5709:9:5","nodeType":"FunctionDefinition","parameters":{"id":497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":494,"mutability":"mutable","name":"registrant","nameLocation":"5727:10:5","nodeType":"VariableDeclaration","scope":499,"src":"5719:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":493,"name":"address","nodeType":"ElementaryTypeName","src":"5719:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":496,"mutability":"mutable","name":"registrantToSubscribe","nameLocation":"5747:21:5","nodeType":"VariableDeclaration","scope":499,"src":"5739:29:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":495,"name":"address","nodeType":"ElementaryTypeName","src":"5739:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5718:51:5"},"returnParameters":{"id":498,"nodeType":"ParameterList","parameters":[],"src":"5778:0:5"},"scope":613,"src":"5700:79:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"34a0dc10","id":506,"implemented":false,"kind":"function","modifiers":[],"name":"unsubscribe","nameLocation":"5793:11:5","nodeType":"FunctionDefinition","parameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":501,"mutability":"mutable","name":"registrant","nameLocation":"5813:10:5","nodeType":"VariableDeclaration","scope":506,"src":"5805:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":500,"name":"address","nodeType":"ElementaryTypeName","src":"5805:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":503,"mutability":"mutable","name":"copyExistingEntries","nameLocation":"5830:19:5","nodeType":"VariableDeclaration","scope":506,"src":"5825:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":502,"name":"bool","nodeType":"ElementaryTypeName","src":"5825:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5804:46:5"},"returnParameters":{"id":505,"nodeType":"ParameterList","parameters":[],"src":"5859:0:5"},"scope":613,"src":"5784:76:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3c5030bb","id":513,"implemented":false,"kind":"function","modifiers":[],"name":"subscriptionOf","nameLocation":"5874:14:5","nodeType":"FunctionDefinition","parameters":{"id":509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":508,"mutability":"mutable","name":"addr","nameLocation":"5897:4:5","nodeType":"VariableDeclaration","scope":513,"src":"5889:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":507,"name":"address","nodeType":"ElementaryTypeName","src":"5889:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5888:14:5"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"registrant","nameLocation":"5929:10:5","nodeType":"VariableDeclaration","scope":513,"src":"5921:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":510,"name":"address","nodeType":"ElementaryTypeName","src":"5921:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5920:20:5"},"scope":613,"src":"5865:76:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5745ae28","id":521,"implemented":false,"kind":"function","modifiers":[],"name":"subscribers","nameLocation":"5955:11:5","nodeType":"FunctionDefinition","parameters":{"id":516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":515,"mutability":"mutable","name":"registrant","nameLocation":"5975:10:5","nodeType":"VariableDeclaration","scope":521,"src":"5967:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":514,"name":"address","nodeType":"ElementaryTypeName","src":"5967:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5966:20:5"},"returnParameters":{"id":520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":521,"src":"6005:16:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":517,"name":"address","nodeType":"ElementaryTypeName","src":"6005:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":518,"nodeType":"ArrayTypeName","src":"6005:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"6004:18:5"},"scope":613,"src":"5946:77:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"55940e51","id":530,"implemented":false,"kind":"function","modifiers":[],"name":"subscriberAt","nameLocation":"6037:12:5","nodeType":"FunctionDefinition","parameters":{"id":526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":523,"mutability":"mutable","name":"registrant","nameLocation":"6058:10:5","nodeType":"VariableDeclaration","scope":530,"src":"6050:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":522,"name":"address","nodeType":"ElementaryTypeName","src":"6050:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":525,"mutability":"mutable","name":"index","nameLocation":"6078:5:5","nodeType":"VariableDeclaration","scope":530,"src":"6070:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":524,"name":"uint256","nodeType":"ElementaryTypeName","src":"6070:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6049:35:5"},"returnParameters":{"id":529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":528,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":530,"src":"6103:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":527,"name":"address","nodeType":"ElementaryTypeName","src":"6103:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6102:9:5"},"scope":613,"src":"6028:84:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1e06b4b4","id":537,"implemented":false,"kind":"function","modifiers":[],"name":"copyEntriesOf","nameLocation":"6126:13:5","nodeType":"FunctionDefinition","parameters":{"id":535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":532,"mutability":"mutable","name":"registrant","nameLocation":"6148:10:5","nodeType":"VariableDeclaration","scope":537,"src":"6140:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":531,"name":"address","nodeType":"ElementaryTypeName","src":"6140:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":534,"mutability":"mutable","name":"registrantToCopy","nameLocation":"6168:16:5","nodeType":"VariableDeclaration","scope":537,"src":"6160:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":533,"name":"address","nodeType":"ElementaryTypeName","src":"6160:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6139:46:5"},"returnParameters":{"id":536,"nodeType":"ParameterList","parameters":[],"src":"6194:0:5"},"scope":613,"src":"6117:78:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e4aecb54","id":546,"implemented":false,"kind":"function","modifiers":[],"name":"isOperatorFiltered","nameLocation":"6209:18:5","nodeType":"FunctionDefinition","parameters":{"id":542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":539,"mutability":"mutable","name":"registrant","nameLocation":"6236:10:5","nodeType":"VariableDeclaration","scope":546,"src":"6228:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":538,"name":"address","nodeType":"ElementaryTypeName","src":"6228:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":541,"mutability":"mutable","name":"operator","nameLocation":"6256:8:5","nodeType":"VariableDeclaration","scope":546,"src":"6248:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":540,"name":"address","nodeType":"ElementaryTypeName","src":"6248:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6227:38:5"},"returnParameters":{"id":545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":546,"src":"6284:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":543,"name":"bool","nodeType":"ElementaryTypeName","src":"6284:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6283:6:5"},"scope":613,"src":"6200:90:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5eae3173","id":555,"implemented":false,"kind":"function","modifiers":[],"name":"isCodeHashOfFiltered","nameLocation":"6304:20:5","nodeType":"FunctionDefinition","parameters":{"id":551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":548,"mutability":"mutable","name":"registrant","nameLocation":"6333:10:5","nodeType":"VariableDeclaration","scope":555,"src":"6325:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":547,"name":"address","nodeType":"ElementaryTypeName","src":"6325:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":550,"mutability":"mutable","name":"operatorWithCode","nameLocation":"6353:16:5","nodeType":"VariableDeclaration","scope":555,"src":"6345:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":549,"name":"address","nodeType":"ElementaryTypeName","src":"6345:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6324:46:5"},"returnParameters":{"id":554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":553,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":555,"src":"6389:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":552,"name":"bool","nodeType":"ElementaryTypeName","src":"6389:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6388:6:5"},"scope":613,"src":"6295:100:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6af0c315","id":564,"implemented":false,"kind":"function","modifiers":[],"name":"isCodeHashFiltered","nameLocation":"6409:18:5","nodeType":"FunctionDefinition","parameters":{"id":560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":557,"mutability":"mutable","name":"registrant","nameLocation":"6436:10:5","nodeType":"VariableDeclaration","scope":564,"src":"6428:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":556,"name":"address","nodeType":"ElementaryTypeName","src":"6428:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":559,"mutability":"mutable","name":"codeHash","nameLocation":"6456:8:5","nodeType":"VariableDeclaration","scope":564,"src":"6448:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":558,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6448:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6427:38:5"},"returnParameters":{"id":563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":564,"src":"6484:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":561,"name":"bool","nodeType":"ElementaryTypeName","src":"6484:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6483:6:5"},"scope":613,"src":"6400:90:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c4308805","id":572,"implemented":false,"kind":"function","modifiers":[],"name":"filteredOperators","nameLocation":"6504:17:5","nodeType":"FunctionDefinition","parameters":{"id":567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":566,"mutability":"mutable","name":"addr","nameLocation":"6530:4:5","nodeType":"VariableDeclaration","scope":572,"src":"6522:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":565,"name":"address","nodeType":"ElementaryTypeName","src":"6522:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6521:14:5"},"returnParameters":{"id":571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":570,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":572,"src":"6554:16:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":568,"name":"address","nodeType":"ElementaryTypeName","src":"6554:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":569,"nodeType":"ArrayTypeName","src":"6554:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"6553:18:5"},"scope":613,"src":"6495:77:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"22fa2762","id":580,"implemented":false,"kind":"function","modifiers":[],"name":"filteredCodeHashes","nameLocation":"6586:18:5","nodeType":"FunctionDefinition","parameters":{"id":575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":574,"mutability":"mutable","name":"addr","nameLocation":"6613:4:5","nodeType":"VariableDeclaration","scope":580,"src":"6605:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":573,"name":"address","nodeType":"ElementaryTypeName","src":"6605:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6604:14:5"},"returnParameters":{"id":579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":580,"src":"6637:16:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":576,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6637:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":577,"nodeType":"ArrayTypeName","src":"6637:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6636:18:5"},"scope":613,"src":"6577:78:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3f1cc5fa","id":589,"implemented":false,"kind":"function","modifiers":[],"name":"filteredOperatorAt","nameLocation":"6669:18:5","nodeType":"FunctionDefinition","parameters":{"id":585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":582,"mutability":"mutable","name":"registrant","nameLocation":"6696:10:5","nodeType":"VariableDeclaration","scope":589,"src":"6688:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":581,"name":"address","nodeType":"ElementaryTypeName","src":"6688:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":584,"mutability":"mutable","name":"index","nameLocation":"6716:5:5","nodeType":"VariableDeclaration","scope":589,"src":"6708:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":583,"name":"uint256","nodeType":"ElementaryTypeName","src":"6708:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6687:35:5"},"returnParameters":{"id":588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":587,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":589,"src":"6741:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":586,"name":"address","nodeType":"ElementaryTypeName","src":"6741:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6740:9:5"},"scope":613,"src":"6660:90:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a6529eb5","id":598,"implemented":false,"kind":"function","modifiers":[],"name":"filteredCodeHashAt","nameLocation":"6764:18:5","nodeType":"FunctionDefinition","parameters":{"id":594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":591,"mutability":"mutable","name":"registrant","nameLocation":"6791:10:5","nodeType":"VariableDeclaration","scope":598,"src":"6783:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":590,"name":"address","nodeType":"ElementaryTypeName","src":"6783:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":593,"mutability":"mutable","name":"index","nameLocation":"6811:5:5","nodeType":"VariableDeclaration","scope":598,"src":"6803:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":592,"name":"uint256","nodeType":"ElementaryTypeName","src":"6803:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6782:35:5"},"returnParameters":{"id":597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":596,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":598,"src":"6836:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":595,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6836:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6835:9:5"},"scope":613,"src":"6755:90:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c3c5a547","id":605,"implemented":false,"kind":"function","modifiers":[],"name":"isRegistered","nameLocation":"6859:12:5","nodeType":"FunctionDefinition","parameters":{"id":601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":600,"mutability":"mutable","name":"addr","nameLocation":"6880:4:5","nodeType":"VariableDeclaration","scope":605,"src":"6872:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":599,"name":"address","nodeType":"ElementaryTypeName","src":"6872:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6871:14:5"},"returnParameters":{"id":604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":605,"src":"6909:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":602,"name":"bool","nodeType":"ElementaryTypeName","src":"6909:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6908:6:5"},"scope":613,"src":"6850:65:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bbd652c7","id":612,"implemented":false,"kind":"function","modifiers":[],"name":"codeHashOf","nameLocation":"6929:10:5","nodeType":"FunctionDefinition","parameters":{"id":608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":607,"mutability":"mutable","name":"addr","nameLocation":"6948:4:5","nodeType":"VariableDeclaration","scope":612,"src":"6940:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":606,"name":"address","nodeType":"ElementaryTypeName","src":"6940:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6939:14:5"},"returnParameters":{"id":611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":612,"src":"6977:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":609,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6977:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6976:9:5"},"scope":613,"src":"6920:66:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":614,"src":"4939:2049:5","usedErrors":[]}],"src":"4913:2075:5"},"id":5},"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol":{"ast":{"absolutePath":"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"ContextUpgradeable":[6489],"Initializable":[1466],"NFTOwnableUpgradeable":[726]},"id":727,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":615,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"4913:24:6"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":616,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":727,"sourceUnit":1467,"src":"4939:75:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","id":617,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":727,"sourceUnit":6490,"src":"5015:74:6","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":619,"name":"Initializable","nameLocations":["5398:13:6"],"nodeType":"IdentifierPath","referencedDeclaration":1466,"src":"5398:13:6"},"id":620,"nodeType":"InheritanceSpecifier","src":"5398:13:6"},{"baseName":{"id":621,"name":"ContextUpgradeable","nameLocations":["5413:18:6"],"nodeType":"IdentifierPath","referencedDeclaration":6489,"src":"5413:18:6"},"id":622,"nodeType":"InheritanceSpecifier","src":"5413:18:6"}],"canonicalName":"NFTOwnableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":618,"nodeType":"StructuredDocumentation","src":"5091:264:6","text":"@title NFTs2Me.com Smart Contracts\n @author The NFTs2Me Team\n @notice Read our terms of service\n @custom:security-contact security@nfts2me.com\n @custom:terms-of-service https://nfts2me.com/terms-of-service/\n @custom:website https://nfts2me.com/"},"fullyImplemented":false,"id":726,"linearizedBaseContracts":[726,6489,1466],"name":"NFTOwnableUpgradeable","nameLocation":"5373:21:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":629,"nodeType":"Block","src":"5541:41:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":625,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":680,"src":"5551:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5551:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":627,"nodeType":"ExpressionStatement","src":"5551:13:6"},{"id":628,"nodeType":"PlaceholderStatement","src":"5574:1:6"}]},"documentation":{"id":623,"nodeType":"StructuredDocumentation","src":"5438:77:6","text":" @dev Throws if called by any account other than the owner."},"id":630,"name":"onlyOwner","nameLocation":"5529:9:6","nodeType":"ModifierDefinition","parameters":{"id":624,"nodeType":"ParameterList","parameters":[],"src":"5538:2:6"},"src":"5520:62:6","virtual":false,"visibility":"internal"},{"body":{"id":636,"nodeType":"Block","src":"5615:47:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":632,"name":"_checkStrictOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"5625:17:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5625:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":634,"nodeType":"ExpressionStatement","src":"5625:19:6"},{"id":635,"nodeType":"PlaceholderStatement","src":"5654:1:6"}]},"id":637,"name":"onlyStrictOwner","nameLocation":"5597:15:6","nodeType":"ModifierDefinition","parameters":{"id":631,"nodeType":"ParameterList","parameters":[],"src":"5612:2:6"},"src":"5588:74:6","virtual":false,"visibility":"internal"},{"body":{"id":643,"nodeType":"Block","src":"5694:46:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":639,"name":"_checkOwnerOrN2M","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"5704:16:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5704:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":641,"nodeType":"ExpressionStatement","src":"5704:18:6"},{"id":642,"nodeType":"PlaceholderStatement","src":"5732:1:6"}]},"id":644,"name":"onlyOwnerOrN2M","nameLocation":"5677:14:6","nodeType":"ModifierDefinition","parameters":{"id":638,"nodeType":"ParameterList","parameters":[],"src":"5691:2:6"},"src":"5668:72:6","virtual":false,"visibility":"internal"},{"body":{"id":650,"nodeType":"Block","src":"5765:39:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":646,"name":"_checkN2M","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":725,"src":"5775:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5775:11:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":648,"nodeType":"ExpressionStatement","src":"5775:11:6"},{"id":649,"nodeType":"PlaceholderStatement","src":"5796:1:6"}]},"id":651,"name":"onlyN2M","nameLocation":"5755:7:6","nodeType":"ModifierDefinition","parameters":{"id":645,"nodeType":"ParameterList","parameters":[],"src":"5762:2:6"},"src":"5746:58:6","virtual":false,"visibility":"internal"},{"documentation":{"id":652,"nodeType":"StructuredDocumentation","src":"5810:106:6","text":"@notice Returns the address of the current collection owner.\n @return The address of the owner."},"functionSelector":"8da5cb5b","id":657,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"5930:5:6","nodeType":"FunctionDefinition","parameters":{"id":653,"nodeType":"ParameterList","parameters":[],"src":"5935:2:6"},"returnParameters":{"id":656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":655,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":657,"src":"5967:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":654,"name":"address","nodeType":"ElementaryTypeName","src":"5967:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5966:9:6"},"scope":726,"src":"5921:55:6","stateMutability":"view","virtual":true,"visibility":"public"},{"id":662,"implemented":false,"kind":"function","modifiers":[],"name":"_strictOwner","nameLocation":"5990:12:6","nodeType":"FunctionDefinition","parameters":{"id":658,"nodeType":"ParameterList","parameters":[],"src":"6002:2:6"},"returnParameters":{"id":661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":660,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":662,"src":"6036:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":659,"name":"address","nodeType":"ElementaryTypeName","src":"6036:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6035:9:6"},"scope":726,"src":"5981:64:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"id":667,"implemented":false,"kind":"function","modifiers":[],"name":"_getN2MFeeAddress","nameLocation":"6059:17:6","nodeType":"FunctionDefinition","parameters":{"id":663,"nodeType":"ParameterList","parameters":[],"src":"6076:2:6"},"returnParameters":{"id":666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":667,"src":"6110:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":664,"name":"address","nodeType":"ElementaryTypeName","src":"6110:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6109:9:6"},"scope":726,"src":"6050:69:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":679,"nodeType":"Block","src":"6170:83:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":671,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"6188:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6188:7:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":673,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6199:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6203:6:6","memberName":"sender","nodeType":"MemberAccess","src":"6199:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6188:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6211:34:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":670,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6180:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6180:66:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":678,"nodeType":"ExpressionStatement","src":"6180:66:6"}]},"id":680,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"6134:11:6","nodeType":"FunctionDefinition","parameters":{"id":668,"nodeType":"ParameterList","parameters":[],"src":"6145:2:6"},"returnParameters":{"id":669,"nodeType":"ParameterList","parameters":[],"src":"6170:0:6"},"scope":726,"src":"6125:128:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":692,"nodeType":"Block","src":"6310:90:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":684,"name":"_strictOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":662,"src":"6328:12:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6328:14:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":686,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6346:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6350:6:6","memberName":"sender","nodeType":"MemberAccess","src":"6346:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6328:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6358:34:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":683,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6320:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6320:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":691,"nodeType":"ExpressionStatement","src":"6320:73:6"}]},"id":693,"implemented":true,"kind":"function","modifiers":[],"name":"_checkStrictOwner","nameLocation":"6268:17:6","nodeType":"FunctionDefinition","parameters":{"id":681,"nodeType":"ParameterList","parameters":[],"src":"6285:2:6"},"returnParameters":{"id":682,"nodeType":"ParameterList","parameters":[],"src":"6310:0:6"},"scope":726,"src":"6259:141:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":711,"nodeType":"Block","src":"6456:120:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":697,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"6474:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6474:7:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":699,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6485:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6489:6:6","memberName":"sender","nodeType":"MemberAccess","src":"6485:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6474:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":702,"name":"_getN2MFeeAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":667,"src":"6499:17:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6499:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":704,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6522:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6526:6:6","memberName":"sender","nodeType":"MemberAccess","src":"6522:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6499:33:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6474:58:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6534:34:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":696,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6466:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6466:103:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":710,"nodeType":"ExpressionStatement","src":"6466:103:6"}]},"id":712,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwnerOrN2M","nameLocation":"6415:16:6","nodeType":"FunctionDefinition","parameters":{"id":694,"nodeType":"ParameterList","parameters":[],"src":"6431:2:6"},"returnParameters":{"id":695,"nodeType":"ParameterList","parameters":[],"src":"6456:0:6"},"scope":726,"src":"6406:170:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":724,"nodeType":"Block","src":"6625:95:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":716,"name":"_getN2MFeeAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":667,"src":"6643:17:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6643:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":718,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6666:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6670:6:6","memberName":"sender","nodeType":"MemberAccess","src":"6666:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6643:33:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6678:34:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":715,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6635:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6635:78:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":723,"nodeType":"ExpressionStatement","src":"6635:78:6"}]},"id":725,"implemented":true,"kind":"function","modifiers":[],"name":"_checkN2M","nameLocation":"6591:9:6","nodeType":"FunctionDefinition","parameters":{"id":713,"nodeType":"ParameterList","parameters":[],"src":"6600:2:6"},"returnParameters":{"id":714,"nodeType":"ParameterList","parameters":[],"src":"6625:0:6"},"scope":726,"src":"6582:138:6","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":727,"src":"5355:1368:6","usedErrors":[]}],"src":"4913:1810:6"},"id":6},"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol","exportedSymbols":{"IVotesUpgradeable":[804]},"id":805,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":728,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IVotesUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":729,"nodeType":"StructuredDocumentation","src":"135:132:7","text":" @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\n _Available since v4.5._"},"fullyImplemented":false,"id":804,"linearizedBaseContracts":[804],"name":"IVotesUpgradeable","nameLocation":"278:17:7","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":730,"nodeType":"StructuredDocumentation","src":"302:71:7","text":" @dev Emitted when an account changes their delegate."},"eventSelector":"3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f","id":738,"name":"DelegateChanged","nameLocation":"384:15:7","nodeType":"EventDefinition","parameters":{"id":737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":732,"indexed":true,"mutability":"mutable","name":"delegator","nameLocation":"416:9:7","nodeType":"VariableDeclaration","scope":738,"src":"400:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":731,"name":"address","nodeType":"ElementaryTypeName","src":"400:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":734,"indexed":true,"mutability":"mutable","name":"fromDelegate","nameLocation":"443:12:7","nodeType":"VariableDeclaration","scope":738,"src":"427:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":733,"name":"address","nodeType":"ElementaryTypeName","src":"427:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":736,"indexed":true,"mutability":"mutable","name":"toDelegate","nameLocation":"473:10:7","nodeType":"VariableDeclaration","scope":738,"src":"457:26:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":735,"name":"address","nodeType":"ElementaryTypeName","src":"457:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"399:85:7"},"src":"378:107:7"},{"anonymous":false,"documentation":{"id":739,"nodeType":"StructuredDocumentation","src":"491:124:7","text":" @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes."},"eventSelector":"dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724","id":747,"name":"DelegateVotesChanged","nameLocation":"626:20:7","nodeType":"EventDefinition","parameters":{"id":746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":741,"indexed":true,"mutability":"mutable","name":"delegate","nameLocation":"663:8:7","nodeType":"VariableDeclaration","scope":747,"src":"647:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":740,"name":"address","nodeType":"ElementaryTypeName","src":"647:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":743,"indexed":false,"mutability":"mutable","name":"previousBalance","nameLocation":"681:15:7","nodeType":"VariableDeclaration","scope":747,"src":"673:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":742,"name":"uint256","nodeType":"ElementaryTypeName","src":"673:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":745,"indexed":false,"mutability":"mutable","name":"newBalance","nameLocation":"706:10:7","nodeType":"VariableDeclaration","scope":747,"src":"698:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":744,"name":"uint256","nodeType":"ElementaryTypeName","src":"698:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"646:71:7"},"src":"620:98:7"},{"documentation":{"id":748,"nodeType":"StructuredDocumentation","src":"724:79:7","text":" @dev Returns the current amount of votes that `account` has."},"functionSelector":"9ab24eb0","id":755,"implemented":false,"kind":"function","modifiers":[],"name":"getVotes","nameLocation":"817:8:7","nodeType":"FunctionDefinition","parameters":{"id":751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":750,"mutability":"mutable","name":"account","nameLocation":"834:7:7","nodeType":"VariableDeclaration","scope":755,"src":"826:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":749,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"825:17:7"},"returnParameters":{"id":754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":755,"src":"866:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":752,"name":"uint256","nodeType":"ElementaryTypeName","src":"866:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"865:9:7"},"scope":804,"src":"808:67:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":756,"nodeType":"StructuredDocumentation","src":"881:114:7","text":" @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`)."},"functionSelector":"3a46b1a8","id":765,"implemented":false,"kind":"function","modifiers":[],"name":"getPastVotes","nameLocation":"1009:12:7","nodeType":"FunctionDefinition","parameters":{"id":761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":758,"mutability":"mutable","name":"account","nameLocation":"1030:7:7","nodeType":"VariableDeclaration","scope":765,"src":"1022:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":757,"name":"address","nodeType":"ElementaryTypeName","src":"1022:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":760,"mutability":"mutable","name":"blockNumber","nameLocation":"1047:11:7","nodeType":"VariableDeclaration","scope":765,"src":"1039:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":759,"name":"uint256","nodeType":"ElementaryTypeName","src":"1039:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1021:38:7"},"returnParameters":{"id":764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":765,"src":"1083:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":762,"name":"uint256","nodeType":"ElementaryTypeName","src":"1083:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1082:9:7"},"scope":804,"src":"1000:92:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":766,"nodeType":"StructuredDocumentation","src":"1098:365:7","text":" @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\n NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\n Votes that have not been delegated are still part of total supply, even though they would not participate in a\n vote."},"functionSelector":"8e539e8c","id":773,"implemented":false,"kind":"function","modifiers":[],"name":"getPastTotalSupply","nameLocation":"1477:18:7","nodeType":"FunctionDefinition","parameters":{"id":769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":768,"mutability":"mutable","name":"blockNumber","nameLocation":"1504:11:7","nodeType":"VariableDeclaration","scope":773,"src":"1496:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":767,"name":"uint256","nodeType":"ElementaryTypeName","src":"1496:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1495:21:7"},"returnParameters":{"id":772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":773,"src":"1540:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":770,"name":"uint256","nodeType":"ElementaryTypeName","src":"1540:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1539:9:7"},"scope":804,"src":"1468:81:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":774,"nodeType":"StructuredDocumentation","src":"1555:71:7","text":" @dev Returns the delegate that `account` has chosen."},"functionSelector":"587cde1e","id":781,"implemented":false,"kind":"function","modifiers":[],"name":"delegates","nameLocation":"1640:9:7","nodeType":"FunctionDefinition","parameters":{"id":777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":776,"mutability":"mutable","name":"account","nameLocation":"1658:7:7","nodeType":"VariableDeclaration","scope":781,"src":"1650:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":775,"name":"address","nodeType":"ElementaryTypeName","src":"1650:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1649:17:7"},"returnParameters":{"id":780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":779,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":781,"src":"1690:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":778,"name":"address","nodeType":"ElementaryTypeName","src":"1690:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1689:9:7"},"scope":804,"src":"1631:68:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":782,"nodeType":"StructuredDocumentation","src":"1705:71:7","text":" @dev Delegates votes from the sender to `delegatee`."},"functionSelector":"5c19a95c","id":787,"implemented":false,"kind":"function","modifiers":[],"name":"delegate","nameLocation":"1790:8:7","nodeType":"FunctionDefinition","parameters":{"id":785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":784,"mutability":"mutable","name":"delegatee","nameLocation":"1807:9:7","nodeType":"VariableDeclaration","scope":787,"src":"1799:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"1799:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1798:19:7"},"returnParameters":{"id":786,"nodeType":"ParameterList","parameters":[],"src":"1826:0:7"},"scope":804,"src":"1781:46:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":788,"nodeType":"StructuredDocumentation","src":"1833:67:7","text":" @dev Delegates votes from signer to `delegatee`."},"functionSelector":"c3cda520","id":803,"implemented":false,"kind":"function","modifiers":[],"name":"delegateBySig","nameLocation":"1914:13:7","nodeType":"FunctionDefinition","parameters":{"id":801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":790,"mutability":"mutable","name":"delegatee","nameLocation":"1945:9:7","nodeType":"VariableDeclaration","scope":803,"src":"1937:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":789,"name":"address","nodeType":"ElementaryTypeName","src":"1937:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":792,"mutability":"mutable","name":"nonce","nameLocation":"1972:5:7","nodeType":"VariableDeclaration","scope":803,"src":"1964:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":791,"name":"uint256","nodeType":"ElementaryTypeName","src":"1964:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":794,"mutability":"mutable","name":"expiry","nameLocation":"1995:6:7","nodeType":"VariableDeclaration","scope":803,"src":"1987:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"1987:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":796,"mutability":"mutable","name":"v","nameLocation":"2017:1:7","nodeType":"VariableDeclaration","scope":803,"src":"2011:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":795,"name":"uint8","nodeType":"ElementaryTypeName","src":"2011:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":798,"mutability":"mutable","name":"r","nameLocation":"2036:1:7","nodeType":"VariableDeclaration","scope":803,"src":"2028:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":797,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2028:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":800,"mutability":"mutable","name":"s","nameLocation":"2055:1:7","nodeType":"VariableDeclaration","scope":803,"src":"2047:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":799,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2047:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1927:135:7"},"returnParameters":{"id":802,"nodeType":"ParameterList","parameters":[],"src":"2071:0:7"},"scope":804,"src":"1905:167:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":805,"src":"268:1806:7","usedErrors":[]}],"src":"110:1965:7"},"id":7},"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"CheckpointsUpgradeable":[6447],"ContextUpgradeable":[6489],"CountersUpgradeable":[6563],"ECDSAUpgradeable":[7099],"EIP712Upgradeable":[7249],"IVotesUpgradeable":[804],"Initializable":[1466],"MathUpgradeable":[8170],"SafeCastUpgradeable":[9711],"StringsUpgradeable":[6738],"VotesUpgradeable":[1278]},"id":1279,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":806,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:8"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../../utils/ContextUpgradeable.sol","id":807,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1279,"sourceUnit":6490,"src":"134:44:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","file":"../../utils/CountersUpgradeable.sol","id":808,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1279,"sourceUnit":6564,"src":"179:45:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol","file":"../../utils/CheckpointsUpgradeable.sol","id":809,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1279,"sourceUnit":6448,"src":"225:48:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","file":"../../utils/cryptography/EIP712Upgradeable.sol","id":810,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1279,"sourceUnit":7250,"src":"274:56:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol","file":"./IVotesUpgradeable.sol","id":811,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1279,"sourceUnit":805,"src":"331:33:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":812,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1279,"sourceUnit":1467,"src":"365:45:8","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":814,"name":"Initializable","nameLocations":["1809:13:8"],"nodeType":"IdentifierPath","referencedDeclaration":1466,"src":"1809:13:8"},"id":815,"nodeType":"InheritanceSpecifier","src":"1809:13:8"},{"baseName":{"id":816,"name":"IVotesUpgradeable","nameLocations":["1824:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":804,"src":"1824:17:8"},"id":817,"nodeType":"InheritanceSpecifier","src":"1824:17:8"},{"baseName":{"id":818,"name":"ContextUpgradeable","nameLocations":["1843:18:8"],"nodeType":"IdentifierPath","referencedDeclaration":6489,"src":"1843:18:8"},"id":819,"nodeType":"InheritanceSpecifier","src":"1843:18:8"},{"baseName":{"id":820,"name":"EIP712Upgradeable","nameLocations":["1863:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":7249,"src":"1863:17:8"},"id":821,"nodeType":"InheritanceSpecifier","src":"1863:17:8"}],"canonicalName":"VotesUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":813,"nodeType":"StructuredDocumentation","src":"412:1358:8","text":" @dev This is a base abstract contract that tracks voting units, which are a measure of voting power that can be\n transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of\n \"representative\" that will pool delegated voting units from different accounts and can then use it to vote in\n decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to\n delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative.\n This contract is often combined with a token contract such that voting units correspond to token units. For an\n example, see {ERC721Votes}.\n The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed\n at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the\n cost of this history tracking optional.\n When using this module the derived contract must implement {_getVotingUnits} (for example, make it return\n {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the\n previous example, it would be included in {ERC721-_beforeTokenTransfer}).\n _Available since v4.5._"},"fullyImplemented":false,"id":1278,"linearizedBaseContracts":[1278,7249,6489,804,1466],"name":"VotesUpgradeable","nameLocation":"1789:16:8","nodeType":"ContractDefinition","nodes":[{"body":{"id":826,"nodeType":"Block","src":"1937:7:8","statements":[]},"id":827,"implemented":true,"kind":"function","modifiers":[{"id":824,"kind":"modifierInvocation","modifierName":{"id":823,"name":"onlyInitializing","nameLocations":["1920:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"1920:16:8"},"nodeType":"ModifierInvocation","src":"1920:16:8"}],"name":"__Votes_init","nameLocation":"1896:12:8","nodeType":"FunctionDefinition","parameters":{"id":822,"nodeType":"ParameterList","parameters":[],"src":"1908:2:8"},"returnParameters":{"id":825,"nodeType":"ParameterList","parameters":[],"src":"1937:0:8"},"scope":1278,"src":"1887:57:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":832,"nodeType":"Block","src":"2010:7:8","statements":[]},"id":833,"implemented":true,"kind":"function","modifiers":[{"id":830,"kind":"modifierInvocation","modifierName":{"id":829,"name":"onlyInitializing","nameLocations":["1993:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"1993:16:8"},"nodeType":"ModifierInvocation","src":"1993:16:8"}],"name":"__Votes_init_unchained","nameLocation":"1959:22:8","nodeType":"FunctionDefinition","parameters":{"id":828,"nodeType":"ParameterList","parameters":[],"src":"1981:2:8"},"returnParameters":{"id":831,"nodeType":"ParameterList","parameters":[],"src":"2010:0:8"},"scope":1278,"src":"1950:67:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"global":false,"id":837,"libraryName":{"id":834,"name":"CheckpointsUpgradeable","nameLocations":["2028:22:8"],"nodeType":"IdentifierPath","referencedDeclaration":6447,"src":"2028:22:8"},"nodeType":"UsingForDirective","src":"2022:64:8","typeName":{"id":836,"nodeType":"UserDefinedTypeName","pathNode":{"id":835,"name":"CheckpointsUpgradeable.History","nameLocations":["2055:22:8","2078:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":5086,"src":"2055:30:8"},"referencedDeclaration":5086,"src":"2055:30:8","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}}},{"global":false,"id":841,"libraryName":{"id":838,"name":"CountersUpgradeable","nameLocations":["2097:19:8"],"nodeType":"IdentifierPath","referencedDeclaration":6563,"src":"2097:19:8"},"nodeType":"UsingForDirective","src":"2091:58:8","typeName":{"id":840,"nodeType":"UserDefinedTypeName","pathNode":{"id":839,"name":"CountersUpgradeable.Counter","nameLocations":["2121:19:8","2141:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":6495,"src":"2121:27:8"},"referencedDeclaration":6495,"src":"2121:27:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}}},{"constant":true,"id":846,"mutability":"constant","name":"_DELEGATION_TYPEHASH","nameLocation":"2180:20:8","nodeType":"VariableDeclaration","scope":1278,"src":"2155:127:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":842,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2155:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"44656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929","id":844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2221:60:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_e48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf","typeString":"literal_string \"Delegation(address delegatee,uint256 nonce,uint256 expiry)\""},"value":"Delegation(address delegatee,uint256 nonce,uint256 expiry)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf","typeString":"literal_string \"Delegation(address delegatee,uint256 nonce,uint256 expiry)\""}],"id":843,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2211:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2211:71:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":850,"mutability":"mutable","name":"_delegation","nameLocation":"2325:11:8","nodeType":"VariableDeclaration","scope":1278,"src":"2289:47:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":849,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":847,"name":"address","nodeType":"ElementaryTypeName","src":"2297:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2289:27:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":848,"name":"address","nodeType":"ElementaryTypeName","src":"2308:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":855,"mutability":"mutable","name":"_delegateCheckpoints","nameLocation":"2401:20:8","nodeType":"VariableDeclaration","scope":1278,"src":"2342:79:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$5086_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History)"},"typeName":{"id":854,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":851,"name":"address","nodeType":"ElementaryTypeName","src":"2350:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2342:50:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$5086_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":853,"nodeType":"UserDefinedTypeName","pathNode":{"id":852,"name":"CheckpointsUpgradeable.History","nameLocations":["2361:22:8","2384:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":5086,"src":"2361:30:8"},"referencedDeclaration":5086,"src":"2361:30:8","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}}},"visibility":"private"},{"constant":false,"id":858,"mutability":"mutable","name":"_totalCheckpoints","nameLocation":"2466:17:8","nodeType":"VariableDeclaration","scope":1278,"src":"2427:56:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":857,"nodeType":"UserDefinedTypeName","pathNode":{"id":856,"name":"CheckpointsUpgradeable.History","nameLocations":["2427:22:8","2450:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":5086,"src":"2427:30:8"},"referencedDeclaration":5086,"src":"2427:30:8","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"private"},{"constant":false,"id":863,"mutability":"mutable","name":"_nonces","nameLocation":"2546:7:8","nodeType":"VariableDeclaration","scope":1278,"src":"2490:63:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Counter_$6495_storage_$","typeString":"mapping(address => struct CountersUpgradeable.Counter)"},"typeName":{"id":862,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":859,"name":"address","nodeType":"ElementaryTypeName","src":"2498:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2490:47:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Counter_$6495_storage_$","typeString":"mapping(address => struct CountersUpgradeable.Counter)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":861,"nodeType":"UserDefinedTypeName","pathNode":{"id":860,"name":"CountersUpgradeable.Counter","nameLocations":["2509:19:8","2529:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":6495,"src":"2509:27:8"},"referencedDeclaration":6495,"src":"2509:27:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}}},"visibility":"private"},{"baseFunctions":[755],"body":{"id":878,"nodeType":"Block","src":"2726:62:8","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":872,"name":"_delegateCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"2743:20:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$5086_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History storage ref)"}},"id":874,"indexExpression":{"id":873,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":866,"src":"2764:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2743:29:8","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2773:6:8","memberName":"latest","nodeType":"MemberAccess","referencedDeclaration":5340,"src":"2743:36:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$5086_storage_ptr_$returns$_t_uint224_$attached_to$_t_struct$_History_$5086_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer) view returns (uint224)"}},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2743:38:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":871,"id":877,"nodeType":"Return","src":"2736:45:8"}]},"documentation":{"id":864,"nodeType":"StructuredDocumentation","src":"2560:79:8","text":" @dev Returns the current amount of votes that `account` has."},"functionSelector":"9ab24eb0","id":879,"implemented":true,"kind":"function","modifiers":[],"name":"getVotes","nameLocation":"2653:8:8","nodeType":"FunctionDefinition","overrides":{"id":868,"nodeType":"OverrideSpecifier","overrides":[],"src":"2699:8:8"},"parameters":{"id":867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":866,"mutability":"mutable","name":"account","nameLocation":"2670:7:8","nodeType":"VariableDeclaration","scope":879,"src":"2662:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":865,"name":"address","nodeType":"ElementaryTypeName","src":"2662:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2661:17:8"},"returnParameters":{"id":871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":870,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":879,"src":"2717:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":869,"name":"uint256","nodeType":"ElementaryTypeName","src":"2717:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2716:9:8"},"scope":1278,"src":"2644:144:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[765],"body":{"id":897,"nodeType":"Block","src":"3107:91:8","statements":[{"expression":{"arguments":[{"id":894,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":884,"src":"3179:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":890,"name":"_delegateCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"3124:20:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$5086_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History storage ref)"}},"id":892,"indexExpression":{"id":891,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"3145:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3124:29:8","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":893,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3154:24:8","memberName":"getAtProbablyRecentBlock","nodeType":"MemberAccess","referencedDeclaration":5248,"src":"3124:54:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$5086_storage_ptr_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_History_$5086_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) view returns (uint256)"}},"id":895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3124:67:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":889,"id":896,"nodeType":"Return","src":"3117:74:8"}]},"documentation":{"id":880,"nodeType":"StructuredDocumentation","src":"2794:201:8","text":" @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\n Requirements:\n - `blockNumber` must have been already mined"},"functionSelector":"3a46b1a8","id":898,"implemented":true,"kind":"function","modifiers":[],"name":"getPastVotes","nameLocation":"3009:12:8","nodeType":"FunctionDefinition","overrides":{"id":886,"nodeType":"OverrideSpecifier","overrides":[],"src":"3080:8:8"},"parameters":{"id":885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":882,"mutability":"mutable","name":"account","nameLocation":"3030:7:8","nodeType":"VariableDeclaration","scope":898,"src":"3022:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":881,"name":"address","nodeType":"ElementaryTypeName","src":"3022:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":884,"mutability":"mutable","name":"blockNumber","nameLocation":"3047:11:8","nodeType":"VariableDeclaration","scope":898,"src":"3039:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":883,"name":"uint256","nodeType":"ElementaryTypeName","src":"3039:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3021:38:8"},"returnParameters":{"id":889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":888,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":898,"src":"3098:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":887,"name":"uint256","nodeType":"ElementaryTypeName","src":"3098:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3097:9:8"},"scope":1278,"src":"3000:198:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[773],"body":{"id":920,"nodeType":"Block","src":"3757:154:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":908,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"3775:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":909,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3789:5:8","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3795:6:8","memberName":"number","nodeType":"MemberAccess","src":"3789:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3775:26:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"566f7465733a20626c6f636b206e6f7420796574206d696e6564","id":912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3803:28:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_83c09804cf777c619c7ba082380b263866073c54e541883e3b7cb00a4aa7fe69","typeString":"literal_string \"Votes: block not yet mined\""},"value":"Votes: block not yet mined"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_83c09804cf777c619c7ba082380b263866073c54e541883e3b7cb00a4aa7fe69","typeString":"literal_string \"Votes: block not yet mined\""}],"id":907,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3767:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3767:65:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":914,"nodeType":"ExpressionStatement","src":"3767:65:8"},{"expression":{"arguments":[{"id":917,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"3892:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":915,"name":"_totalCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"3849:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":916,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3867:24:8","memberName":"getAtProbablyRecentBlock","nodeType":"MemberAccess","referencedDeclaration":5248,"src":"3849:42:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$5086_storage_ptr_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_History_$5086_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) view returns (uint256)"}},"id":918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3849:55:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":906,"id":919,"nodeType":"Return","src":"3842:62:8"}]},"documentation":{"id":899,"nodeType":"StructuredDocumentation","src":"3204:452:8","text":" @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\n NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\n Votes that have not been delegated are still part of total supply, even though they would not participate in a\n vote.\n Requirements:\n - `blockNumber` must have been already mined"},"functionSelector":"8e539e8c","id":921,"implemented":true,"kind":"function","modifiers":[],"name":"getPastTotalSupply","nameLocation":"3670:18:8","nodeType":"FunctionDefinition","overrides":{"id":903,"nodeType":"OverrideSpecifier","overrides":[],"src":"3730:8:8"},"parameters":{"id":902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":901,"mutability":"mutable","name":"blockNumber","nameLocation":"3697:11:8","nodeType":"VariableDeclaration","scope":921,"src":"3689:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":900,"name":"uint256","nodeType":"ElementaryTypeName","src":"3689:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3688:21:8"},"returnParameters":{"id":906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":905,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":921,"src":"3748:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":904,"name":"uint256","nodeType":"ElementaryTypeName","src":"3748:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3747:9:8"},"scope":1278,"src":"3661:250:8","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":931,"nodeType":"Block","src":"4055:50:8","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":927,"name":"_totalCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"4072:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":928,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4090:6:8","memberName":"latest","nodeType":"MemberAccess","referencedDeclaration":5340,"src":"4072:24:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$5086_storage_ptr_$returns$_t_uint224_$attached_to$_t_struct$_History_$5086_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer) view returns (uint224)"}},"id":929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4072:26:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":926,"id":930,"nodeType":"Return","src":"4065:33:8"}]},"documentation":{"id":922,"nodeType":"StructuredDocumentation","src":"3917:66:8","text":" @dev Returns the current total supply of votes."},"id":932,"implemented":true,"kind":"function","modifiers":[],"name":"_getTotalSupply","nameLocation":"3997:15:8","nodeType":"FunctionDefinition","parameters":{"id":923,"nodeType":"ParameterList","parameters":[],"src":"4012:2:8"},"returnParameters":{"id":926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":925,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":932,"src":"4046:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":924,"name":"uint256","nodeType":"ElementaryTypeName","src":"4046:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4045:9:8"},"scope":1278,"src":"3988:117:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[781],"body":{"id":945,"nodeType":"Block","src":"4270:44:8","statements":[{"expression":{"baseExpression":{"id":941,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":850,"src":"4287:11:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":943,"indexExpression":{"id":942,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":935,"src":"4299:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4287:20:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":940,"id":944,"nodeType":"Return","src":"4280:27:8"}]},"documentation":{"id":933,"nodeType":"StructuredDocumentation","src":"4111:71:8","text":" @dev Returns the delegate that `account` has chosen."},"functionSelector":"587cde1e","id":946,"implemented":true,"kind":"function","modifiers":[],"name":"delegates","nameLocation":"4196:9:8","nodeType":"FunctionDefinition","overrides":{"id":937,"nodeType":"OverrideSpecifier","overrides":[],"src":"4243:8:8"},"parameters":{"id":936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":935,"mutability":"mutable","name":"account","nameLocation":"4214:7:8","nodeType":"VariableDeclaration","scope":946,"src":"4206:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":934,"name":"address","nodeType":"ElementaryTypeName","src":"4206:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4205:17:8"},"returnParameters":{"id":940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":939,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":946,"src":"4261:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":938,"name":"address","nodeType":"ElementaryTypeName","src":"4261:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4260:9:8"},"scope":1278,"src":"4187:127:8","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[787],"body":{"id":963,"nodeType":"Block","src":"4457:86:8","statements":[{"assignments":[954],"declarations":[{"constant":false,"id":954,"mutability":"mutable","name":"account","nameLocation":"4475:7:8","nodeType":"VariableDeclaration","scope":963,"src":"4467:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":953,"name":"address","nodeType":"ElementaryTypeName","src":"4467:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":957,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":955,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"4485:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4485:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4467:30:8"},{"expression":{"arguments":[{"id":959,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"4517:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":960,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":949,"src":"4526:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":958,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1059,"src":"4507:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4507:29:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":962,"nodeType":"ExpressionStatement","src":"4507:29:8"}]},"documentation":{"id":947,"nodeType":"StructuredDocumentation","src":"4320:71:8","text":" @dev Delegates votes from the sender to `delegatee`."},"functionSelector":"5c19a95c","id":964,"implemented":true,"kind":"function","modifiers":[],"name":"delegate","nameLocation":"4405:8:8","nodeType":"FunctionDefinition","overrides":{"id":951,"nodeType":"OverrideSpecifier","overrides":[],"src":"4448:8:8"},"parameters":{"id":950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":949,"mutability":"mutable","name":"delegatee","nameLocation":"4422:9:8","nodeType":"VariableDeclaration","scope":964,"src":"4414:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":948,"name":"address","nodeType":"ElementaryTypeName","src":"4414:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4413:19:8"},"returnParameters":{"id":952,"nodeType":"ParameterList","parameters":[],"src":"4457:0:8"},"scope":1278,"src":"4396:147:8","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[803],"body":{"id":1023,"nodeType":"Block","src":"4803:393:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":982,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4821:5:8","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4827:9:8","memberName":"timestamp","nodeType":"MemberAccess","src":"4821:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":984,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"4840:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4821:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"566f7465733a207369676e61747572652065787069726564","id":986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4848:26:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d5ff3f347872d51f9a2d63fc6e49268c6b2f830105a4897008d3883d68bc66f","typeString":"literal_string \"Votes: signature expired\""},"value":"Votes: signature expired"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d5ff3f347872d51f9a2d63fc6e49268c6b2f830105a4897008d3883d68bc66f","typeString":"literal_string \"Votes: signature expired\""}],"id":981,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4813:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4813:62:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":988,"nodeType":"ExpressionStatement","src":"4813:62:8"},{"assignments":[990],"declarations":[{"constant":false,"id":990,"mutability":"mutable","name":"signer","nameLocation":"4893:6:8","nodeType":"VariableDeclaration","scope":1023,"src":"4885:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":989,"name":"address","nodeType":"ElementaryTypeName","src":"4885:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1008,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":997,"name":"_DELEGATION_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":846,"src":"4978:20:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":998,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":967,"src":"5000:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":999,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"5011:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1000,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"5018:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":995,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4967:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4971:6:8","memberName":"encode","nodeType":"MemberAccess","src":"4967:10:8","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4967:58:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":994,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4957:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4957:69:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":993,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7225,"src":"4940:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4940:87:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1004,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"5041:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1005,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"5056:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1006,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"5071:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":991,"name":"ECDSAUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"4902:16:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSAUpgradeable_$7099_$","typeString":"type(library ECDSAUpgradeable)"}},"id":992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4919:7:8","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":7039,"src":"4902:24:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4902:180:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4885:197:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1010,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"5100:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":1012,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":990,"src":"5119:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1011,"name":"_useNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"5109:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":1013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5109:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5100:26:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"566f7465733a20696e76616c6964206e6f6e6365","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5128:22:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_13ff7ccc79996334a065c9426876e6554e1ae6a3f574e0ced02fc6062a794b0c","typeString":"literal_string \"Votes: invalid nonce\""},"value":"Votes: invalid nonce"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13ff7ccc79996334a065c9426876e6554e1ae6a3f574e0ced02fc6062a794b0c","typeString":"literal_string \"Votes: invalid nonce\""}],"id":1009,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5092:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5092:59:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1017,"nodeType":"ExpressionStatement","src":"5092:59:8"},{"expression":{"arguments":[{"id":1019,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":990,"src":"5171:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1020,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":967,"src":"5179:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1018,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1059,"src":"5161:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5161:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1022,"nodeType":"ExpressionStatement","src":"5161:28:8"}]},"documentation":{"id":965,"nodeType":"StructuredDocumentation","src":"4549:67:8","text":" @dev Delegates votes from signer to `delegatee`."},"functionSelector":"c3cda520","id":1024,"implemented":true,"kind":"function","modifiers":[],"name":"delegateBySig","nameLocation":"4630:13:8","nodeType":"FunctionDefinition","overrides":{"id":979,"nodeType":"OverrideSpecifier","overrides":[],"src":"4794:8:8"},"parameters":{"id":978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":967,"mutability":"mutable","name":"delegatee","nameLocation":"4661:9:8","nodeType":"VariableDeclaration","scope":1024,"src":"4653:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":966,"name":"address","nodeType":"ElementaryTypeName","src":"4653:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":969,"mutability":"mutable","name":"nonce","nameLocation":"4688:5:8","nodeType":"VariableDeclaration","scope":1024,"src":"4680:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":968,"name":"uint256","nodeType":"ElementaryTypeName","src":"4680:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":971,"mutability":"mutable","name":"expiry","nameLocation":"4711:6:8","nodeType":"VariableDeclaration","scope":1024,"src":"4703:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":970,"name":"uint256","nodeType":"ElementaryTypeName","src":"4703:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":973,"mutability":"mutable","name":"v","nameLocation":"4733:1:8","nodeType":"VariableDeclaration","scope":1024,"src":"4727:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":972,"name":"uint8","nodeType":"ElementaryTypeName","src":"4727:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":975,"mutability":"mutable","name":"r","nameLocation":"4752:1:8","nodeType":"VariableDeclaration","scope":1024,"src":"4744:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":974,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4744:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":977,"mutability":"mutable","name":"s","nameLocation":"4771:1:8","nodeType":"VariableDeclaration","scope":1024,"src":"4763:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":976,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4763:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4643:135:8"},"returnParameters":{"id":980,"nodeType":"ParameterList","parameters":[],"src":"4803:0:8"},"scope":1278,"src":"4621:575:8","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1058,"nodeType":"Block","src":"5446:241:8","statements":[{"assignments":[1033],"declarations":[{"constant":false,"id":1033,"mutability":"mutable","name":"oldDelegate","nameLocation":"5464:11:8","nodeType":"VariableDeclaration","scope":1058,"src":"5456:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1032,"name":"address","nodeType":"ElementaryTypeName","src":"5456:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1037,"initialValue":{"arguments":[{"id":1035,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1027,"src":"5488:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1034,"name":"delegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":946,"src":"5478:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5478:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5456:40:8"},{"expression":{"id":1042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1038,"name":"_delegation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":850,"src":"5506:11:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":1040,"indexExpression":{"id":1039,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1027,"src":"5518:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5506:20:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1041,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"5529:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5506:32:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1043,"nodeType":"ExpressionStatement","src":"5506:32:8"},{"eventCall":{"arguments":[{"id":1045,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1027,"src":"5570:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1046,"name":"oldDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1033,"src":"5579:11:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1047,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"5592:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1044,"name":"DelegateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"5554:15:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5554:48:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1049,"nodeType":"EmitStatement","src":"5549:53:8"},{"expression":{"arguments":[{"id":1051,"name":"oldDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1033,"src":"5631:11:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1052,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"5644:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1054,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1027,"src":"5671:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1053,"name":"_getVotingUnits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"5655:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5655:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1050,"name":"_moveDelegateVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"5612:18:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5612:68:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1057,"nodeType":"ExpressionStatement","src":"5612:68:8"}]},"documentation":{"id":1025,"nodeType":"StructuredDocumentation","src":"5202:167:8","text":" @dev Delegate all of `account`'s voting units to `delegatee`.\n Emits events {IVotes-DelegateChanged} and {IVotes-DelegateVotesChanged}."},"id":1059,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"5383:9:8","nodeType":"FunctionDefinition","parameters":{"id":1030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1027,"mutability":"mutable","name":"account","nameLocation":"5401:7:8","nodeType":"VariableDeclaration","scope":1059,"src":"5393:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1026,"name":"address","nodeType":"ElementaryTypeName","src":"5393:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1029,"mutability":"mutable","name":"delegatee","nameLocation":"5418:9:8","nodeType":"VariableDeclaration","scope":1059,"src":"5410:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1028,"name":"address","nodeType":"ElementaryTypeName","src":"5410:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5392:36:8"},"returnParameters":{"id":1031,"nodeType":"ParameterList","parameters":[],"src":"5446:0:8"},"scope":1278,"src":"5374:313:8","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1109,"nodeType":"Block","src":"6040:266:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1069,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1062,"src":"6054:4:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6070:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6062:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1070,"name":"address","nodeType":"ElementaryTypeName","src":"6062:7:8","typeDescriptions":{}}},"id":1073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6062:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6054:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1083,"nodeType":"IfStatement","src":"6050:85:8","trueBody":{"id":1082,"nodeType":"Block","src":"6074:61:8","statements":[{"expression":{"arguments":[{"id":1078,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1196,"src":"6111:4:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},{"id":1079,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1066,"src":"6117:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1075,"name":"_totalCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"6088:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":1077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6106:4:8","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":5310,"src":"6088:22:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$5086_storage_ptr_$_t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_struct$_History_$5086_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,function (uint256,uint256) view returns (uint256),uint256) returns (uint256,uint256)"}},"id":1080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6088:36:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":1081,"nodeType":"ExpressionStatement","src":"6088:36:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1084,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1064,"src":"6148:2:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6162:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6154:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1085,"name":"address","nodeType":"ElementaryTypeName","src":"6154:7:8","typeDescriptions":{}}},"id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6154:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6148:16:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1098,"nodeType":"IfStatement","src":"6144:88:8","trueBody":{"id":1097,"nodeType":"Block","src":"6166:66:8","statements":[{"expression":{"arguments":[{"id":1093,"name":"_subtract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1210,"src":"6203:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},{"id":1094,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1066,"src":"6214:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1090,"name":"_totalCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"6180:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":1092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6198:4:8","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":5310,"src":"6180:22:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$5086_storage_ptr_$_t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_struct$_History_$5086_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,function (uint256,uint256) view returns (uint256),uint256) returns (uint256,uint256)"}},"id":1095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6180:41:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":1096,"nodeType":"ExpressionStatement","src":"6180:41:8"}]}},{"expression":{"arguments":[{"arguments":[{"id":1101,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1062,"src":"6270:4:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1100,"name":"delegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":946,"src":"6260:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6260:15:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1104,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1064,"src":"6287:2:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1103,"name":"delegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":946,"src":"6277:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_address_$","typeString":"function (address) view returns (address)"}},"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6277:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1106,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1066,"src":"6292:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1099,"name":"_moveDelegateVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"6241:18:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6241:58:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1108,"nodeType":"ExpressionStatement","src":"6241:58:8"}]},"documentation":{"id":1060,"nodeType":"StructuredDocumentation","src":"5693:223:8","text":" @dev Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to`\n should be zero. Total supply of voting units will be adjusted with mints and burns."},"id":1110,"implemented":true,"kind":"function","modifiers":[],"name":"_transferVotingUnits","nameLocation":"5930:20:8","nodeType":"FunctionDefinition","parameters":{"id":1067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1062,"mutability":"mutable","name":"from","nameLocation":"5968:4:8","nodeType":"VariableDeclaration","scope":1110,"src":"5960:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1061,"name":"address","nodeType":"ElementaryTypeName","src":"5960:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1064,"mutability":"mutable","name":"to","nameLocation":"5990:2:8","nodeType":"VariableDeclaration","scope":1110,"src":"5982:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1063,"name":"address","nodeType":"ElementaryTypeName","src":"5982:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1066,"mutability":"mutable","name":"amount","nameLocation":"6010:6:8","nodeType":"VariableDeclaration","scope":1110,"src":"6002:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1065,"name":"uint256","nodeType":"ElementaryTypeName","src":"6002:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5950:72:8"},"returnParameters":{"id":1068,"nodeType":"ParameterList","parameters":[],"src":"6040:0:8"},"scope":1278,"src":"5921:385:8","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1181,"nodeType":"Block","src":"6500:502:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1120,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"6514:4:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1121,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"6522:2:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6514:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1123,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"6528:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6537:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6528:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6514:24:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1180,"nodeType":"IfStatement","src":"6510:486:8","trueBody":{"id":1179,"nodeType":"Block","src":"6540:456:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1127,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"6558:4:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6574:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6566:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1128,"name":"address","nodeType":"ElementaryTypeName","src":"6566:7:8","typeDescriptions":{}}},"id":1131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6566:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6558:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1152,"nodeType":"IfStatement","src":"6554:215:8","trueBody":{"id":1151,"nodeType":"Block","src":"6578:191:8","statements":[{"assignments":[1134,1136],"declarations":[{"constant":false,"id":1134,"mutability":"mutable","name":"oldValue","nameLocation":"6605:8:8","nodeType":"VariableDeclaration","scope":1151,"src":"6597:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1133,"name":"uint256","nodeType":"ElementaryTypeName","src":"6597:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1136,"mutability":"mutable","name":"newValue","nameLocation":"6623:8:8","nodeType":"VariableDeclaration","scope":1151,"src":"6615:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1135,"name":"uint256","nodeType":"ElementaryTypeName","src":"6615:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1144,"initialValue":{"arguments":[{"id":1141,"name":"_subtract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1210,"src":"6667:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},{"id":1142,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"6678:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":1137,"name":"_delegateCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"6635:20:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$5086_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History storage ref)"}},"id":1139,"indexExpression":{"id":1138,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"6656:4:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6635:26:8","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":1140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6662:4:8","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":5310,"src":"6635:31:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$5086_storage_ptr_$_t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_struct$_History_$5086_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,function (uint256,uint256) view returns (uint256),uint256) returns (uint256,uint256)"}},"id":1143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6635:50:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6596:89:8"},{"eventCall":{"arguments":[{"id":1146,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"6729:4:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1147,"name":"oldValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1134,"src":"6735:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1148,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1136,"src":"6745:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1145,"name":"DelegateVotesChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"6708:20:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":1149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6708:46:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1150,"nodeType":"EmitStatement","src":"6703:51:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1153,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"6786:2:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6800:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6792:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1154,"name":"address","nodeType":"ElementaryTypeName","src":"6792:7:8","typeDescriptions":{}}},"id":1157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6792:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6786:16:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1178,"nodeType":"IfStatement","src":"6782:204:8","trueBody":{"id":1177,"nodeType":"Block","src":"6804:182:8","statements":[{"assignments":[1160,1162],"declarations":[{"constant":false,"id":1160,"mutability":"mutable","name":"oldValue","nameLocation":"6831:8:8","nodeType":"VariableDeclaration","scope":1177,"src":"6823:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1159,"name":"uint256","nodeType":"ElementaryTypeName","src":"6823:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1162,"mutability":"mutable","name":"newValue","nameLocation":"6849:8:8","nodeType":"VariableDeclaration","scope":1177,"src":"6841:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1161,"name":"uint256","nodeType":"ElementaryTypeName","src":"6841:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1170,"initialValue":{"arguments":[{"id":1167,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1196,"src":"6891:4:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},{"id":1168,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"6897:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":1163,"name":"_delegateCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"6861:20:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$5086_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History storage ref)"}},"id":1165,"indexExpression":{"id":1164,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"6882:2:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6861:24:8","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":1166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6886:4:8","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":5310,"src":"6861:29:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$5086_storage_ptr_$_t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_struct$_History_$5086_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,function (uint256,uint256) view returns (uint256),uint256) returns (uint256,uint256)"}},"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6861:43:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6822:82:8"},{"eventCall":{"arguments":[{"id":1172,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"6948:2:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1173,"name":"oldValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"6952:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1174,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"6962:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1171,"name":"DelegateVotesChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"6927:20:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":1175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6927:44:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1176,"nodeType":"EmitStatement","src":"6922:49:8"}]}}]}}]},"documentation":{"id":1111,"nodeType":"StructuredDocumentation","src":"6312:75:8","text":" @dev Moves delegated votes from one delegate to another."},"id":1182,"implemented":true,"kind":"function","modifiers":[],"name":"_moveDelegateVotes","nameLocation":"6401:18:8","nodeType":"FunctionDefinition","parameters":{"id":1118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1113,"mutability":"mutable","name":"from","nameLocation":"6437:4:8","nodeType":"VariableDeclaration","scope":1182,"src":"6429:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1112,"name":"address","nodeType":"ElementaryTypeName","src":"6429:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1115,"mutability":"mutable","name":"to","nameLocation":"6459:2:8","nodeType":"VariableDeclaration","scope":1182,"src":"6451:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1114,"name":"address","nodeType":"ElementaryTypeName","src":"6451:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1117,"mutability":"mutable","name":"amount","nameLocation":"6479:6:8","nodeType":"VariableDeclaration","scope":1182,"src":"6471:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1116,"name":"uint256","nodeType":"ElementaryTypeName","src":"6471:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6419:72:8"},"returnParameters":{"id":1119,"nodeType":"ParameterList","parameters":[],"src":"6500:0:8"},"scope":1278,"src":"6392:610:8","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1195,"nodeType":"Block","src":"7075:29:8","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1191,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1184,"src":"7092:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1192,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1186,"src":"7096:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7092:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1190,"id":1194,"nodeType":"Return","src":"7085:12:8"}]},"id":1196,"implemented":true,"kind":"function","modifiers":[],"name":"_add","nameLocation":"7017:4:8","nodeType":"FunctionDefinition","parameters":{"id":1187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1184,"mutability":"mutable","name":"a","nameLocation":"7030:1:8","nodeType":"VariableDeclaration","scope":1196,"src":"7022:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1183,"name":"uint256","nodeType":"ElementaryTypeName","src":"7022:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1186,"mutability":"mutable","name":"b","nameLocation":"7041:1:8","nodeType":"VariableDeclaration","scope":1196,"src":"7033:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1185,"name":"uint256","nodeType":"ElementaryTypeName","src":"7033:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7021:22:8"},"returnParameters":{"id":1190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1189,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1196,"src":"7066:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1188,"name":"uint256","nodeType":"ElementaryTypeName","src":"7066:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7065:9:8"},"scope":1278,"src":"7008:96:8","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1209,"nodeType":"Block","src":"7182:29:8","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1198,"src":"7199:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1206,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1200,"src":"7203:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7199:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1204,"id":1208,"nodeType":"Return","src":"7192:12:8"}]},"id":1210,"implemented":true,"kind":"function","modifiers":[],"name":"_subtract","nameLocation":"7119:9:8","nodeType":"FunctionDefinition","parameters":{"id":1201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1198,"mutability":"mutable","name":"a","nameLocation":"7137:1:8","nodeType":"VariableDeclaration","scope":1210,"src":"7129:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1197,"name":"uint256","nodeType":"ElementaryTypeName","src":"7129:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1200,"mutability":"mutable","name":"b","nameLocation":"7148:1:8","nodeType":"VariableDeclaration","scope":1210,"src":"7140:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1199,"name":"uint256","nodeType":"ElementaryTypeName","src":"7140:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7128:22:8"},"returnParameters":{"id":1204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1203,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1210,"src":"7173:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1202,"name":"uint256","nodeType":"ElementaryTypeName","src":"7173:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7172:9:8"},"scope":1278,"src":"7110:101:8","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1238,"nodeType":"Block","src":"7402:137:8","statements":[{"assignments":[1222],"declarations":[{"constant":false,"id":1222,"mutability":"mutable","name":"nonce","nameLocation":"7448:5:8","nodeType":"VariableDeclaration","scope":1238,"src":"7412:41:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":1221,"nodeType":"UserDefinedTypeName","pathNode":{"id":1220,"name":"CountersUpgradeable.Counter","nameLocations":["7412:19:8","7432:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":6495,"src":"7412:27:8"},"referencedDeclaration":6495,"src":"7412:27:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"id":1226,"initialValue":{"baseExpression":{"id":1223,"name":"_nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"7456:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Counter_$6495_storage_$","typeString":"mapping(address => struct CountersUpgradeable.Counter storage ref)"}},"id":1225,"indexExpression":{"id":1224,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"7464:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7456:14:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage","typeString":"struct CountersUpgradeable.Counter storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7412:58:8"},{"expression":{"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1227,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1216,"src":"7480:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1228,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"7490:5:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":1229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7496:7:8","memberName":"current","nodeType":"MemberAccess","referencedDeclaration":6507,"src":"7490:13:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Counter_$6495_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$6495_storage_ptr_$","typeString":"function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"}},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7490:15:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7480:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1232,"nodeType":"ExpressionStatement","src":"7480:25:8"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1233,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"7515:5:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":1235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7521:9:8","memberName":"increment","nodeType":"MemberAccess","referencedDeclaration":6521,"src":"7515:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Counter_$6495_storage_ptr_$returns$__$attached_to$_t_struct$_Counter_$6495_storage_ptr_$","typeString":"function (struct CountersUpgradeable.Counter storage pointer)"}},"id":1236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7515:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1237,"nodeType":"ExpressionStatement","src":"7515:17:8"}]},"documentation":{"id":1211,"nodeType":"StructuredDocumentation","src":"7217:103:8","text":" @dev Consumes a nonce.\n Returns the current value and increments nonce."},"id":1239,"implemented":true,"kind":"function","modifiers":[],"name":"_useNonce","nameLocation":"7334:9:8","nodeType":"FunctionDefinition","parameters":{"id":1214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1213,"mutability":"mutable","name":"owner","nameLocation":"7352:5:8","nodeType":"VariableDeclaration","scope":1239,"src":"7344:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1212,"name":"address","nodeType":"ElementaryTypeName","src":"7344:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7343:15:8"},"returnParameters":{"id":1217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1216,"mutability":"mutable","name":"current","nameLocation":"7393:7:8","nodeType":"VariableDeclaration","scope":1239,"src":"7385:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1215,"name":"uint256","nodeType":"ElementaryTypeName","src":"7385:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7384:17:8"},"scope":1278,"src":"7325:214:8","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1253,"nodeType":"Block","src":"7668:48:8","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":1247,"name":"_nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"7685:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Counter_$6495_storage_$","typeString":"mapping(address => struct CountersUpgradeable.Counter storage ref)"}},"id":1249,"indexExpression":{"id":1248,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1242,"src":"7693:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7685:14:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage","typeString":"struct CountersUpgradeable.Counter storage ref"}},"id":1250,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7700:7:8","memberName":"current","nodeType":"MemberAccess","referencedDeclaration":6507,"src":"7685:22:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Counter_$6495_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$6495_storage_ptr_$","typeString":"function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"}},"id":1251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7685:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1246,"id":1252,"nodeType":"Return","src":"7678:31:8"}]},"documentation":{"id":1240,"nodeType":"StructuredDocumentation","src":"7545:49:8","text":" @dev Returns an address nonce."},"functionSelector":"7ecebe00","id":1254,"implemented":true,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"7608:6:8","nodeType":"FunctionDefinition","parameters":{"id":1243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1242,"mutability":"mutable","name":"owner","nameLocation":"7623:5:8","nodeType":"VariableDeclaration","scope":1254,"src":"7615:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1241,"name":"address","nodeType":"ElementaryTypeName","src":"7615:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7614:15:8"},"returnParameters":{"id":1246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1254,"src":"7659:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1244,"name":"uint256","nodeType":"ElementaryTypeName","src":"7659:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7658:9:8"},"scope":1278,"src":"7599:117:8","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1263,"nodeType":"Block","src":"7913:44:8","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1260,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7182,"src":"7930:18:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7930:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1259,"id":1262,"nodeType":"Return","src":"7923:27:8"}]},"documentation":{"id":1255,"nodeType":"StructuredDocumentation","src":"7722:73:8","text":" @dev Returns the contract's {EIP712} domain separator."},"functionSelector":"3644e515","id":1264,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"7862:16:8","nodeType":"FunctionDefinition","parameters":{"id":1256,"nodeType":"ParameterList","parameters":[],"src":"7878:2:8"},"returnParameters":{"id":1259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1264,"src":"7904:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1257,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7904:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7903:9:8"},"scope":1278,"src":"7853:104:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1265,"nodeType":"StructuredDocumentation","src":"7963:72:8","text":" @dev Must return the voting units held by an account."},"id":1272,"implemented":false,"kind":"function","modifiers":[],"name":"_getVotingUnits","nameLocation":"8049:15:8","nodeType":"FunctionDefinition","parameters":{"id":1268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1272,"src":"8065:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1266,"name":"address","nodeType":"ElementaryTypeName","src":"8065:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8064:9:8"},"returnParameters":{"id":1271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1270,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1272,"src":"8105:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1269,"name":"uint256","nodeType":"ElementaryTypeName","src":"8105:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8104:9:8"},"scope":1278,"src":"8040:74:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":1273,"nodeType":"StructuredDocumentation","src":"8120:254:8","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":1277,"mutability":"mutable","name":"__gap","nameLocation":"8399:5:8","nodeType":"VariableDeclaration","scope":1278,"src":"8379:25:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$46_storage","typeString":"uint256[46]"},"typeName":{"baseType":{"id":1274,"name":"uint256","nodeType":"ElementaryTypeName","src":"8379:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1276,"length":{"hexValue":"3436","id":1275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8387:2:8","typeDescriptions":{"typeIdentifier":"t_rational_46_by_1","typeString":"int_const 46"},"value":"46"},"nodeType":"ArrayTypeName","src":"8379:11:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$46_storage_ptr","typeString":"uint256[46]"}},"visibility":"private"}],"scope":1279,"src":"1771:6636:8","usedErrors":[]}],"src":"109:8299:8"},"id":8},"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol","exportedSymbols":{"IERC165Upgradeable":[7305],"IERC2981Upgradeable":[1297]},"id":1298,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1280,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:9"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","file":"../utils/introspection/IERC165Upgradeable.sol","id":1281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1298,"sourceUnit":7306,"src":"132:55:9","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1283,"name":"IERC165Upgradeable","nameLocations":["512:18:9"],"nodeType":"IdentifierPath","referencedDeclaration":7305,"src":"512:18:9"},"id":1284,"nodeType":"InheritanceSpecifier","src":"512:18:9"}],"canonicalName":"IERC2981Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1282,"nodeType":"StructuredDocumentation","src":"189:289:9","text":" @dev Interface for the NFT Royalty Standard.\n A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\n support for royalty payments across all NFT marketplaces and ecosystem participants.\n _Available since v4.5._"},"fullyImplemented":false,"id":1297,"linearizedBaseContracts":[1297,7305],"name":"IERC2981Upgradeable","nameLocation":"489:19:9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1285,"nodeType":"StructuredDocumentation","src":"537:231:9","text":" @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\n exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"functionSelector":"2a55205a","id":1296,"implemented":false,"kind":"function","modifiers":[],"name":"royaltyInfo","nameLocation":"782:11:9","nodeType":"FunctionDefinition","parameters":{"id":1290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1287,"mutability":"mutable","name":"tokenId","nameLocation":"802:7:9","nodeType":"VariableDeclaration","scope":1296,"src":"794:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1286,"name":"uint256","nodeType":"ElementaryTypeName","src":"794:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1289,"mutability":"mutable","name":"salePrice","nameLocation":"819:9:9","nodeType":"VariableDeclaration","scope":1296,"src":"811:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1288,"name":"uint256","nodeType":"ElementaryTypeName","src":"811:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"793:36:9"},"returnParameters":{"id":1295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1292,"mutability":"mutable","name":"receiver","nameLocation":"885:8:9","nodeType":"VariableDeclaration","scope":1296,"src":"877:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1291,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1294,"mutability":"mutable","name":"royaltyAmount","nameLocation":"903:13:9","nodeType":"VariableDeclaration","scope":1296,"src":"895:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1293,"name":"uint256","nodeType":"ElementaryTypeName","src":"895:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"876:41:9"},"scope":1297,"src":"773:145:9","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1298,"src":"479:441:9","usedErrors":[]}],"src":"107:814:9"},"id":9},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"Initializable":[1466]},"id":1467,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1299,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:10"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":1300,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1467,"sourceUnit":5077,"src":"138:44:10","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1301,"nodeType":"StructuredDocumentation","src":"184:2198:10","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":1466,"linearizedBaseContracts":[1466],"name":"Initializable","nameLocation":"2401:13:10","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"2421:109:10","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":1304,"mutability":"mutable","name":"_initialized","nameLocation":"2549:12:10","nodeType":"VariableDeclaration","scope":1466,"src":"2535:26:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1303,"name":"uint8","nodeType":"ElementaryTypeName","src":"2535:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":1305,"nodeType":"StructuredDocumentation","src":"2568:91:10","text":" @dev Indicates that the contract is in the process of being initialized."},"id":1307,"mutability":"mutable","name":"_initializing","nameLocation":"2677:13:10","nodeType":"VariableDeclaration","scope":1466,"src":"2664:26:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1306,"name":"bool","nodeType":"ElementaryTypeName","src":"2664:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":1308,"nodeType":"StructuredDocumentation","src":"2697:90:10","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":1312,"name":"Initialized","nameLocation":"2798:11:10","nodeType":"EventDefinition","parameters":{"id":1311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1310,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2816:7:10","nodeType":"VariableDeclaration","scope":1312,"src":"2810:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1309,"name":"uint8","nodeType":"ElementaryTypeName","src":"2810:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2809:15:10"},"src":"2792:33:10"},{"body":{"id":1367,"nodeType":"Block","src":"3258:483:10","statements":[{"assignments":[1316],"declarations":[{"constant":false,"id":1316,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3273:14:10","nodeType":"VariableDeclaration","scope":1367,"src":"3268:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1315,"name":"bool","nodeType":"ElementaryTypeName","src":"3268:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1319,"initialValue":{"id":1318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3290:14:10","subExpression":{"id":1317,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"3291:13:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3268:36:10"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1321,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"3336:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1322,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1304,"src":"3354:12:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":1323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3369:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3354:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3336:34:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1326,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3335:36:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3376:45:10","subExpression":{"arguments":[{"arguments":[{"id":1331,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3415:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$1466","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$1466","typeString":"contract Initializable"}],"id":1330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3407:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1329,"name":"address","nodeType":"ElementaryTypeName","src":"3407:7:10","typeDescriptions":{}}},"id":1332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3407:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1327,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"3377:18:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$5076_$","typeString":"type(library AddressUpgradeable)"}},"id":1328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3396:10:10","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":4810,"src":"3377:29:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3377:44:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1335,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1304,"src":"3425:12:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3441:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3425:17:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3376:66:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1339,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3375:68:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3335:108:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":1341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3457:48:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":1320,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3314:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3314:201:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1343,"nodeType":"ExpressionStatement","src":"3314:201:10"},{"expression":{"id":1346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1344,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1304,"src":"3525:12:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":1345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3540:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3525:16:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1347,"nodeType":"ExpressionStatement","src":"3525:16:10"},{"condition":{"id":1348,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"3555:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1354,"nodeType":"IfStatement","src":"3551:65:10","trueBody":{"id":1353,"nodeType":"Block","src":"3571:45:10","statements":[{"expression":{"id":1351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1349,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"3585:13:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3601:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3585:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1352,"nodeType":"ExpressionStatement","src":"3585:20:10"}]}},{"id":1355,"nodeType":"PlaceholderStatement","src":"3625:1:10"},{"condition":{"id":1356,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"3640:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1366,"nodeType":"IfStatement","src":"3636:99:10","trueBody":{"id":1365,"nodeType":"Block","src":"3656:79:10","statements":[{"expression":{"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1357,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"3670:13:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3686:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3670:21:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1360,"nodeType":"ExpressionStatement","src":"3670:21:10"},{"eventCall":{"arguments":[{"hexValue":"31","id":1362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3722:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":1361,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1312,"src":"3710:11:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":1363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3710:14:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1364,"nodeType":"EmitStatement","src":"3705:19:10"}]}}]},"documentation":{"id":1313,"nodeType":"StructuredDocumentation","src":"2831:399:10","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":1368,"name":"initializer","nameLocation":"3244:11:10","nodeType":"ModifierDefinition","parameters":{"id":1314,"nodeType":"ParameterList","parameters":[],"src":"3255:2:10"},"src":"3235:506:10","virtual":false,"visibility":"internal"},{"body":{"id":1400,"nodeType":"Block","src":"4852:255:10","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4870:14:10","subExpression":{"id":1374,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"4871:13:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1376,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1304,"src":"4888:12:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1377,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"4903:7:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4888:22:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4870:40:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":1380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4912:48:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":1373,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4862:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4862:99:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1382,"nodeType":"ExpressionStatement","src":"4862:99:10"},{"expression":{"id":1385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1383,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1304,"src":"4971:12:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1384,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"4986:7:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4971:22:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1386,"nodeType":"ExpressionStatement","src":"4971:22:10"},{"expression":{"id":1389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1387,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"5003:13:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5019:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5003:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1390,"nodeType":"ExpressionStatement","src":"5003:20:10"},{"id":1391,"nodeType":"PlaceholderStatement","src":"5033:1:10"},{"expression":{"id":1394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1392,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"5044:13:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5060:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5044:21:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1395,"nodeType":"ExpressionStatement","src":"5044:21:10"},{"eventCall":{"arguments":[{"id":1397,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"5092:7:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1396,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1312,"src":"5080:11:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5080:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1399,"nodeType":"EmitStatement","src":"5075:25:10"}]},"documentation":{"id":1369,"nodeType":"StructuredDocumentation","src":"3747:1062:10","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":1401,"name":"reinitializer","nameLocation":"4823:13:10","nodeType":"ModifierDefinition","parameters":{"id":1372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1371,"mutability":"mutable","name":"version","nameLocation":"4843:7:10","nodeType":"VariableDeclaration","scope":1401,"src":"4837:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1370,"name":"uint8","nodeType":"ElementaryTypeName","src":"4837:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4836:15:10"},"src":"4814:293:10","virtual":false,"visibility":"internal"},{"body":{"id":1410,"nodeType":"Block","src":"5345:97:10","statements":[{"expression":{"arguments":[{"id":1405,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"5363:13:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":1406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5378:45:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":1404,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5355:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5355:69:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1408,"nodeType":"ExpressionStatement","src":"5355:69:10"},{"id":1409,"nodeType":"PlaceholderStatement","src":"5434:1:10"}]},"documentation":{"id":1402,"nodeType":"StructuredDocumentation","src":"5113:199:10","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":1411,"name":"onlyInitializing","nameLocation":"5326:16:10","nodeType":"ModifierDefinition","parameters":{"id":1403,"nodeType":"ParameterList","parameters":[],"src":"5342:2:10"},"src":"5317:125:10","virtual":false,"visibility":"internal"},{"body":{"id":1446,"nodeType":"Block","src":"5977:230:10","statements":[{"expression":{"arguments":[{"id":1417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5995:14:10","subExpression":{"id":1416,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"5996:13:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6011:41:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":1415,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5987:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5987:66:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1420,"nodeType":"ExpressionStatement","src":"5987:66:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1421,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1304,"src":"6067:12:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":1424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6087:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1423,"name":"uint8","nodeType":"ElementaryTypeName","src":"6087:5:10","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":1422,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6082:4:10","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6082:11:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":1426,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6094:3:10","memberName":"max","nodeType":"MemberAccess","src":"6082:15:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6067:30:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1445,"nodeType":"IfStatement","src":"6063:138:10","trueBody":{"id":1444,"nodeType":"Block","src":"6099:102:10","statements":[{"expression":{"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1428,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1304,"src":"6113:12:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":1431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6133:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1430,"name":"uint8","nodeType":"ElementaryTypeName","src":"6133:5:10","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":1429,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6128:4:10","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6128:11:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":1433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6140:3:10","memberName":"max","nodeType":"MemberAccess","src":"6128:15:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6113:30:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1435,"nodeType":"ExpressionStatement","src":"6113:30:10"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":1439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6179:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1438,"name":"uint8","nodeType":"ElementaryTypeName","src":"6179:5:10","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":1437,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6174:4:10","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:11:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":1441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6186:3:10","memberName":"max","nodeType":"MemberAccess","src":"6174:15:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1436,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1312,"src":"6162:11:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":1442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6162:28:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1443,"nodeType":"EmitStatement","src":"6157:33:10"}]}}]},"documentation":{"id":1412,"nodeType":"StructuredDocumentation","src":"5448:475:10","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":1447,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5937:20:10","nodeType":"FunctionDefinition","parameters":{"id":1413,"nodeType":"ParameterList","parameters":[],"src":"5957:2:10"},"returnParameters":{"id":1414,"nodeType":"ParameterList","parameters":[],"src":"5977:0:10"},"scope":1466,"src":"5928:279:10","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1455,"nodeType":"Block","src":"6381:36:10","statements":[{"expression":{"id":1453,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1304,"src":"6398:12:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":1452,"id":1454,"nodeType":"Return","src":"6391:19:10"}]},"documentation":{"id":1448,"nodeType":"StructuredDocumentation","src":"6213:99:10","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":1456,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6326:22:10","nodeType":"FunctionDefinition","parameters":{"id":1449,"nodeType":"ParameterList","parameters":[],"src":"6348:2:10"},"returnParameters":{"id":1452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1456,"src":"6374:5:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1450,"name":"uint8","nodeType":"ElementaryTypeName","src":"6374:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6373:7:10"},"scope":1466,"src":"6317:100:10","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1464,"nodeType":"Block","src":"6589:37:10","statements":[{"expression":{"id":1462,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"6606:13:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1461,"id":1463,"nodeType":"Return","src":"6599:20:10"}]},"documentation":{"id":1457,"nodeType":"StructuredDocumentation","src":"6423:105:10","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":1465,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6542:15:10","nodeType":"FunctionDefinition","parameters":{"id":1458,"nodeType":"ParameterList","parameters":[],"src":"6557:2:10"},"returnParameters":{"id":1461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1460,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1465,"src":"6583:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1459,"name":"bool","nodeType":"ElementaryTypeName","src":"6583:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6582:6:10"},"scope":1466,"src":"6533:93:10","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1467,"src":"2383:4245:10","usedErrors":[]}],"src":"113:6516:10"},"id":10},"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"ContextUpgradeable":[6489],"ERC1155Upgradeable":[2711],"ERC165Upgradeable":[7293],"IERC1155MetadataURIUpgradeable":[3066],"IERC1155ReceiverUpgradeable":[2752],"IERC1155Upgradeable":[2874],"IERC165Upgradeable":[7305],"Initializable":[1466]},"id":2712,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1468,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:11"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol","file":"./IERC1155Upgradeable.sol","id":1469,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2712,"sourceUnit":2875,"src":"134:35:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol","file":"./IERC1155ReceiverUpgradeable.sol","id":1470,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2712,"sourceUnit":2753,"src":"170:43:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol","file":"./extensions/IERC1155MetadataURIUpgradeable.sol","id":1471,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2712,"sourceUnit":3067,"src":"214:57:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":1472,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2712,"sourceUnit":5077,"src":"272:44:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../../utils/ContextUpgradeable.sol","id":1473,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2712,"sourceUnit":6490,"src":"317:44:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"../../utils/introspection/ERC165Upgradeable.sol","id":1474,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2712,"sourceUnit":7294,"src":"362:57:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":1475,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2712,"sourceUnit":1467,"src":"420:45:11","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1477,"name":"Initializable","nameLocations":["713:13:11"],"nodeType":"IdentifierPath","referencedDeclaration":1466,"src":"713:13:11"},"id":1478,"nodeType":"InheritanceSpecifier","src":"713:13:11"},{"baseName":{"id":1479,"name":"ContextUpgradeable","nameLocations":["728:18:11"],"nodeType":"IdentifierPath","referencedDeclaration":6489,"src":"728:18:11"},"id":1480,"nodeType":"InheritanceSpecifier","src":"728:18:11"},{"baseName":{"id":1481,"name":"ERC165Upgradeable","nameLocations":["748:17:11"],"nodeType":"IdentifierPath","referencedDeclaration":7293,"src":"748:17:11"},"id":1482,"nodeType":"InheritanceSpecifier","src":"748:17:11"},{"baseName":{"id":1483,"name":"IERC1155Upgradeable","nameLocations":["767:19:11"],"nodeType":"IdentifierPath","referencedDeclaration":2874,"src":"767:19:11"},"id":1484,"nodeType":"InheritanceSpecifier","src":"767:19:11"},{"baseName":{"id":1485,"name":"IERC1155MetadataURIUpgradeable","nameLocations":["788:30:11"],"nodeType":"IdentifierPath","referencedDeclaration":3066,"src":"788:30:11"},"id":1486,"nodeType":"InheritanceSpecifier","src":"788:30:11"}],"canonicalName":"ERC1155Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1476,"nodeType":"StructuredDocumentation","src":"467:214:11","text":" @dev Implementation of the basic standard multi-token.\n See https://eips.ethereum.org/EIPS/eip-1155\n Originally based on code by Enjin: https://github.com/enjin/erc-1155\n _Available since v3.1._"},"fullyImplemented":true,"id":2711,"linearizedBaseContracts":[2711,3066,2874,7293,7305,6489,1466],"name":"ERC1155Upgradeable","nameLocation":"691:18:11","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1489,"libraryName":{"id":1487,"name":"AddressUpgradeable","nameLocations":["831:18:11"],"nodeType":"IdentifierPath","referencedDeclaration":5076,"src":"831:18:11"},"nodeType":"UsingForDirective","src":"825:37:11","typeName":{"id":1488,"name":"address","nodeType":"ElementaryTypeName","src":"854:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"id":1495,"mutability":"mutable","name":"_balances","nameLocation":"973:9:11","nodeType":"VariableDeclaration","scope":2711,"src":"917:65:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"},"typeName":{"id":1494,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":1490,"name":"uint256","nodeType":"ElementaryTypeName","src":"925:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"917:47:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1493,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":1491,"name":"address","nodeType":"ElementaryTypeName","src":"944:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"936:27:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1492,"name":"uint256","nodeType":"ElementaryTypeName","src":"955:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":1501,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1092:18:11","nodeType":"VariableDeclaration","scope":2711,"src":"1039:71:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":1500,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":1496,"name":"address","nodeType":"ElementaryTypeName","src":"1047:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1039:44:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1499,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":1497,"name":"address","nodeType":"ElementaryTypeName","src":"1066:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1058:24:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1498,"name":"bool","nodeType":"ElementaryTypeName","src":"1077:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"constant":false,"id":1503,"mutability":"mutable","name":"_uri","nameLocation":"1246:4:11","nodeType":"VariableDeclaration","scope":2711,"src":"1231:19:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1502,"name":"string","nodeType":"ElementaryTypeName","src":"1231:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":1515,"nodeType":"Block","src":"1370:47:11","statements":[{"expression":{"arguments":[{"id":1512,"name":"uri_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1506,"src":"1405:4:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1511,"name":"__ERC1155_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"1380:24:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1380:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1514,"nodeType":"ExpressionStatement","src":"1380:30:11"}]},"documentation":{"id":1504,"nodeType":"StructuredDocumentation","src":"1257:38:11","text":" @dev See {_setURI}."},"id":1516,"implemented":true,"kind":"function","modifiers":[{"id":1509,"kind":"modifierInvocation","modifierName":{"id":1508,"name":"onlyInitializing","nameLocations":["1353:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"1353:16:11"},"nodeType":"ModifierInvocation","src":"1353:16:11"}],"name":"__ERC1155_init","nameLocation":"1309:14:11","nodeType":"FunctionDefinition","parameters":{"id":1507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1506,"mutability":"mutable","name":"uri_","nameLocation":"1338:4:11","nodeType":"VariableDeclaration","scope":1516,"src":"1324:18:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1505,"name":"string","nodeType":"ElementaryTypeName","src":"1324:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1323:20:11"},"returnParameters":{"id":1510,"nodeType":"ParameterList","parameters":[],"src":"1370:0:11"},"scope":2711,"src":"1300:117:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1527,"nodeType":"Block","src":"1503:30:11","statements":[{"expression":{"arguments":[{"id":1524,"name":"uri_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1518,"src":"1521:4:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1523,"name":"_setURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2039,"src":"1513:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1513:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1526,"nodeType":"ExpressionStatement","src":"1513:13:11"}]},"id":1528,"implemented":true,"kind":"function","modifiers":[{"id":1521,"kind":"modifierInvocation","modifierName":{"id":1520,"name":"onlyInitializing","nameLocations":["1486:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"1486:16:11"},"nodeType":"ModifierInvocation","src":"1486:16:11"}],"name":"__ERC1155_init_unchained","nameLocation":"1432:24:11","nodeType":"FunctionDefinition","parameters":{"id":1519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1518,"mutability":"mutable","name":"uri_","nameLocation":"1471:4:11","nodeType":"VariableDeclaration","scope":1528,"src":"1457:18:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1517,"name":"string","nodeType":"ElementaryTypeName","src":"1457:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1456:20:11"},"returnParameters":{"id":1522,"nodeType":"ParameterList","parameters":[],"src":"1503:0:11"},"scope":2711,"src":"1423:110:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[7287,7304],"body":{"id":1558,"nodeType":"Block","src":"1730:219:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1539,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1531,"src":"1759:11:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1541,"name":"IERC1155Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2874,"src":"1779:19:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Upgradeable_$2874_$","typeString":"type(contract IERC1155Upgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1155Upgradeable_$2874_$","typeString":"type(contract IERC1155Upgradeable)"}],"id":1540,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1774:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1774:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1155Upgradeable_$2874","typeString":"type(contract IERC1155Upgradeable)"}},"id":1543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1800:11:11","memberName":"interfaceId","nodeType":"MemberAccess","src":"1774:37:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1759:52:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1545,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1531,"src":"1827:11:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1547,"name":"IERC1155MetadataURIUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"1847:30:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155MetadataURIUpgradeable_$3066_$","typeString":"type(contract IERC1155MetadataURIUpgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1155MetadataURIUpgradeable_$3066_$","typeString":"type(contract IERC1155MetadataURIUpgradeable)"}],"id":1546,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1842:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1842:36:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1155MetadataURIUpgradeable_$3066","typeString":"type(contract IERC1155MetadataURIUpgradeable)"}},"id":1549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1879:11:11","memberName":"interfaceId","nodeType":"MemberAccess","src":"1842:48:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1827:63:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1759:131:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1554,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1531,"src":"1930:11:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1552,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1906:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC1155Upgradeable_$2711_$","typeString":"type(contract super ERC1155Upgradeable)"}},"id":1553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1912:17:11","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":7287,"src":"1906:23:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1906:36:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1759:183:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1538,"id":1557,"nodeType":"Return","src":"1740:202:11"}]},"documentation":{"id":1529,"nodeType":"StructuredDocumentation","src":"1539:56:11","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":1559,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1609:17:11","nodeType":"FunctionDefinition","overrides":{"id":1535,"nodeType":"OverrideSpecifier","overrides":[{"id":1533,"name":"ERC165Upgradeable","nameLocations":["1676:17:11"],"nodeType":"IdentifierPath","referencedDeclaration":7293,"src":"1676:17:11"},{"id":1534,"name":"IERC165Upgradeable","nameLocations":["1695:18:11"],"nodeType":"IdentifierPath","referencedDeclaration":7305,"src":"1695:18:11"}],"src":"1667:47:11"},"parameters":{"id":1532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1531,"mutability":"mutable","name":"interfaceId","nameLocation":"1634:11:11","nodeType":"VariableDeclaration","scope":1559,"src":"1627:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1530,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1627:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1626:20:11"},"returnParameters":{"id":1538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1537,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1559,"src":"1724:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1536,"name":"bool","nodeType":"ElementaryTypeName","src":"1724:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1723:6:11"},"scope":2711,"src":"1600:349:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3065],"body":{"id":1570,"nodeType":"Block","src":"2423:28:11","statements":[{"expression":{"id":1568,"name":"_uri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1503,"src":"2440:4:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1567,"id":1569,"nodeType":"Return","src":"2433:11:11"}]},"documentation":{"id":1560,"nodeType":"StructuredDocumentation","src":"1955:388:11","text":" @dev See {IERC1155MetadataURI-uri}.\n This implementation returns the same URI for *all* token types. It relies\n on the token type ID substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n Clients calling this function must replace the `\\{id\\}` substring with the\n actual token type ID."},"functionSelector":"0e89341c","id":1571,"implemented":true,"kind":"function","modifiers":[],"name":"uri","nameLocation":"2357:3:11","nodeType":"FunctionDefinition","overrides":{"id":1564,"nodeType":"OverrideSpecifier","overrides":[],"src":"2390:8:11"},"parameters":{"id":1563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"2361:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1561,"name":"uint256","nodeType":"ElementaryTypeName","src":"2361:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2360:9:11"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1571,"src":"2408:13:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1565,"name":"string","nodeType":"ElementaryTypeName","src":"2408:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2407:15:11"},"scope":2711,"src":"2348:103:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2812],"body":{"id":1598,"nodeType":"Block","src":"2688:132:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1583,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"2706:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2725:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2717:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1584,"name":"address","nodeType":"ElementaryTypeName","src":"2717:7:11","typeDescriptions":{}}},"id":1587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2717:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2706:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":1589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2729:44:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad","typeString":"literal_string \"ERC1155: address zero is not a valid owner\""},"value":"ERC1155: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad","typeString":"literal_string \"ERC1155: address zero is not a valid owner\""}],"id":1582,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2698:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2698:76:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1591,"nodeType":"ExpressionStatement","src":"2698:76:11"},{"expression":{"baseExpression":{"baseExpression":{"id":1592,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"2791:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":1594,"indexExpression":{"id":1593,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1576,"src":"2801:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2791:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1596,"indexExpression":{"id":1595,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"2805:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2791:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1581,"id":1597,"nodeType":"Return","src":"2784:29:11"}]},"documentation":{"id":1572,"nodeType":"StructuredDocumentation","src":"2457:131:11","text":" @dev See {IERC1155-balanceOf}.\n Requirements:\n - `account` cannot be the zero address."},"functionSelector":"00fdd58e","id":1599,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2602:9:11","nodeType":"FunctionDefinition","overrides":{"id":1578,"nodeType":"OverrideSpecifier","overrides":[],"src":"2661:8:11"},"parameters":{"id":1577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1574,"mutability":"mutable","name":"account","nameLocation":"2620:7:11","nodeType":"VariableDeclaration","scope":1599,"src":"2612:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1573,"name":"address","nodeType":"ElementaryTypeName","src":"2612:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1576,"mutability":"mutable","name":"id","nameLocation":"2637:2:11","nodeType":"VariableDeclaration","scope":1599,"src":"2629:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1575,"name":"uint256","nodeType":"ElementaryTypeName","src":"2629:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2611:29:11"},"returnParameters":{"id":1581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1580,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"2679:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1579,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2678:9:11"},"scope":2711,"src":"2593:227:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2825],"body":{"id":1662,"nodeType":"Block","src":"3150:335:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1614,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1603,"src":"3168:8:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3177:6:11","memberName":"length","nodeType":"MemberAccess","src":"3168:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1616,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1606,"src":"3187:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3191:6:11","memberName":"length","nodeType":"MemberAccess","src":"3187:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3168:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368","id":1619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3199:43:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5","typeString":"literal_string \"ERC1155: accounts and ids length mismatch\""},"value":"ERC1155: accounts and ids length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5","typeString":"literal_string \"ERC1155: accounts and ids length mismatch\""}],"id":1613,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3160:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3160:83:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1621,"nodeType":"ExpressionStatement","src":"3160:83:11"},{"assignments":[1626],"declarations":[{"constant":false,"id":1626,"mutability":"mutable","name":"batchBalances","nameLocation":"3271:13:11","nodeType":"VariableDeclaration","scope":1662,"src":"3254:30:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1624,"name":"uint256","nodeType":"ElementaryTypeName","src":"3254:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1625,"nodeType":"ArrayTypeName","src":"3254:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":1633,"initialValue":{"arguments":[{"expression":{"id":1630,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1603,"src":"3301:8:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3310:6:11","memberName":"length","nodeType":"MemberAccess","src":"3301:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3287:13:11","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":1627,"name":"uint256","nodeType":"ElementaryTypeName","src":"3291:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1628,"nodeType":"ArrayTypeName","src":"3291:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":1632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3287:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3254:63:11"},{"body":{"id":1658,"nodeType":"Block","src":"3374:74:11","statements":[{"expression":{"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1645,"name":"batchBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1626,"src":"3388:13:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1647,"indexExpression":{"id":1646,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"3402:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3388:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":1649,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1603,"src":"3417:8:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1651,"indexExpression":{"id":1650,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"3426:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3417:11:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":1652,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1606,"src":"3430:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1654,"indexExpression":{"id":1653,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"3434:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3430:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1648,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1599,"src":"3407:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":1655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3407:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3388:49:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1657,"nodeType":"ExpressionStatement","src":"3388:49:11"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1638,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"3348:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1639,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1603,"src":"3352:8:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3361:6:11","memberName":"length","nodeType":"MemberAccess","src":"3352:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3348:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1659,"initializationExpression":{"assignments":[1635],"declarations":[{"constant":false,"id":1635,"mutability":"mutable","name":"i","nameLocation":"3341:1:11","nodeType":"VariableDeclaration","scope":1659,"src":"3333:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1634,"name":"uint256","nodeType":"ElementaryTypeName","src":"3333:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1637,"initialValue":{"hexValue":"30","id":1636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3345:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3333:13:11"},"loopExpression":{"expression":{"id":1643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3369:3:11","subExpression":{"id":1642,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"3371:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1644,"nodeType":"ExpressionStatement","src":"3369:3:11"},"nodeType":"ForStatement","src":"3328:120:11"},{"expression":{"id":1660,"name":"batchBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1626,"src":"3465:13:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":1612,"id":1661,"nodeType":"Return","src":"3458:20:11"}]},"documentation":{"id":1600,"nodeType":"StructuredDocumentation","src":"2826:146:11","text":" @dev See {IERC1155-balanceOfBatch}.\n Requirements:\n - `accounts` and `ids` must have the same length."},"functionSelector":"4e1273f4","id":1663,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOfBatch","nameLocation":"2986:14:11","nodeType":"FunctionDefinition","overrides":{"id":1608,"nodeType":"OverrideSpecifier","overrides":[],"src":"3102:8:11"},"parameters":{"id":1607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1603,"mutability":"mutable","name":"accounts","nameLocation":"3018:8:11","nodeType":"VariableDeclaration","scope":1663,"src":"3001:25:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1601,"name":"address","nodeType":"ElementaryTypeName","src":"3001:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1602,"nodeType":"ArrayTypeName","src":"3001:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1606,"mutability":"mutable","name":"ids","nameLocation":"3045:3:11","nodeType":"VariableDeclaration","scope":1663,"src":"3028:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1604,"name":"uint256","nodeType":"ElementaryTypeName","src":"3028:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1605,"nodeType":"ArrayTypeName","src":"3028:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3000:49:11"},"returnParameters":{"id":1612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1663,"src":"3128:16:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1609,"name":"uint256","nodeType":"ElementaryTypeName","src":"3128:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1610,"nodeType":"ArrayTypeName","src":"3128:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3127:18:11"},"scope":2711,"src":"2977:508:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2833],"body":{"id":1679,"nodeType":"Block","src":"3637:69:11","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1673,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"3666:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3666:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1675,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"3680:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1676,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"3690:8:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1672,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"3647:18:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3647:52:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1678,"nodeType":"ExpressionStatement","src":"3647:52:11"}]},"documentation":{"id":1664,"nodeType":"StructuredDocumentation","src":"3491:57:11","text":" @dev See {IERC1155-setApprovalForAll}."},"functionSelector":"a22cb465","id":1680,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"3562:17:11","nodeType":"FunctionDefinition","overrides":{"id":1670,"nodeType":"OverrideSpecifier","overrides":[],"src":"3628:8:11"},"parameters":{"id":1669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"operator","nameLocation":"3588:8:11","nodeType":"VariableDeclaration","scope":1680,"src":"3580:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"3580:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1668,"mutability":"mutable","name":"approved","nameLocation":"3603:8:11","nodeType":"VariableDeclaration","scope":1680,"src":"3598:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1667,"name":"bool","nodeType":"ElementaryTypeName","src":"3598:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3579:33:11"},"returnParameters":{"id":1671,"nodeType":"ParameterList","parameters":[],"src":"3637:0:11"},"scope":2711,"src":"3553:153:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2843],"body":{"id":1697,"nodeType":"Block","src":"3878:61:11","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":1691,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"3895:18:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":1693,"indexExpression":{"id":1692,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"3914:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3895:27:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1695,"indexExpression":{"id":1694,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1685,"src":"3923:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3895:37:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1690,"id":1696,"nodeType":"Return","src":"3888:44:11"}]},"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"3712:56:11","text":" @dev See {IERC1155-isApprovedForAll}."},"functionSelector":"e985e9c5","id":1698,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"3782:16:11","nodeType":"FunctionDefinition","overrides":{"id":1687,"nodeType":"OverrideSpecifier","overrides":[],"src":"3854:8:11"},"parameters":{"id":1686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"account","nameLocation":"3807:7:11","nodeType":"VariableDeclaration","scope":1698,"src":"3799:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"3799:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"operator","nameLocation":"3824:8:11","nodeType":"VariableDeclaration","scope":1698,"src":"3816:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"3816:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3798:35:11"},"returnParameters":{"id":1690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1689,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1698,"src":"3872:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1688,"name":"bool","nodeType":"ElementaryTypeName","src":"3872:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3871:6:11"},"scope":2711,"src":"3773:166:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2857],"body":{"id":1735,"nodeType":"Block","src":"4175:225:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1714,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1701,"src":"4206:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1715,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"4214:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4206:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1719,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1701,"src":"4247:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1720,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"4253:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4253:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1718,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1698,"src":"4230:16:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":1722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4230:36:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4206:60:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":1724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4280:48:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156","typeString":"literal_string \"ERC1155: caller is not token owner or approved\""},"value":"ERC1155: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156","typeString":"literal_string \"ERC1155: caller is not token owner or approved\""}],"id":1713,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4185:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4185:153:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1726,"nodeType":"ExpressionStatement","src":"4185:153:11"},{"expression":{"arguments":[{"id":1728,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1701,"src":"4366:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1729,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1703,"src":"4372:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1730,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"4376:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1731,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1707,"src":"4380:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1732,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"4388:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1727,"name":"_safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1893,"src":"4348:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint256,bytes memory)"}},"id":1733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4348:45:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1734,"nodeType":"ExpressionStatement","src":"4348:45:11"}]},"documentation":{"id":1699,"nodeType":"StructuredDocumentation","src":"3945:56:11","text":" @dev See {IERC1155-safeTransferFrom}."},"functionSelector":"f242432a","id":1736,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4015:16:11","nodeType":"FunctionDefinition","overrides":{"id":1711,"nodeType":"OverrideSpecifier","overrides":[],"src":"4166:8:11"},"parameters":{"id":1710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1701,"mutability":"mutable","name":"from","nameLocation":"4049:4:11","nodeType":"VariableDeclaration","scope":1736,"src":"4041:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1700,"name":"address","nodeType":"ElementaryTypeName","src":"4041:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1703,"mutability":"mutable","name":"to","nameLocation":"4071:2:11","nodeType":"VariableDeclaration","scope":1736,"src":"4063:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1702,"name":"address","nodeType":"ElementaryTypeName","src":"4063:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1705,"mutability":"mutable","name":"id","nameLocation":"4091:2:11","nodeType":"VariableDeclaration","scope":1736,"src":"4083:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"4083:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1707,"mutability":"mutable","name":"amount","nameLocation":"4111:6:11","nodeType":"VariableDeclaration","scope":1736,"src":"4103:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1706,"name":"uint256","nodeType":"ElementaryTypeName","src":"4103:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1709,"mutability":"mutable","name":"data","nameLocation":"4140:4:11","nodeType":"VariableDeclaration","scope":1736,"src":"4127:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1708,"name":"bytes","nodeType":"ElementaryTypeName","src":"4127:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4031:119:11"},"returnParameters":{"id":1712,"nodeType":"ParameterList","parameters":[],"src":"4175:0:11"},"scope":2711,"src":"4006:394:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2873],"body":{"id":1775,"nodeType":"Block","src":"4666:232:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1754,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1739,"src":"4697:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1755,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"4705:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4705:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4697:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1759,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1739,"src":"4738:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1760,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"4744:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4744:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1758,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1698,"src":"4721:16:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4721:36:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4697:60:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":1764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4771:48:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156","typeString":"literal_string \"ERC1155: caller is not token owner or approved\""},"value":"ERC1155: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156","typeString":"literal_string \"ERC1155: caller is not token owner or approved\""}],"id":1753,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4676:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4676:153:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1766,"nodeType":"ExpressionStatement","src":"4676:153:11"},{"expression":{"arguments":[{"id":1768,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1739,"src":"4862:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1769,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"4868:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1770,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1744,"src":"4872:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":1771,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"4877:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":1772,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"4886:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1767,"name":"_safeBatchTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"4839:22:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":1773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4839:52:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1774,"nodeType":"ExpressionStatement","src":"4839:52:11"}]},"documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"4406:61:11","text":" @dev See {IERC1155-safeBatchTransferFrom}."},"functionSelector":"2eb2c2d6","id":1776,"implemented":true,"kind":"function","modifiers":[],"name":"safeBatchTransferFrom","nameLocation":"4481:21:11","nodeType":"FunctionDefinition","overrides":{"id":1751,"nodeType":"OverrideSpecifier","overrides":[],"src":"4657:8:11"},"parameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1739,"mutability":"mutable","name":"from","nameLocation":"4520:4:11","nodeType":"VariableDeclaration","scope":1776,"src":"4512:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1738,"name":"address","nodeType":"ElementaryTypeName","src":"4512:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1741,"mutability":"mutable","name":"to","nameLocation":"4542:2:11","nodeType":"VariableDeclaration","scope":1776,"src":"4534:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1740,"name":"address","nodeType":"ElementaryTypeName","src":"4534:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1744,"mutability":"mutable","name":"ids","nameLocation":"4571:3:11","nodeType":"VariableDeclaration","scope":1776,"src":"4554:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1742,"name":"uint256","nodeType":"ElementaryTypeName","src":"4554:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1743,"nodeType":"ArrayTypeName","src":"4554:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1747,"mutability":"mutable","name":"amounts","nameLocation":"4601:7:11","nodeType":"VariableDeclaration","scope":1776,"src":"4584:24:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1745,"name":"uint256","nodeType":"ElementaryTypeName","src":"4584:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1746,"nodeType":"ArrayTypeName","src":"4584:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1749,"mutability":"mutable","name":"data","nameLocation":"4631:4:11","nodeType":"VariableDeclaration","scope":1776,"src":"4618:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1748,"name":"bytes","nodeType":"ElementaryTypeName","src":"4618:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4502:139:11"},"returnParameters":{"id":1752,"nodeType":"ParameterList","parameters":[],"src":"4666:0:11"},"scope":2711,"src":"4472:426:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1892,"nodeType":"Block","src":"5511:784:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1791,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"5529:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5543:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1793,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5535:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"5535:7:11","typeDescriptions":{}}},"id":1795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5529:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373","id":1797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5547:39:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d","typeString":"literal_string \"ERC1155: transfer to the zero address\""},"value":"ERC1155: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d","typeString":"literal_string \"ERC1155: transfer to the zero address\""}],"id":1790,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5521:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5521:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1799,"nodeType":"ExpressionStatement","src":"5521:66:11"},{"assignments":[1801],"declarations":[{"constant":false,"id":1801,"mutability":"mutable","name":"operator","nameLocation":"5606:8:11","nodeType":"VariableDeclaration","scope":1892,"src":"5598:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1800,"name":"address","nodeType":"ElementaryTypeName","src":"5598:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1804,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1802,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"5617:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5617:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5598:31:11"},{"assignments":[1809],"declarations":[{"constant":false,"id":1809,"mutability":"mutable","name":"ids","nameLocation":"5656:3:11","nodeType":"VariableDeclaration","scope":1892,"src":"5639:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1807,"name":"uint256","nodeType":"ElementaryTypeName","src":"5639:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1808,"nodeType":"ArrayTypeName","src":"5639:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":1813,"initialValue":{"arguments":[{"id":1811,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"5680:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1810,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"5662:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":1812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5662:21:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5639:44:11"},{"assignments":[1818],"declarations":[{"constant":false,"id":1818,"mutability":"mutable","name":"amounts","nameLocation":"5710:7:11","nodeType":"VariableDeclaration","scope":1892,"src":"5693:24:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1816,"name":"uint256","nodeType":"ElementaryTypeName","src":"5693:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1817,"nodeType":"ArrayTypeName","src":"5693:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":1822,"initialValue":{"arguments":[{"id":1820,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"5738:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1819,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"5720:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":1821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5720:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5693:52:11"},{"expression":{"arguments":[{"id":1824,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"5777:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1825,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"5787:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1826,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"5793:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1827,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"5797:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":1828,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1818,"src":"5802:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":1829,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"5811:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1823,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"5756:20:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5756:60:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1831,"nodeType":"ExpressionStatement","src":"5756:60:11"},{"assignments":[1833],"declarations":[{"constant":false,"id":1833,"mutability":"mutable","name":"fromBalance","nameLocation":"5835:11:11","nodeType":"VariableDeclaration","scope":1892,"src":"5827:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1832,"name":"uint256","nodeType":"ElementaryTypeName","src":"5827:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1839,"initialValue":{"baseExpression":{"baseExpression":{"id":1834,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"5849:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":1836,"indexExpression":{"id":1835,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"5859:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5849:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1838,"indexExpression":{"id":1837,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"5863:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5849:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5827:41:11"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1841,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1833,"src":"5886:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1842,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"5901:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5886:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572","id":1844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5909:44:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf","typeString":"literal_string \"ERC1155: insufficient balance for transfer\""},"value":"ERC1155: insufficient balance for transfer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf","typeString":"literal_string \"ERC1155: insufficient balance for transfer\""}],"id":1840,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5878:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5878:76:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1846,"nodeType":"ExpressionStatement","src":"5878:76:11"},{"id":1857,"nodeType":"UncheckedBlock","src":"5964:77:11","statements":[{"expression":{"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1847,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"5988:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":1850,"indexExpression":{"id":1848,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"5998:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5988:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1851,"indexExpression":{"id":1849,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"6002:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5988:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1852,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1833,"src":"6010:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1853,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"6024:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6010:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5988:42:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1856,"nodeType":"ExpressionStatement","src":"5988:42:11"}]},{"expression":{"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1858,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"6050:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":1861,"indexExpression":{"id":1859,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"6060:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6050:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1862,"indexExpression":{"id":1860,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"6064:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6050:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1863,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"6071:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6050:27:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1865,"nodeType":"ExpressionStatement","src":"6050:27:11"},{"eventCall":{"arguments":[{"id":1867,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"6108:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1868,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"6118:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1869,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"6124:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1870,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"6128:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1871,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"6132:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1866,"name":"TransferSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"6093:14:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":1872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6093:46:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1873,"nodeType":"EmitStatement","src":"6088:51:11"},{"expression":{"arguments":[{"id":1875,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"6170:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1876,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"6180:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1877,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"6186:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1878,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"6190:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":1879,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1818,"src":"6195:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":1880,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"6204:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1874,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"6150:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":1881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6150:59:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1882,"nodeType":"ExpressionStatement","src":"6150:59:11"},{"expression":{"arguments":[{"id":1884,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"6251:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1885,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"6261:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1886,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"6267:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1887,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1783,"src":"6271:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1888,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"6275:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1889,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"6283:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1883,"name":"_doSafeTransferAcceptanceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"6220:30:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint256,bytes memory)"}},"id":1890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6220:68:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1891,"nodeType":"ExpressionStatement","src":"6220:68:11"}]},"documentation":{"id":1777,"nodeType":"StructuredDocumentation","src":"4904:439:11","text":" @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."},"id":1893,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransferFrom","nameLocation":"5357:17:11","nodeType":"FunctionDefinition","parameters":{"id":1788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1779,"mutability":"mutable","name":"from","nameLocation":"5392:4:11","nodeType":"VariableDeclaration","scope":1893,"src":"5384:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1778,"name":"address","nodeType":"ElementaryTypeName","src":"5384:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1781,"mutability":"mutable","name":"to","nameLocation":"5414:2:11","nodeType":"VariableDeclaration","scope":1893,"src":"5406:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1780,"name":"address","nodeType":"ElementaryTypeName","src":"5406:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1783,"mutability":"mutable","name":"id","nameLocation":"5434:2:11","nodeType":"VariableDeclaration","scope":1893,"src":"5426:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1782,"name":"uint256","nodeType":"ElementaryTypeName","src":"5426:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1785,"mutability":"mutable","name":"amount","nameLocation":"5454:6:11","nodeType":"VariableDeclaration","scope":1893,"src":"5446:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1784,"name":"uint256","nodeType":"ElementaryTypeName","src":"5446:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1787,"mutability":"mutable","name":"data","nameLocation":"5483:4:11","nodeType":"VariableDeclaration","scope":1893,"src":"5470:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1786,"name":"bytes","nodeType":"ElementaryTypeName","src":"5470:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5374:119:11"},"returnParameters":{"id":1789,"nodeType":"ParameterList","parameters":[],"src":"5511:0:11"},"scope":2711,"src":"5348:947:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2027,"nodeType":"Block","src":"6829:927:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1910,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"6847:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6851:6:11","memberName":"length","nodeType":"MemberAccess","src":"6847:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1912,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"6861:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6869:6:11","memberName":"length","nodeType":"MemberAccess","src":"6861:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6847:28:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368","id":1915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6877:42:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""},"value":"ERC1155: ids and amounts length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""}],"id":1909,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6839:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6839:81:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1917,"nodeType":"ExpressionStatement","src":"6839:81:11"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1919,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"6938:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6952:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6944:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1920,"name":"address","nodeType":"ElementaryTypeName","src":"6944:7:11","typeDescriptions":{}}},"id":1923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6944:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6938:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373","id":1925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6956:39:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d","typeString":"literal_string \"ERC1155: transfer to the zero address\""},"value":"ERC1155: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d","typeString":"literal_string \"ERC1155: transfer to the zero address\""}],"id":1918,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6930:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6930:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1927,"nodeType":"ExpressionStatement","src":"6930:66:11"},{"assignments":[1929],"declarations":[{"constant":false,"id":1929,"mutability":"mutable","name":"operator","nameLocation":"7015:8:11","nodeType":"VariableDeclaration","scope":2027,"src":"7007:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1928,"name":"address","nodeType":"ElementaryTypeName","src":"7007:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1932,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1930,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"7026:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7026:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7007:31:11"},{"expression":{"arguments":[{"id":1934,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1929,"src":"7070:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1935,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"7080:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1936,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7086:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1937,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"7090:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":1938,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"7095:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":1939,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1906,"src":"7104:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1933,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"7049:20:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":1940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7049:60:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1941,"nodeType":"ExpressionStatement","src":"7049:60:11"},{"body":{"id":1999,"nodeType":"Block","src":"7161:370:11","statements":[{"assignments":[1954],"declarations":[{"constant":false,"id":1954,"mutability":"mutable","name":"id","nameLocation":"7183:2:11","nodeType":"VariableDeclaration","scope":1999,"src":"7175:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"7175:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1958,"initialValue":{"baseExpression":{"id":1955,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"7188:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1957,"indexExpression":{"id":1956,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"7192:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7188:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7175:19:11"},{"assignments":[1960],"declarations":[{"constant":false,"id":1960,"mutability":"mutable","name":"amount","nameLocation":"7216:6:11","nodeType":"VariableDeclaration","scope":1999,"src":"7208:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1959,"name":"uint256","nodeType":"ElementaryTypeName","src":"7208:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1964,"initialValue":{"baseExpression":{"id":1961,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"7225:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1963,"indexExpression":{"id":1962,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"7233:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7225:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7208:27:11"},{"assignments":[1966],"declarations":[{"constant":false,"id":1966,"mutability":"mutable","name":"fromBalance","nameLocation":"7258:11:11","nodeType":"VariableDeclaration","scope":1999,"src":"7250:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1965,"name":"uint256","nodeType":"ElementaryTypeName","src":"7250:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1972,"initialValue":{"baseExpression":{"baseExpression":{"id":1967,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"7272:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":1969,"indexExpression":{"id":1968,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"7282:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7272:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1971,"indexExpression":{"id":1970,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"7286:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7272:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7250:41:11"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1974,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"7313:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1975,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1960,"src":"7328:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7313:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572","id":1977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7336:44:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf","typeString":"literal_string \"ERC1155: insufficient balance for transfer\""},"value":"ERC1155: insufficient balance for transfer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf","typeString":"literal_string \"ERC1155: insufficient balance for transfer\""}],"id":1973,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7305:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7305:76:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1979,"nodeType":"ExpressionStatement","src":"7305:76:11"},{"id":1990,"nodeType":"UncheckedBlock","src":"7395:85:11","statements":[{"expression":{"id":1988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1980,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"7423:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":1983,"indexExpression":{"id":1981,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"7433:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7423:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1984,"indexExpression":{"id":1982,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"7437:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7423:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1985,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"7445:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1986,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1960,"src":"7459:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7445:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7423:42:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1989,"nodeType":"ExpressionStatement","src":"7423:42:11"}]},{"expression":{"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1991,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"7493:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":1994,"indexExpression":{"id":1992,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"7503:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7493:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1995,"indexExpression":{"id":1993,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7507:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7493:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1996,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1960,"src":"7514:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7493:27:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1998,"nodeType":"ExpressionStatement","src":"7493:27:11"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1946,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"7140:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1947,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"7144:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7148:6:11","memberName":"length","nodeType":"MemberAccess","src":"7144:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7140:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2000,"initializationExpression":{"assignments":[1943],"declarations":[{"constant":false,"id":1943,"mutability":"mutable","name":"i","nameLocation":"7133:1:11","nodeType":"VariableDeclaration","scope":2000,"src":"7125:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1942,"name":"uint256","nodeType":"ElementaryTypeName","src":"7125:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1945,"initialValue":{"hexValue":"30","id":1944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7137:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7125:13:11"},"loopExpression":{"expression":{"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7156:3:11","subExpression":{"id":1950,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"7158:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1952,"nodeType":"ExpressionStatement","src":"7156:3:11"},"nodeType":"ForStatement","src":"7120:411:11"},{"eventCall":{"arguments":[{"id":2002,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1929,"src":"7560:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2003,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"7570:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2004,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7576:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2005,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"7580:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2006,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"7585:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":2001,"name":"TransferBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"7546:13:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory)"}},"id":2007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7546:47:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2008,"nodeType":"EmitStatement","src":"7541:52:11"},{"expression":{"arguments":[{"id":2010,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1929,"src":"7624:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2011,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"7634:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2012,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7640:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2013,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"7644:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2014,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"7649:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2015,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1906,"src":"7658:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2009,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"7604:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":2016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7604:59:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2017,"nodeType":"ExpressionStatement","src":"7604:59:11"},{"expression":{"arguments":[{"id":2019,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1929,"src":"7710:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2020,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"7720:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2021,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7726:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2022,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"7730:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2023,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"7735:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2024,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1906,"src":"7744:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2018,"name":"_doSafeBatchTransferAcceptanceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"7674:35:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":2025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7674:75:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2026,"nodeType":"ExpressionStatement","src":"7674:75:11"}]},"documentation":{"id":1894,"nodeType":"StructuredDocumentation","src":"6301:335:11","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."},"id":2028,"implemented":true,"kind":"function","modifiers":[],"name":"_safeBatchTransferFrom","nameLocation":"6650:22:11","nodeType":"FunctionDefinition","parameters":{"id":1907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1896,"mutability":"mutable","name":"from","nameLocation":"6690:4:11","nodeType":"VariableDeclaration","scope":2028,"src":"6682:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1895,"name":"address","nodeType":"ElementaryTypeName","src":"6682:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1898,"mutability":"mutable","name":"to","nameLocation":"6712:2:11","nodeType":"VariableDeclaration","scope":2028,"src":"6704:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1897,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1901,"mutability":"mutable","name":"ids","nameLocation":"6741:3:11","nodeType":"VariableDeclaration","scope":2028,"src":"6724:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1899,"name":"uint256","nodeType":"ElementaryTypeName","src":"6724:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1900,"nodeType":"ArrayTypeName","src":"6724:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1904,"mutability":"mutable","name":"amounts","nameLocation":"6771:7:11","nodeType":"VariableDeclaration","scope":2028,"src":"6754:24:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1902,"name":"uint256","nodeType":"ElementaryTypeName","src":"6754:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1903,"nodeType":"ArrayTypeName","src":"6754:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1906,"mutability":"mutable","name":"data","nameLocation":"6801:4:11","nodeType":"VariableDeclaration","scope":2028,"src":"6788:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1905,"name":"bytes","nodeType":"ElementaryTypeName","src":"6788:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6672:139:11"},"returnParameters":{"id":1908,"nodeType":"ParameterList","parameters":[],"src":"6829:0:11"},"scope":2711,"src":"6641:1115:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2038,"nodeType":"Block","src":"8635:30:11","statements":[{"expression":{"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2034,"name":"_uri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1503,"src":"8645:4:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2035,"name":"newuri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8652:6:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"8645:13:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2037,"nodeType":"ExpressionStatement","src":"8645:13:11"}]},"documentation":{"id":2029,"nodeType":"StructuredDocumentation","src":"7762:812:11","text":" @dev Sets a new URI for all token types, by relying on the token type ID\n substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n URI or any of the amounts in the JSON file at said URI will be replaced by\n clients with the token type ID.\n For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n interpreted by clients as\n `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n for token type ID 0x4cce0.\n See {uri}.\n Because these URIs cannot be meaningfully represented by the {URI} event,\n this function emits no events."},"id":2039,"implemented":true,"kind":"function","modifiers":[],"name":"_setURI","nameLocation":"8588:7:11","nodeType":"FunctionDefinition","parameters":{"id":2032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2031,"mutability":"mutable","name":"newuri","nameLocation":"8610:6:11","nodeType":"VariableDeclaration","scope":2039,"src":"8596:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2030,"name":"string","nodeType":"ElementaryTypeName","src":"8596:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8595:22:11"},"returnParameters":{"id":2033,"nodeType":"ParameterList","parameters":[],"src":"8635:0:11"},"scope":2711,"src":"8579:86:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2139,"nodeType":"Block","src":"9167:580:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2052,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2042,"src":"9185:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9199:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9191:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2053,"name":"address","nodeType":"ElementaryTypeName","src":"9191:7:11","typeDescriptions":{}}},"id":2056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9191:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9185:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206d696e7420746f20746865207a65726f2061646472657373","id":2058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9203:35:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2","typeString":"literal_string \"ERC1155: mint to the zero address\""},"value":"ERC1155: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2","typeString":"literal_string \"ERC1155: mint to the zero address\""}],"id":2051,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9177:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9177:62:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2060,"nodeType":"ExpressionStatement","src":"9177:62:11"},{"assignments":[2062],"declarations":[{"constant":false,"id":2062,"mutability":"mutable","name":"operator","nameLocation":"9258:8:11","nodeType":"VariableDeclaration","scope":2139,"src":"9250:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2061,"name":"address","nodeType":"ElementaryTypeName","src":"9250:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2065,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2063,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"9269:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9269:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9250:31:11"},{"assignments":[2070],"declarations":[{"constant":false,"id":2070,"mutability":"mutable","name":"ids","nameLocation":"9308:3:11","nodeType":"VariableDeclaration","scope":2139,"src":"9291:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2068,"name":"uint256","nodeType":"ElementaryTypeName","src":"9291:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2069,"nodeType":"ArrayTypeName","src":"9291:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":2074,"initialValue":{"arguments":[{"id":2072,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2044,"src":"9332:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2071,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"9314:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":2073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9314:21:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9291:44:11"},{"assignments":[2079],"declarations":[{"constant":false,"id":2079,"mutability":"mutable","name":"amounts","nameLocation":"9362:7:11","nodeType":"VariableDeclaration","scope":2139,"src":"9345:24:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2077,"name":"uint256","nodeType":"ElementaryTypeName","src":"9345:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2078,"nodeType":"ArrayTypeName","src":"9345:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":2083,"initialValue":{"arguments":[{"id":2081,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2046,"src":"9390:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2080,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"9372:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9372:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9345:52:11"},{"expression":{"arguments":[{"id":2085,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"9429:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9447:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9439:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2086,"name":"address","nodeType":"ElementaryTypeName","src":"9439:7:11","typeDescriptions":{}}},"id":2089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9439:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2090,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2042,"src":"9451:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2091,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2070,"src":"9455:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2092,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2079,"src":"9460:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2093,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"9469:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2084,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"9408:20:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9408:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2095,"nodeType":"ExpressionStatement","src":"9408:66:11"},{"expression":{"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2096,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"9485:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":2099,"indexExpression":{"id":2097,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2044,"src":"9495:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9485:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2100,"indexExpression":{"id":2098,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2042,"src":"9499:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9485:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2101,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2046,"src":"9506:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9485:27:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2103,"nodeType":"ExpressionStatement","src":"9485:27:11"},{"eventCall":{"arguments":[{"id":2105,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"9542:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9560:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9552:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2106,"name":"address","nodeType":"ElementaryTypeName","src":"9552:7:11","typeDescriptions":{}}},"id":2109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9552:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2110,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2042,"src":"9564:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2111,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2044,"src":"9568:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2112,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2046,"src":"9572:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2104,"name":"TransferSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"9527:14:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9527:52:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2114,"nodeType":"EmitStatement","src":"9522:57:11"},{"expression":{"arguments":[{"id":2116,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"9610:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9628:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9620:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2117,"name":"address","nodeType":"ElementaryTypeName","src":"9620:7:11","typeDescriptions":{}}},"id":2120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9620:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2121,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2042,"src":"9632:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2122,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2070,"src":"9636:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2123,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2079,"src":"9641:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2124,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"9650:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2115,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"9590:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":2125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9590:65:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2126,"nodeType":"ExpressionStatement","src":"9590:65:11"},{"expression":{"arguments":[{"id":2128,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"9697:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9715:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9707:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2129,"name":"address","nodeType":"ElementaryTypeName","src":"9707:7:11","typeDescriptions":{}}},"id":2132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9707:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2133,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2042,"src":"9719:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2134,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2044,"src":"9723:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2135,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2046,"src":"9727:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2136,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2048,"src":"9735:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2127,"name":"_doSafeTransferAcceptanceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"9666:30:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint256,bytes memory)"}},"id":2137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9666:74:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2138,"nodeType":"ExpressionStatement","src":"9666:74:11"}]},"documentation":{"id":2040,"nodeType":"StructuredDocumentation","src":"8671:362:11","text":" @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."},"id":2140,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9047:5:11","nodeType":"FunctionDefinition","parameters":{"id":2049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2042,"mutability":"mutable","name":"to","nameLocation":"9070:2:11","nodeType":"VariableDeclaration","scope":2140,"src":"9062:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2041,"name":"address","nodeType":"ElementaryTypeName","src":"9062:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2044,"mutability":"mutable","name":"id","nameLocation":"9090:2:11","nodeType":"VariableDeclaration","scope":2140,"src":"9082:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2043,"name":"uint256","nodeType":"ElementaryTypeName","src":"9082:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2046,"mutability":"mutable","name":"amount","nameLocation":"9110:6:11","nodeType":"VariableDeclaration","scope":2140,"src":"9102:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2045,"name":"uint256","nodeType":"ElementaryTypeName","src":"9102:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2048,"mutability":"mutable","name":"data","nameLocation":"9139:4:11","nodeType":"VariableDeclaration","scope":2140,"src":"9126:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2047,"name":"bytes","nodeType":"ElementaryTypeName","src":"9126:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9052:97:11"},"returnParameters":{"id":2050,"nodeType":"ParameterList","parameters":[],"src":"9167:0:11"},"scope":2711,"src":"9038:709:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2250,"nodeType":"Block","src":"10291:637:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2155,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2143,"src":"10309:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10323:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10315:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2156,"name":"address","nodeType":"ElementaryTypeName","src":"10315:7:11","typeDescriptions":{}}},"id":2159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10315:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10309:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206d696e7420746f20746865207a65726f2061646472657373","id":2161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10327:35:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2","typeString":"literal_string \"ERC1155: mint to the zero address\""},"value":"ERC1155: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2","typeString":"literal_string \"ERC1155: mint to the zero address\""}],"id":2154,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10301:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10301:62:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2163,"nodeType":"ExpressionStatement","src":"10301:62:11"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2165,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"10381:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10385:6:11","memberName":"length","nodeType":"MemberAccess","src":"10381:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2167,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"10395:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10403:6:11","memberName":"length","nodeType":"MemberAccess","src":"10395:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10381:28:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368","id":2170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10411:42:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""},"value":"ERC1155: ids and amounts length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""}],"id":2164,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10373:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10373:81:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2172,"nodeType":"ExpressionStatement","src":"10373:81:11"},{"assignments":[2174],"declarations":[{"constant":false,"id":2174,"mutability":"mutable","name":"operator","nameLocation":"10473:8:11","nodeType":"VariableDeclaration","scope":2250,"src":"10465:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2173,"name":"address","nodeType":"ElementaryTypeName","src":"10465:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2177,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2175,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"10484:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10484:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10465:31:11"},{"expression":{"arguments":[{"id":2179,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"10528:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10546:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10538:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2180,"name":"address","nodeType":"ElementaryTypeName","src":"10538:7:11","typeDescriptions":{}}},"id":2183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10538:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2184,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2143,"src":"10550:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2185,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"10554:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2186,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"10559:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2187,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"10568:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2178,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"10507:20:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10507:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2189,"nodeType":"ExpressionStatement","src":"10507:66:11"},{"body":{"id":2213,"nodeType":"Block","src":"10625:60:11","statements":[{"expression":{"id":2211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2201,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"10639:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":2206,"indexExpression":{"baseExpression":{"id":2202,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"10649:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2204,"indexExpression":{"id":2203,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2191,"src":"10653:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10649:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10639:17:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2207,"indexExpression":{"id":2205,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2143,"src":"10657:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10639:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":2208,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"10664:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2210,"indexExpression":{"id":2209,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2191,"src":"10672:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10664:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10639:35:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2212,"nodeType":"ExpressionStatement","src":"10639:35:11"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2194,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2191,"src":"10604:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2195,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"10608:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10612:6:11","memberName":"length","nodeType":"MemberAccess","src":"10608:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10604:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2214,"initializationExpression":{"assignments":[2191],"declarations":[{"constant":false,"id":2191,"mutability":"mutable","name":"i","nameLocation":"10597:1:11","nodeType":"VariableDeclaration","scope":2214,"src":"10589:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2190,"name":"uint256","nodeType":"ElementaryTypeName","src":"10589:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2193,"initialValue":{"hexValue":"30","id":2192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10601:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10589:13:11"},"loopExpression":{"expression":{"id":2199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10620:3:11","subExpression":{"id":2198,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2191,"src":"10620:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2200,"nodeType":"ExpressionStatement","src":"10620:3:11"},"nodeType":"ForStatement","src":"10584:101:11"},{"eventCall":{"arguments":[{"id":2216,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"10714:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10732:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10724:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2217,"name":"address","nodeType":"ElementaryTypeName","src":"10724:7:11","typeDescriptions":{}}},"id":2220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10724:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2221,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2143,"src":"10736:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2222,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"10740:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2223,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"10745:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":2215,"name":"TransferBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"10700:13:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory)"}},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10700:53:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2225,"nodeType":"EmitStatement","src":"10695:58:11"},{"expression":{"arguments":[{"id":2227,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"10784:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10802:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10794:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2228,"name":"address","nodeType":"ElementaryTypeName","src":"10794:7:11","typeDescriptions":{}}},"id":2231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10794:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2232,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2143,"src":"10806:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2233,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"10810:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2234,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"10815:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2235,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"10824:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2226,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"10764:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10764:65:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2237,"nodeType":"ExpressionStatement","src":"10764:65:11"},{"expression":{"arguments":[{"id":2239,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"10876:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10894:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10886:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2240,"name":"address","nodeType":"ElementaryTypeName","src":"10886:7:11","typeDescriptions":{}}},"id":2243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10886:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2244,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2143,"src":"10898:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2245,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"10902:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2246,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"10907:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2247,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"10916:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2238,"name":"_doSafeBatchTransferAcceptanceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"10840:35:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10840:81:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"10840:81:11"}]},"documentation":{"id":2141,"nodeType":"StructuredDocumentation","src":"9753:379:11","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."},"id":2251,"implemented":true,"kind":"function","modifiers":[],"name":"_mintBatch","nameLocation":"10146:10:11","nodeType":"FunctionDefinition","parameters":{"id":2152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2143,"mutability":"mutable","name":"to","nameLocation":"10174:2:11","nodeType":"VariableDeclaration","scope":2251,"src":"10166:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2142,"name":"address","nodeType":"ElementaryTypeName","src":"10166:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2146,"mutability":"mutable","name":"ids","nameLocation":"10203:3:11","nodeType":"VariableDeclaration","scope":2251,"src":"10186:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2144,"name":"uint256","nodeType":"ElementaryTypeName","src":"10186:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2145,"nodeType":"ArrayTypeName","src":"10186:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2149,"mutability":"mutable","name":"amounts","nameLocation":"10233:7:11","nodeType":"VariableDeclaration","scope":2251,"src":"10216:24:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2147,"name":"uint256","nodeType":"ElementaryTypeName","src":"10216:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2148,"nodeType":"ArrayTypeName","src":"10216:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2151,"mutability":"mutable","name":"data","nameLocation":"10263:4:11","nodeType":"VariableDeclaration","scope":2251,"src":"10250:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2150,"name":"bytes","nodeType":"ElementaryTypeName","src":"10250:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10156:117:11"},"returnParameters":{"id":2153,"nodeType":"ParameterList","parameters":[],"src":"10291:0:11"},"scope":2711,"src":"10137:791:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2355,"nodeType":"Block","src":"11318:682:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2262,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"11336:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11352:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11344:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2263,"name":"address","nodeType":"ElementaryTypeName","src":"11344:7:11","typeDescriptions":{}}},"id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11344:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11336:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11356:37:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a","typeString":"literal_string \"ERC1155: burn from the zero address\""},"value":"ERC1155: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a","typeString":"literal_string \"ERC1155: burn from the zero address\""}],"id":2261,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11328:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11328:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"11328:66:11"},{"assignments":[2272],"declarations":[{"constant":false,"id":2272,"mutability":"mutable","name":"operator","nameLocation":"11413:8:11","nodeType":"VariableDeclaration","scope":2355,"src":"11405:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2271,"name":"address","nodeType":"ElementaryTypeName","src":"11405:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2275,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2273,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"11424:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11424:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11405:31:11"},{"assignments":[2280],"declarations":[{"constant":false,"id":2280,"mutability":"mutable","name":"ids","nameLocation":"11463:3:11","nodeType":"VariableDeclaration","scope":2355,"src":"11446:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2278,"name":"uint256","nodeType":"ElementaryTypeName","src":"11446:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2279,"nodeType":"ArrayTypeName","src":"11446:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":2284,"initialValue":{"arguments":[{"id":2282,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"11487:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2281,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"11469:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11469:21:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"11446:44:11"},{"assignments":[2289],"declarations":[{"constant":false,"id":2289,"mutability":"mutable","name":"amounts","nameLocation":"11517:7:11","nodeType":"VariableDeclaration","scope":2355,"src":"11500:24:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2287,"name":"uint256","nodeType":"ElementaryTypeName","src":"11500:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2288,"nodeType":"ArrayTypeName","src":"11500:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":2293,"initialValue":{"arguments":[{"id":2291,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"11545:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2290,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"11527:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":2292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11527:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"11500:52:11"},{"expression":{"arguments":[{"id":2295,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2272,"src":"11584:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2296,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"11594:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11608:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11600:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2297,"name":"address","nodeType":"ElementaryTypeName","src":"11600:7:11","typeDescriptions":{}}},"id":2300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11600:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2301,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2280,"src":"11612:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2302,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"11617:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":2303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11626:2:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2294,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"11563:20:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":2304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11563:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2305,"nodeType":"ExpressionStatement","src":"11563:66:11"},{"assignments":[2307],"declarations":[{"constant":false,"id":2307,"mutability":"mutable","name":"fromBalance","nameLocation":"11648:11:11","nodeType":"VariableDeclaration","scope":2355,"src":"11640:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2306,"name":"uint256","nodeType":"ElementaryTypeName","src":"11640:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2313,"initialValue":{"baseExpression":{"baseExpression":{"id":2308,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"11662:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":2310,"indexExpression":{"id":2309,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"11672:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11662:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2312,"indexExpression":{"id":2311,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"11676:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11662:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11640:41:11"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2315,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"11699:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2316,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"11714:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11699:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365","id":2318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11722:38:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685","typeString":"literal_string \"ERC1155: burn amount exceeds balance\""},"value":"ERC1155: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685","typeString":"literal_string \"ERC1155: burn amount exceeds balance\""}],"id":2314,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11691:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11691:70:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2320,"nodeType":"ExpressionStatement","src":"11691:70:11"},{"id":2331,"nodeType":"UncheckedBlock","src":"11771:77:11","statements":[{"expression":{"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2321,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"11795:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":2324,"indexExpression":{"id":2322,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"11805:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11795:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2325,"indexExpression":{"id":2323,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"11809:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11795:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2326,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"11817:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2327,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"11831:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11817:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11795:42:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2330,"nodeType":"ExpressionStatement","src":"11795:42:11"}]},{"eventCall":{"arguments":[{"id":2333,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2272,"src":"11878:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2334,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"11888:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11902:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11894:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2335,"name":"address","nodeType":"ElementaryTypeName","src":"11894:7:11","typeDescriptions":{}}},"id":2338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11894:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2339,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"11906:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2340,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"11910:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2332,"name":"TransferSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"11863:14:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":2341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11863:54:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2342,"nodeType":"EmitStatement","src":"11858:59:11"},{"expression":{"arguments":[{"id":2344,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2272,"src":"11948:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2345,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"11958:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11972:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11964:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2346,"name":"address","nodeType":"ElementaryTypeName","src":"11964:7:11","typeDescriptions":{}}},"id":2349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11964:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2350,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2280,"src":"11976:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2351,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"11981:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":2352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11990:2:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2343,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"11928:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":2353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11928:65:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2354,"nodeType":"ExpressionStatement","src":"11928:65:11"}]},"documentation":{"id":2252,"nodeType":"StructuredDocumentation","src":"10934:275:11","text":" @dev Destroys `amount` tokens of token type `id` from `from`\n Emits a {TransferSingle} event.\n Requirements:\n - `from` cannot be the zero address.\n - `from` must have at least `amount` tokens of token type `id`."},"id":2356,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"11223:5:11","nodeType":"FunctionDefinition","parameters":{"id":2259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2254,"mutability":"mutable","name":"from","nameLocation":"11246:4:11","nodeType":"VariableDeclaration","scope":2356,"src":"11238:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"11238:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2256,"mutability":"mutable","name":"id","nameLocation":"11268:2:11","nodeType":"VariableDeclaration","scope":2356,"src":"11260:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2255,"name":"uint256","nodeType":"ElementaryTypeName","src":"11260:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2258,"mutability":"mutable","name":"amount","nameLocation":"11288:6:11","nodeType":"VariableDeclaration","scope":2356,"src":"11280:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2257,"name":"uint256","nodeType":"ElementaryTypeName","src":"11280:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11228:72:11"},"returnParameters":{"id":2260,"nodeType":"ParameterList","parameters":[],"src":"11318:0:11"},"scope":2711,"src":"11214:786:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2478,"nodeType":"Block","src":"12368:814:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2369,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2359,"src":"12386:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12402:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12394:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2370,"name":"address","nodeType":"ElementaryTypeName","src":"12394:7:11","typeDescriptions":{}}},"id":2373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12394:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12386:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373","id":2375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12406:37:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a","typeString":"literal_string \"ERC1155: burn from the zero address\""},"value":"ERC1155: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a","typeString":"literal_string \"ERC1155: burn from the zero address\""}],"id":2368,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12378:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12378:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2377,"nodeType":"ExpressionStatement","src":"12378:66:11"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2379,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"12462:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12466:6:11","memberName":"length","nodeType":"MemberAccess","src":"12462:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2381,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"12476:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12484:6:11","memberName":"length","nodeType":"MemberAccess","src":"12476:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12462:28:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368","id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12492:42:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""},"value":"ERC1155: ids and amounts length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""}],"id":2378,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12454:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12454:81:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2386,"nodeType":"ExpressionStatement","src":"12454:81:11"},{"assignments":[2388],"declarations":[{"constant":false,"id":2388,"mutability":"mutable","name":"operator","nameLocation":"12554:8:11","nodeType":"VariableDeclaration","scope":2478,"src":"12546:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2387,"name":"address","nodeType":"ElementaryTypeName","src":"12546:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2391,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2389,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"12565:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12565:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12546:31:11"},{"expression":{"arguments":[{"id":2393,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"12609:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2394,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2359,"src":"12619:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12633:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12625:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2395,"name":"address","nodeType":"ElementaryTypeName","src":"12625:7:11","typeDescriptions":{}}},"id":2398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12625:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2399,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"12637:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2400,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"12642:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":2401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12651:2:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2392,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"12588:20:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":2402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12588:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2403,"nodeType":"ExpressionStatement","src":"12588:66:11"},{"body":{"id":2453,"nodeType":"Block","src":"12706:323:11","statements":[{"assignments":[2416],"declarations":[{"constant":false,"id":2416,"mutability":"mutable","name":"id","nameLocation":"12728:2:11","nodeType":"VariableDeclaration","scope":2453,"src":"12720:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2415,"name":"uint256","nodeType":"ElementaryTypeName","src":"12720:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2420,"initialValue":{"baseExpression":{"id":2417,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"12733:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2419,"indexExpression":{"id":2418,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2405,"src":"12737:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12733:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12720:19:11"},{"assignments":[2422],"declarations":[{"constant":false,"id":2422,"mutability":"mutable","name":"amount","nameLocation":"12761:6:11","nodeType":"VariableDeclaration","scope":2453,"src":"12753:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2421,"name":"uint256","nodeType":"ElementaryTypeName","src":"12753:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2426,"initialValue":{"baseExpression":{"id":2423,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"12770:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2425,"indexExpression":{"id":2424,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2405,"src":"12778:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12770:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12753:27:11"},{"assignments":[2428],"declarations":[{"constant":false,"id":2428,"mutability":"mutable","name":"fromBalance","nameLocation":"12803:11:11","nodeType":"VariableDeclaration","scope":2453,"src":"12795:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2427,"name":"uint256","nodeType":"ElementaryTypeName","src":"12795:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2434,"initialValue":{"baseExpression":{"baseExpression":{"id":2429,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"12817:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":2431,"indexExpression":{"id":2430,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2416,"src":"12827:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12817:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2433,"indexExpression":{"id":2432,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2359,"src":"12831:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12817:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12795:41:11"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2436,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"12858:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2437,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2422,"src":"12873:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12858:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365","id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12881:38:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685","typeString":"literal_string \"ERC1155: burn amount exceeds balance\""},"value":"ERC1155: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685","typeString":"literal_string \"ERC1155: burn amount exceeds balance\""}],"id":2435,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12850:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12850:70:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2441,"nodeType":"ExpressionStatement","src":"12850:70:11"},{"id":2452,"nodeType":"UncheckedBlock","src":"12934:85:11","statements":[{"expression":{"id":2450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2442,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"12962:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":2445,"indexExpression":{"id":2443,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2416,"src":"12972:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12962:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2446,"indexExpression":{"id":2444,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2359,"src":"12976:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12962:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2447,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"12984:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2448,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2422,"src":"12998:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12984:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12962:42:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2451,"nodeType":"ExpressionStatement","src":"12962:42:11"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2408,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2405,"src":"12685:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2409,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"12689:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12693:6:11","memberName":"length","nodeType":"MemberAccess","src":"12689:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12685:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2454,"initializationExpression":{"assignments":[2405],"declarations":[{"constant":false,"id":2405,"mutability":"mutable","name":"i","nameLocation":"12678:1:11","nodeType":"VariableDeclaration","scope":2454,"src":"12670:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2404,"name":"uint256","nodeType":"ElementaryTypeName","src":"12670:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2407,"initialValue":{"hexValue":"30","id":2406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12682:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12670:13:11"},"loopExpression":{"expression":{"id":2413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12701:3:11","subExpression":{"id":2412,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2405,"src":"12701:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2414,"nodeType":"ExpressionStatement","src":"12701:3:11"},"nodeType":"ForStatement","src":"12665:364:11"},{"eventCall":{"arguments":[{"id":2456,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"13058:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2457,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2359,"src":"13068:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13082:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13074:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2458,"name":"address","nodeType":"ElementaryTypeName","src":"13074:7:11","typeDescriptions":{}}},"id":2461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13074:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2462,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"13086:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2463,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"13091:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":2455,"name":"TransferBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"13044:13:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory)"}},"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13044:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2465,"nodeType":"EmitStatement","src":"13039:60:11"},{"expression":{"arguments":[{"id":2467,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"13130:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2468,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2359,"src":"13140:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13154:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13146:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2469,"name":"address","nodeType":"ElementaryTypeName","src":"13146:7:11","typeDescriptions":{}}},"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13146:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2473,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"13158:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2474,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"13163:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":2475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13172:2:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2466,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"13110:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":2476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13110:65:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2477,"nodeType":"ExpressionStatement","src":"13110:65:11"}]},"documentation":{"id":2357,"nodeType":"StructuredDocumentation","src":"12006:228:11","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length."},"id":2479,"implemented":true,"kind":"function","modifiers":[],"name":"_burnBatch","nameLocation":"12248:10:11","nodeType":"FunctionDefinition","parameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2359,"mutability":"mutable","name":"from","nameLocation":"12276:4:11","nodeType":"VariableDeclaration","scope":2479,"src":"12268:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2358,"name":"address","nodeType":"ElementaryTypeName","src":"12268:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2362,"mutability":"mutable","name":"ids","nameLocation":"12307:3:11","nodeType":"VariableDeclaration","scope":2479,"src":"12290:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2360,"name":"uint256","nodeType":"ElementaryTypeName","src":"12290:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2361,"nodeType":"ArrayTypeName","src":"12290:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"amounts","nameLocation":"12337:7:11","nodeType":"VariableDeclaration","scope":2479,"src":"12320:24:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2363,"name":"uint256","nodeType":"ElementaryTypeName","src":"12320:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2364,"nodeType":"ArrayTypeName","src":"12320:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"12258:92:11"},"returnParameters":{"id":2367,"nodeType":"ParameterList","parameters":[],"src":"12368:0:11"},"scope":2711,"src":"12239:943:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2510,"nodeType":"Block","src":"13441:200:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2490,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2482,"src":"13459:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2491,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2484,"src":"13468:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13459:17:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66","id":2493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13478:43:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2","typeString":"literal_string \"ERC1155: setting approval status for self\""},"value":"ERC1155: setting approval status for self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2","typeString":"literal_string \"ERC1155: setting approval status for self\""}],"id":2489,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13451:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13451:71:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2495,"nodeType":"ExpressionStatement","src":"13451:71:11"},{"expression":{"id":2502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2496,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"13532:18:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2499,"indexExpression":{"id":2497,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2482,"src":"13551:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13532:25:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2500,"indexExpression":{"id":2498,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2484,"src":"13558:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13532:35:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2501,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"13570:8:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13532:46:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2503,"nodeType":"ExpressionStatement","src":"13532:46:11"},{"eventCall":{"arguments":[{"id":2505,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2482,"src":"13608:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2484,"src":"13615:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2507,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"13625:8:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2504,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2795,"src":"13593:14:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13593:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2509,"nodeType":"EmitStatement","src":"13588:46:11"}]},"documentation":{"id":2480,"nodeType":"StructuredDocumentation","src":"13188:125:11","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":2511,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"13327:18:11","nodeType":"FunctionDefinition","parameters":{"id":2487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2482,"mutability":"mutable","name":"owner","nameLocation":"13363:5:11","nodeType":"VariableDeclaration","scope":2511,"src":"13355:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2481,"name":"address","nodeType":"ElementaryTypeName","src":"13355:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2484,"mutability":"mutable","name":"operator","nameLocation":"13386:8:11","nodeType":"VariableDeclaration","scope":2511,"src":"13378:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2483,"name":"address","nodeType":"ElementaryTypeName","src":"13378:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2486,"mutability":"mutable","name":"approved","nameLocation":"13409:8:11","nodeType":"VariableDeclaration","scope":2511,"src":"13404:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2485,"name":"bool","nodeType":"ElementaryTypeName","src":"13404:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13345:78:11"},"returnParameters":{"id":2488,"nodeType":"ParameterList","parameters":[],"src":"13441:0:11"},"scope":2711,"src":"13318:323:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2529,"nodeType":"Block","src":"14789:2:11","statements":[]},"documentation":{"id":2512,"nodeType":"StructuredDocumentation","src":"13647:925:11","text":" @dev Hook that is called before any token transfer. This includes minting\n and burning, as well as batched variants.\n The same hook is called on both single and batched variants. For single\n transfers, the length of the `ids` and `amounts` arrays will be 1.\n Calling conditions (for each `id` and `amount` pair):\n - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n of token type `id` will be transferred to `to`.\n - When `from` is zero, `amount` tokens of token type `id` will be minted\n for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n will be burned.\n - `from` and `to` are never both zero.\n - `ids` and `amounts` have the same, non-zero length.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":2530,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"14586:20:11","nodeType":"FunctionDefinition","parameters":{"id":2527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2514,"mutability":"mutable","name":"operator","nameLocation":"14624:8:11","nodeType":"VariableDeclaration","scope":2530,"src":"14616:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2513,"name":"address","nodeType":"ElementaryTypeName","src":"14616:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2516,"mutability":"mutable","name":"from","nameLocation":"14650:4:11","nodeType":"VariableDeclaration","scope":2530,"src":"14642:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2515,"name":"address","nodeType":"ElementaryTypeName","src":"14642:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2518,"mutability":"mutable","name":"to","nameLocation":"14672:2:11","nodeType":"VariableDeclaration","scope":2530,"src":"14664:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2517,"name":"address","nodeType":"ElementaryTypeName","src":"14664:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"ids","nameLocation":"14701:3:11","nodeType":"VariableDeclaration","scope":2530,"src":"14684:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2519,"name":"uint256","nodeType":"ElementaryTypeName","src":"14684:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2520,"nodeType":"ArrayTypeName","src":"14684:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2524,"mutability":"mutable","name":"amounts","nameLocation":"14731:7:11","nodeType":"VariableDeclaration","scope":2530,"src":"14714:24:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2522,"name":"uint256","nodeType":"ElementaryTypeName","src":"14714:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2523,"nodeType":"ArrayTypeName","src":"14714:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2526,"mutability":"mutable","name":"data","nameLocation":"14761:4:11","nodeType":"VariableDeclaration","scope":2530,"src":"14748:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2525,"name":"bytes","nodeType":"ElementaryTypeName","src":"14748:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14606:165:11"},"returnParameters":{"id":2528,"nodeType":"ParameterList","parameters":[],"src":"14789:0:11"},"scope":2711,"src":"14577:214:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2548,"nodeType":"Block","src":"15935:2:11","statements":[]},"documentation":{"id":2531,"nodeType":"StructuredDocumentation","src":"14797:922:11","text":" @dev Hook that is called after any token transfer. This includes minting\n and burning, as well as batched variants.\n The same hook is called on both single and batched variants. For single\n transfers, the length of the `id` and `amount` arrays will be 1.\n Calling conditions (for each `id` and `amount` pair):\n - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n of token type `id` will be transferred to `to`.\n - When `from` is zero, `amount` tokens of token type `id` will be minted\n for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n will be burned.\n - `from` and `to` are never both zero.\n - `ids` and `amounts` have the same, non-zero length.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":2549,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"15733:19:11","nodeType":"FunctionDefinition","parameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2533,"mutability":"mutable","name":"operator","nameLocation":"15770:8:11","nodeType":"VariableDeclaration","scope":2549,"src":"15762:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2532,"name":"address","nodeType":"ElementaryTypeName","src":"15762:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2535,"mutability":"mutable","name":"from","nameLocation":"15796:4:11","nodeType":"VariableDeclaration","scope":2549,"src":"15788:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2534,"name":"address","nodeType":"ElementaryTypeName","src":"15788:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2537,"mutability":"mutable","name":"to","nameLocation":"15818:2:11","nodeType":"VariableDeclaration","scope":2549,"src":"15810:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2536,"name":"address","nodeType":"ElementaryTypeName","src":"15810:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2540,"mutability":"mutable","name":"ids","nameLocation":"15847:3:11","nodeType":"VariableDeclaration","scope":2549,"src":"15830:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2538,"name":"uint256","nodeType":"ElementaryTypeName","src":"15830:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2539,"nodeType":"ArrayTypeName","src":"15830:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2543,"mutability":"mutable","name":"amounts","nameLocation":"15877:7:11","nodeType":"VariableDeclaration","scope":2549,"src":"15860:24:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2541,"name":"uint256","nodeType":"ElementaryTypeName","src":"15860:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2542,"nodeType":"ArrayTypeName","src":"15860:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2545,"mutability":"mutable","name":"data","nameLocation":"15907:4:11","nodeType":"VariableDeclaration","scope":2549,"src":"15894:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2544,"name":"bytes","nodeType":"ElementaryTypeName","src":"15894:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15752:165:11"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[],"src":"15935:0:11"},"scope":2711,"src":"15724:213:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2611,"nodeType":"Block","src":"16136:554:11","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2564,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2555,"src":"16150:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16153:10:11","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":4810,"src":"16150:13:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$attached_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":2566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16150:15:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2610,"nodeType":"IfStatement","src":"16146:538:11","trueBody":{"id":2609,"nodeType":"Block","src":"16167:517:11","statements":[{"clauses":[{"block":{"id":2591,"nodeType":"Block","src":"16295:195:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2580,"name":"response","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2578,"src":"16317:8:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2581,"name":"IERC1155ReceiverUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"16329:27:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155ReceiverUpgradeable_$2752_$","typeString":"type(contract IERC1155ReceiverUpgradeable)"}},"id":2582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16357:17:11","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":2733,"src":"16329:45:11","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC1155ReceiverUpgradeable.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"}},"id":2583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16375:8:11","memberName":"selector","nodeType":"MemberAccess","src":"16329:54:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"16317:66:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2590,"nodeType":"IfStatement","src":"16313:163:11","trueBody":{"id":2589,"nodeType":"Block","src":"16385:91:11","statements":[{"expression":{"arguments":[{"hexValue":"455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73","id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16414:42:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503","typeString":"literal_string \"ERC1155: ERC1155Receiver rejected tokens\""},"value":"ERC1155: ERC1155Receiver rejected tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503","typeString":"literal_string \"ERC1155: ERC1155Receiver rejected tokens\""}],"id":2585,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"16407:6:11","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16407:50:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2588,"nodeType":"ExpressionStatement","src":"16407:50:11"}]}}]},"errorName":"","id":2592,"nodeType":"TryCatchClause","parameters":{"id":2579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2578,"mutability":"mutable","name":"response","nameLocation":"16285:8:11","nodeType":"VariableDeclaration","scope":2592,"src":"16278:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2577,"name":"bytes4","nodeType":"ElementaryTypeName","src":"16278:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"16277:17:11"},"src":"16269:221:11"},{"block":{"id":2600,"nodeType":"Block","src":"16525:47:11","statements":[{"expression":{"arguments":[{"id":2597,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2594,"src":"16550:6:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2596,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"16543:6:11","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16543:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2599,"nodeType":"ExpressionStatement","src":"16543:14:11"}]},"errorName":"Error","id":2601,"nodeType":"TryCatchClause","parameters":{"id":2595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2594,"mutability":"mutable","name":"reason","nameLocation":"16517:6:11","nodeType":"VariableDeclaration","scope":2601,"src":"16503:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2593,"name":"string","nodeType":"ElementaryTypeName","src":"16503:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"16502:22:11"},"src":"16491:81:11"},{"block":{"id":2606,"nodeType":"Block","src":"16579:95:11","statements":[{"expression":{"arguments":[{"hexValue":"455243313135353a207472616e7366657220746f206e6f6e2d45524331313535526563656976657220696d706c656d656e746572","id":2603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16604:54:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d","typeString":"literal_string \"ERC1155: transfer to non-ERC1155Receiver implementer\""},"value":"ERC1155: transfer to non-ERC1155Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d","typeString":"literal_string \"ERC1155: transfer to non-ERC1155Receiver implementer\""}],"id":2602,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"16597:6:11","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16597:62:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2605,"nodeType":"ExpressionStatement","src":"16597:62:11"}]},"errorName":"","id":2607,"nodeType":"TryCatchClause","src":"16573:101:11"}],"externalCall":{"arguments":[{"id":2571,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2551,"src":"16235:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2572,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2553,"src":"16245:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2573,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2557,"src":"16251:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2574,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"16255:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2575,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"16263:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2568,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2555,"src":"16213:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2567,"name":"IERC1155ReceiverUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"16185:27:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155ReceiverUpgradeable_$2752_$","typeString":"type(contract IERC1155ReceiverUpgradeable)"}},"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16185:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1155ReceiverUpgradeable_$2752","typeString":"contract IERC1155ReceiverUpgradeable"}},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16217:17:11","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":2733,"src":"16185:49:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"}},"id":2576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16185:83:11","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2608,"nodeType":"TryStatement","src":"16181:493:11"}]}}]},"id":2612,"implemented":true,"kind":"function","modifiers":[],"name":"_doSafeTransferAcceptanceCheck","nameLocation":"15952:30:11","nodeType":"FunctionDefinition","parameters":{"id":2562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2551,"mutability":"mutable","name":"operator","nameLocation":"16000:8:11","nodeType":"VariableDeclaration","scope":2612,"src":"15992:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2550,"name":"address","nodeType":"ElementaryTypeName","src":"15992:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2553,"mutability":"mutable","name":"from","nameLocation":"16026:4:11","nodeType":"VariableDeclaration","scope":2612,"src":"16018:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2552,"name":"address","nodeType":"ElementaryTypeName","src":"16018:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2555,"mutability":"mutable","name":"to","nameLocation":"16048:2:11","nodeType":"VariableDeclaration","scope":2612,"src":"16040:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2554,"name":"address","nodeType":"ElementaryTypeName","src":"16040:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2557,"mutability":"mutable","name":"id","nameLocation":"16068:2:11","nodeType":"VariableDeclaration","scope":2612,"src":"16060:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2556,"name":"uint256","nodeType":"ElementaryTypeName","src":"16060:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2559,"mutability":"mutable","name":"amount","nameLocation":"16088:6:11","nodeType":"VariableDeclaration","scope":2612,"src":"16080:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2558,"name":"uint256","nodeType":"ElementaryTypeName","src":"16080:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2561,"mutability":"mutable","name":"data","nameLocation":"16117:4:11","nodeType":"VariableDeclaration","scope":2612,"src":"16104:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2560,"name":"bytes","nodeType":"ElementaryTypeName","src":"16104:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15982:145:11"},"returnParameters":{"id":2563,"nodeType":"ParameterList","parameters":[],"src":"16136:0:11"},"scope":2711,"src":"15943:747:11","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2676,"nodeType":"Block","src":"16914:596:11","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2629,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"16928:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16931:10:11","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":4810,"src":"16928:13:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$attached_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":2631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16928:15:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2675,"nodeType":"IfStatement","src":"16924:580:11","trueBody":{"id":2674,"nodeType":"Block","src":"16945:559:11","statements":[{"clauses":[{"block":{"id":2656,"nodeType":"Block","src":"17110:200:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2645,"name":"response","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2643,"src":"17132:8:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":2646,"name":"IERC1155ReceiverUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"17144:27:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155ReceiverUpgradeable_$2752_$","typeString":"type(contract IERC1155ReceiverUpgradeable)"}},"id":2647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17172:22:11","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":2751,"src":"17144:50:11","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC1155ReceiverUpgradeable.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"}},"id":2648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17195:8:11","memberName":"selector","nodeType":"MemberAccess","src":"17144:59:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"17132:71:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2655,"nodeType":"IfStatement","src":"17128:168:11","trueBody":{"id":2654,"nodeType":"Block","src":"17205:91:11","statements":[{"expression":{"arguments":[{"hexValue":"455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73","id":2651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17234:42:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503","typeString":"literal_string \"ERC1155: ERC1155Receiver rejected tokens\""},"value":"ERC1155: ERC1155Receiver rejected tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503","typeString":"literal_string \"ERC1155: ERC1155Receiver rejected tokens\""}],"id":2650,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"17227:6:11","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17227:50:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2653,"nodeType":"ExpressionStatement","src":"17227:50:11"}]}}]},"errorName":"","id":2657,"nodeType":"TryCatchClause","parameters":{"id":2644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2643,"mutability":"mutable","name":"response","nameLocation":"17087:8:11","nodeType":"VariableDeclaration","scope":2657,"src":"17080:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2642,"name":"bytes4","nodeType":"ElementaryTypeName","src":"17080:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"17062:47:11"},"src":"17054:256:11"},{"block":{"id":2665,"nodeType":"Block","src":"17345:47:11","statements":[{"expression":{"arguments":[{"id":2662,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"17370:6:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2661,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"17363:6:11","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17363:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2664,"nodeType":"ExpressionStatement","src":"17363:14:11"}]},"errorName":"Error","id":2666,"nodeType":"TryCatchClause","parameters":{"id":2660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2659,"mutability":"mutable","name":"reason","nameLocation":"17337:6:11","nodeType":"VariableDeclaration","scope":2666,"src":"17323:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2658,"name":"string","nodeType":"ElementaryTypeName","src":"17323:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17322:22:11"},"src":"17311:81:11"},{"block":{"id":2671,"nodeType":"Block","src":"17399:95:11","statements":[{"expression":{"arguments":[{"hexValue":"455243313135353a207472616e7366657220746f206e6f6e2d45524331313535526563656976657220696d706c656d656e746572","id":2668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17424:54:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d","typeString":"literal_string \"ERC1155: transfer to non-ERC1155Receiver implementer\""},"value":"ERC1155: transfer to non-ERC1155Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d","typeString":"literal_string \"ERC1155: transfer to non-ERC1155Receiver implementer\""}],"id":2667,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"17417:6:11","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17417:62:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2670,"nodeType":"ExpressionStatement","src":"17417:62:11"}]},"errorName":"","id":2672,"nodeType":"TryCatchClause","src":"17393:101:11"}],"externalCall":{"arguments":[{"id":2636,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2614,"src":"17018:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2637,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2616,"src":"17028:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2638,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"17034:3:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2639,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"17039:7:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2640,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2626,"src":"17048:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2633,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"16991:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2632,"name":"IERC1155ReceiverUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"16963:27:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155ReceiverUpgradeable_$2752_$","typeString":"type(contract IERC1155ReceiverUpgradeable)"}},"id":2634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16963:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1155ReceiverUpgradeable_$2752","typeString":"contract IERC1155ReceiverUpgradeable"}},"id":2635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16995:22:11","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":2751,"src":"16963:54:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"}},"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16963:90:11","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2673,"nodeType":"TryStatement","src":"16959:535:11"}]}}]},"id":2677,"implemented":true,"kind":"function","modifiers":[],"name":"_doSafeBatchTransferAcceptanceCheck","nameLocation":"16705:35:11","nodeType":"FunctionDefinition","parameters":{"id":2627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2614,"mutability":"mutable","name":"operator","nameLocation":"16758:8:11","nodeType":"VariableDeclaration","scope":2677,"src":"16750:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2613,"name":"address","nodeType":"ElementaryTypeName","src":"16750:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2616,"mutability":"mutable","name":"from","nameLocation":"16784:4:11","nodeType":"VariableDeclaration","scope":2677,"src":"16776:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2615,"name":"address","nodeType":"ElementaryTypeName","src":"16776:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2618,"mutability":"mutable","name":"to","nameLocation":"16806:2:11","nodeType":"VariableDeclaration","scope":2677,"src":"16798:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2617,"name":"address","nodeType":"ElementaryTypeName","src":"16798:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2621,"mutability":"mutable","name":"ids","nameLocation":"16835:3:11","nodeType":"VariableDeclaration","scope":2677,"src":"16818:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2619,"name":"uint256","nodeType":"ElementaryTypeName","src":"16818:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2620,"nodeType":"ArrayTypeName","src":"16818:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2624,"mutability":"mutable","name":"amounts","nameLocation":"16865:7:11","nodeType":"VariableDeclaration","scope":2677,"src":"16848:24:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2622,"name":"uint256","nodeType":"ElementaryTypeName","src":"16848:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2623,"nodeType":"ArrayTypeName","src":"16848:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2626,"mutability":"mutable","name":"data","nameLocation":"16895:4:11","nodeType":"VariableDeclaration","scope":2677,"src":"16882:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2625,"name":"bytes","nodeType":"ElementaryTypeName","src":"16882:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16740:165:11"},"returnParameters":{"id":2628,"nodeType":"ParameterList","parameters":[],"src":"16914:0:11"},"scope":2711,"src":"16696:814:11","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2704,"nodeType":"Block","src":"17600:109:11","statements":[{"assignments":[2689],"declarations":[{"constant":false,"id":2689,"mutability":"mutable","name":"array","nameLocation":"17627:5:11","nodeType":"VariableDeclaration","scope":2704,"src":"17610:22:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2687,"name":"uint256","nodeType":"ElementaryTypeName","src":"17610:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2688,"nodeType":"ArrayTypeName","src":"17610:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":2695,"initialValue":{"arguments":[{"hexValue":"31","id":2693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17649:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":2692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17635:13:11","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":2690,"name":"uint256","nodeType":"ElementaryTypeName","src":"17639:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2691,"nodeType":"ArrayTypeName","src":"17639:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":2694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17635:16:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"17610:41:11"},{"expression":{"id":2700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2696,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2689,"src":"17661:5:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2698,"indexExpression":{"hexValue":"30","id":2697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17667:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17661:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2699,"name":"element","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2679,"src":"17672:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17661:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2701,"nodeType":"ExpressionStatement","src":"17661:18:11"},{"expression":{"id":2702,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2689,"src":"17697:5:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":2684,"id":2703,"nodeType":"Return","src":"17690:12:11"}]},"id":2705,"implemented":true,"kind":"function","modifiers":[],"name":"_asSingletonArray","nameLocation":"17525:17:11","nodeType":"FunctionDefinition","parameters":{"id":2680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2679,"mutability":"mutable","name":"element","nameLocation":"17551:7:11","nodeType":"VariableDeclaration","scope":2705,"src":"17543:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2678,"name":"uint256","nodeType":"ElementaryTypeName","src":"17543:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17542:17:11"},"returnParameters":{"id":2684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2683,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2705,"src":"17582:16:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2681,"name":"uint256","nodeType":"ElementaryTypeName","src":"17582:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2682,"nodeType":"ArrayTypeName","src":"17582:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"17581:18:11"},"scope":2711,"src":"17516:193:11","stateMutability":"pure","virtual":false,"visibility":"private"},{"constant":false,"documentation":{"id":2706,"nodeType":"StructuredDocumentation","src":"17715:254:11","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":2710,"mutability":"mutable","name":"__gap","nameLocation":"17994:5:11","nodeType":"VariableDeclaration","scope":2711,"src":"17974:25:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$47_storage","typeString":"uint256[47]"},"typeName":{"baseType":{"id":2707,"name":"uint256","nodeType":"ElementaryTypeName","src":"17974:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2709,"length":{"hexValue":"3437","id":2708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17982:2:11","typeDescriptions":{"typeIdentifier":"t_rational_47_by_1","typeString":"int_const 47"},"value":"47"},"nodeType":"ArrayTypeName","src":"17974:11:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$47_storage_ptr","typeString":"uint256[47]"}},"visibility":"private"}],"scope":2712,"src":"682:17320:11","usedErrors":[]}],"src":"109:17894:11"},"id":11},"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol","exportedSymbols":{"IERC1155ReceiverUpgradeable":[2752],"IERC165Upgradeable":[7305]},"id":2753,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2713,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:12"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","file":"../../utils/introspection/IERC165Upgradeable.sol","id":2714,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2753,"sourceUnit":7306,"src":"143:58:12","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2716,"name":"IERC165Upgradeable","nameLocations":["284:18:12"],"nodeType":"IdentifierPath","referencedDeclaration":7305,"src":"284:18:12"},"id":2717,"nodeType":"InheritanceSpecifier","src":"284:18:12"}],"canonicalName":"IERC1155ReceiverUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":2715,"nodeType":"StructuredDocumentation","src":"203:39:12","text":" @dev _Available since v3.1._"},"fullyImplemented":false,"id":2752,"linearizedBaseContracts":[2752,7305],"name":"IERC1155ReceiverUpgradeable","nameLocation":"253:27:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2718,"nodeType":"StructuredDocumentation","src":"309:826:12","text":" @dev Handles the receipt of a single ERC1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n NOTE: To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"},"functionSelector":"f23a6e61","id":2733,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"1149:17:12","nodeType":"FunctionDefinition","parameters":{"id":2729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2720,"mutability":"mutable","name":"operator","nameLocation":"1184:8:12","nodeType":"VariableDeclaration","scope":2733,"src":"1176:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2719,"name":"address","nodeType":"ElementaryTypeName","src":"1176:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2722,"mutability":"mutable","name":"from","nameLocation":"1210:4:12","nodeType":"VariableDeclaration","scope":2733,"src":"1202:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2721,"name":"address","nodeType":"ElementaryTypeName","src":"1202:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2724,"mutability":"mutable","name":"id","nameLocation":"1232:2:12","nodeType":"VariableDeclaration","scope":2733,"src":"1224:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2723,"name":"uint256","nodeType":"ElementaryTypeName","src":"1224:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2726,"mutability":"mutable","name":"value","nameLocation":"1252:5:12","nodeType":"VariableDeclaration","scope":2733,"src":"1244:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2725,"name":"uint256","nodeType":"ElementaryTypeName","src":"1244:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2728,"mutability":"mutable","name":"data","nameLocation":"1282:4:12","nodeType":"VariableDeclaration","scope":2733,"src":"1267:19:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2727,"name":"bytes","nodeType":"ElementaryTypeName","src":"1267:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1166:126:12"},"returnParameters":{"id":2732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2733,"src":"1311:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2730,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1311:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1310:8:12"},"scope":2752,"src":"1140:179:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2734,"nodeType":"StructuredDocumentation","src":"1325:994:12","text":" @dev Handles the receipt of a multiple ERC1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated.\n NOTE: To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"},"functionSelector":"bc197c81","id":2751,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"2333:22:12","nodeType":"FunctionDefinition","parameters":{"id":2747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2736,"mutability":"mutable","name":"operator","nameLocation":"2373:8:12","nodeType":"VariableDeclaration","scope":2751,"src":"2365:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2735,"name":"address","nodeType":"ElementaryTypeName","src":"2365:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2738,"mutability":"mutable","name":"from","nameLocation":"2399:4:12","nodeType":"VariableDeclaration","scope":2751,"src":"2391:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2737,"name":"address","nodeType":"ElementaryTypeName","src":"2391:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2741,"mutability":"mutable","name":"ids","nameLocation":"2432:3:12","nodeType":"VariableDeclaration","scope":2751,"src":"2413:22:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2739,"name":"uint256","nodeType":"ElementaryTypeName","src":"2413:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2740,"nodeType":"ArrayTypeName","src":"2413:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2744,"mutability":"mutable","name":"values","nameLocation":"2464:6:12","nodeType":"VariableDeclaration","scope":2751,"src":"2445:25:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2742,"name":"uint256","nodeType":"ElementaryTypeName","src":"2445:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2743,"nodeType":"ArrayTypeName","src":"2445:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2746,"mutability":"mutable","name":"data","nameLocation":"2495:4:12","nodeType":"VariableDeclaration","scope":2751,"src":"2480:19:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2745,"name":"bytes","nodeType":"ElementaryTypeName","src":"2480:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2355:150:12"},"returnParameters":{"id":2750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2751,"src":"2524:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2748,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2524:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2523:8:12"},"scope":2752,"src":"2324:208:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2753,"src":"243:2291:12","usedErrors":[]}],"src":"118:2417:12"},"id":12},"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol","exportedSymbols":{"IERC1155Upgradeable":[2874],"IERC165Upgradeable":[7305]},"id":2875,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2754,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:13"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","file":"../../utils/introspection/IERC165Upgradeable.sol","id":2755,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2875,"sourceUnit":7306,"src":"135:58:13","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2757,"name":"IERC165Upgradeable","nameLocations":["394:18:13"],"nodeType":"IdentifierPath","referencedDeclaration":7305,"src":"394:18:13"},"id":2758,"nodeType":"InheritanceSpecifier","src":"394:18:13"}],"canonicalName":"IERC1155Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":2756,"nodeType":"StructuredDocumentation","src":"195:165:13","text":" @dev Required interface of an ERC1155 compliant contract, as defined in the\n https://eips.ethereum.org/EIPS/eip-1155[EIP].\n _Available since v3.1._"},"fullyImplemented":false,"id":2874,"linearizedBaseContracts":[2874,7305],"name":"IERC1155Upgradeable","nameLocation":"371:19:13","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2759,"nodeType":"StructuredDocumentation","src":"419:121:13","text":" @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"eventSelector":"c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62","id":2771,"name":"TransferSingle","nameLocation":"551:14:13","nodeType":"EventDefinition","parameters":{"id":2770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2761,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"582:8:13","nodeType":"VariableDeclaration","scope":2771,"src":"566:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2760,"name":"address","nodeType":"ElementaryTypeName","src":"566:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2763,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"608:4:13","nodeType":"VariableDeclaration","scope":2771,"src":"592:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2762,"name":"address","nodeType":"ElementaryTypeName","src":"592:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2765,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"630:2:13","nodeType":"VariableDeclaration","scope":2771,"src":"614:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2764,"name":"address","nodeType":"ElementaryTypeName","src":"614:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2767,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"642:2:13","nodeType":"VariableDeclaration","scope":2771,"src":"634:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2766,"name":"uint256","nodeType":"ElementaryTypeName","src":"634:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2769,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"654:5:13","nodeType":"VariableDeclaration","scope":2771,"src":"646:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2768,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"565:95:13"},"src":"545:116:13"},{"anonymous":false,"documentation":{"id":2772,"nodeType":"StructuredDocumentation","src":"667:144:13","text":" @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n transfers."},"eventSelector":"4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb","id":2786,"name":"TransferBatch","nameLocation":"822:13:13","nodeType":"EventDefinition","parameters":{"id":2785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2774,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"861:8:13","nodeType":"VariableDeclaration","scope":2786,"src":"845:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"845:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2776,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"895:4:13","nodeType":"VariableDeclaration","scope":2786,"src":"879:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2775,"name":"address","nodeType":"ElementaryTypeName","src":"879:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2778,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"925:2:13","nodeType":"VariableDeclaration","scope":2786,"src":"909:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2777,"name":"address","nodeType":"ElementaryTypeName","src":"909:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2781,"indexed":false,"mutability":"mutable","name":"ids","nameLocation":"947:3:13","nodeType":"VariableDeclaration","scope":2786,"src":"937:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2779,"name":"uint256","nodeType":"ElementaryTypeName","src":"937:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2780,"nodeType":"ArrayTypeName","src":"937:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2784,"indexed":false,"mutability":"mutable","name":"values","nameLocation":"970:6:13","nodeType":"VariableDeclaration","scope":2786,"src":"960:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2782,"name":"uint256","nodeType":"ElementaryTypeName","src":"960:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2783,"nodeType":"ArrayTypeName","src":"960:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"835:147:13"},"src":"816:167:13"},{"anonymous":false,"documentation":{"id":2787,"nodeType":"StructuredDocumentation","src":"989:147:13","text":" @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n `approved`."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":2795,"name":"ApprovalForAll","nameLocation":"1147:14:13","nodeType":"EventDefinition","parameters":{"id":2794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2789,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1178:7:13","nodeType":"VariableDeclaration","scope":2795,"src":"1162:23:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2788,"name":"address","nodeType":"ElementaryTypeName","src":"1162:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2791,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1203:8:13","nodeType":"VariableDeclaration","scope":2795,"src":"1187:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2790,"name":"address","nodeType":"ElementaryTypeName","src":"1187:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2793,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"1218:8:13","nodeType":"VariableDeclaration","scope":2795,"src":"1213:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2792,"name":"bool","nodeType":"ElementaryTypeName","src":"1213:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1161:66:13"},"src":"1141:87:13"},{"anonymous":false,"documentation":{"id":2796,"nodeType":"StructuredDocumentation","src":"1234:343:13","text":" @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n If an {URI} event was emitted for `id`, the standard\n https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n returned by {IERC1155MetadataURI-uri}."},"eventSelector":"6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b","id":2802,"name":"URI","nameLocation":"1588:3:13","nodeType":"EventDefinition","parameters":{"id":2801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2798,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1599:5:13","nodeType":"VariableDeclaration","scope":2802,"src":"1592:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2797,"name":"string","nodeType":"ElementaryTypeName","src":"1592:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2800,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"1622:2:13","nodeType":"VariableDeclaration","scope":2802,"src":"1606:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2799,"name":"uint256","nodeType":"ElementaryTypeName","src":"1606:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1591:34:13"},"src":"1582:44:13"},{"documentation":{"id":2803,"nodeType":"StructuredDocumentation","src":"1632:173:13","text":" @dev Returns the amount of tokens of token type `id` owned by `account`.\n Requirements:\n - `account` cannot be the zero address."},"functionSelector":"00fdd58e","id":2812,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1819:9:13","nodeType":"FunctionDefinition","parameters":{"id":2808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2805,"mutability":"mutable","name":"account","nameLocation":"1837:7:13","nodeType":"VariableDeclaration","scope":2812,"src":"1829:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2804,"name":"address","nodeType":"ElementaryTypeName","src":"1829:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2807,"mutability":"mutable","name":"id","nameLocation":"1854:2:13","nodeType":"VariableDeclaration","scope":2812,"src":"1846:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2806,"name":"uint256","nodeType":"ElementaryTypeName","src":"1846:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1828:29:13"},"returnParameters":{"id":2811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2812,"src":"1881:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2809,"name":"uint256","nodeType":"ElementaryTypeName","src":"1881:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1880:9:13"},"scope":2874,"src":"1810:80:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2813,"nodeType":"StructuredDocumentation","src":"1896:188:13","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n Requirements:\n - `accounts` and `ids` must have the same length."},"functionSelector":"4e1273f4","id":2825,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOfBatch","nameLocation":"2098:14:13","nodeType":"FunctionDefinition","parameters":{"id":2820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2816,"mutability":"mutable","name":"accounts","nameLocation":"2132:8:13","nodeType":"VariableDeclaration","scope":2825,"src":"2113:27:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2814,"name":"address","nodeType":"ElementaryTypeName","src":"2113:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2815,"nodeType":"ArrayTypeName","src":"2113:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":2819,"mutability":"mutable","name":"ids","nameLocation":"2161:3:13","nodeType":"VariableDeclaration","scope":2825,"src":"2142:22:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2817,"name":"uint256","nodeType":"ElementaryTypeName","src":"2142:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2818,"nodeType":"ArrayTypeName","src":"2142:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2112:53:13"},"returnParameters":{"id":2824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2825,"src":"2213:16:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2821,"name":"uint256","nodeType":"ElementaryTypeName","src":"2213:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2822,"nodeType":"ArrayTypeName","src":"2213:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2212:18:13"},"scope":2874,"src":"2089:142:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2826,"nodeType":"StructuredDocumentation","src":"2237:248:13","text":" @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n Emits an {ApprovalForAll} event.\n Requirements:\n - `operator` cannot be the caller."},"functionSelector":"a22cb465","id":2833,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"2499:17:13","nodeType":"FunctionDefinition","parameters":{"id":2831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2828,"mutability":"mutable","name":"operator","nameLocation":"2525:8:13","nodeType":"VariableDeclaration","scope":2833,"src":"2517:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2827,"name":"address","nodeType":"ElementaryTypeName","src":"2517:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2830,"mutability":"mutable","name":"approved","nameLocation":"2540:8:13","nodeType":"VariableDeclaration","scope":2833,"src":"2535:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2829,"name":"bool","nodeType":"ElementaryTypeName","src":"2535:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2516:33:13"},"returnParameters":{"id":2832,"nodeType":"ParameterList","parameters":[],"src":"2558:0:13"},"scope":2874,"src":"2490:69:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2834,"nodeType":"StructuredDocumentation","src":"2565:135:13","text":" @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n See {setApprovalForAll}."},"functionSelector":"e985e9c5","id":2843,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"2714:16:13","nodeType":"FunctionDefinition","parameters":{"id":2839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2836,"mutability":"mutable","name":"account","nameLocation":"2739:7:13","nodeType":"VariableDeclaration","scope":2843,"src":"2731:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2835,"name":"address","nodeType":"ElementaryTypeName","src":"2731:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2838,"mutability":"mutable","name":"operator","nameLocation":"2756:8:13","nodeType":"VariableDeclaration","scope":2843,"src":"2748:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2837,"name":"address","nodeType":"ElementaryTypeName","src":"2748:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2730:35:13"},"returnParameters":{"id":2842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2841,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"2789:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2840,"name":"bool","nodeType":"ElementaryTypeName","src":"2789:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2788:6:13"},"scope":2874,"src":"2705:90:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2844,"nodeType":"StructuredDocumentation","src":"2801:556:13","text":" @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."},"functionSelector":"f242432a","id":2857,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"3371:16:13","nodeType":"FunctionDefinition","parameters":{"id":2855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2846,"mutability":"mutable","name":"from","nameLocation":"3405:4:13","nodeType":"VariableDeclaration","scope":2857,"src":"3397:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2845,"name":"address","nodeType":"ElementaryTypeName","src":"3397:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2848,"mutability":"mutable","name":"to","nameLocation":"3427:2:13","nodeType":"VariableDeclaration","scope":2857,"src":"3419:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2847,"name":"address","nodeType":"ElementaryTypeName","src":"3419:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2850,"mutability":"mutable","name":"id","nameLocation":"3447:2:13","nodeType":"VariableDeclaration","scope":2857,"src":"3439:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2849,"name":"uint256","nodeType":"ElementaryTypeName","src":"3439:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2852,"mutability":"mutable","name":"amount","nameLocation":"3467:6:13","nodeType":"VariableDeclaration","scope":2857,"src":"3459:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2851,"name":"uint256","nodeType":"ElementaryTypeName","src":"3459:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2854,"mutability":"mutable","name":"data","nameLocation":"3498:4:13","nodeType":"VariableDeclaration","scope":2857,"src":"3483:19:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2853,"name":"bytes","nodeType":"ElementaryTypeName","src":"3483:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3387:121:13"},"returnParameters":{"id":2856,"nodeType":"ParameterList","parameters":[],"src":"3517:0:13"},"scope":2874,"src":"3362:156:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2858,"nodeType":"StructuredDocumentation","src":"3524:390:13","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."},"functionSelector":"2eb2c2d6","id":2873,"implemented":false,"kind":"function","modifiers":[],"name":"safeBatchTransferFrom","nameLocation":"3928:21:13","nodeType":"FunctionDefinition","parameters":{"id":2871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2860,"mutability":"mutable","name":"from","nameLocation":"3967:4:13","nodeType":"VariableDeclaration","scope":2873,"src":"3959:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2859,"name":"address","nodeType":"ElementaryTypeName","src":"3959:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2862,"mutability":"mutable","name":"to","nameLocation":"3989:2:13","nodeType":"VariableDeclaration","scope":2873,"src":"3981:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2861,"name":"address","nodeType":"ElementaryTypeName","src":"3981:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2865,"mutability":"mutable","name":"ids","nameLocation":"4020:3:13","nodeType":"VariableDeclaration","scope":2873,"src":"4001:22:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2863,"name":"uint256","nodeType":"ElementaryTypeName","src":"4001:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2864,"nodeType":"ArrayTypeName","src":"4001:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2868,"mutability":"mutable","name":"amounts","nameLocation":"4052:7:13","nodeType":"VariableDeclaration","scope":2873,"src":"4033:26:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2866,"name":"uint256","nodeType":"ElementaryTypeName","src":"4033:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2867,"nodeType":"ArrayTypeName","src":"4033:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2870,"mutability":"mutable","name":"data","nameLocation":"4084:4:13","nodeType":"VariableDeclaration","scope":2873,"src":"4069:19:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2869,"name":"bytes","nodeType":"ElementaryTypeName","src":"4069:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3949:145:13"},"returnParameters":{"id":2872,"nodeType":"ParameterList","parameters":[],"src":"4103:0:13"},"scope":2874,"src":"3919:185:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2875,"src":"361:3745:13","usedErrors":[]}],"src":"110:3997:13"},"id":13},"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"ContextUpgradeable":[6489],"ERC1155SupplyUpgradeable":[3051],"ERC1155Upgradeable":[2711],"ERC165Upgradeable":[7293],"IERC1155MetadataURIUpgradeable":[3066],"IERC1155ReceiverUpgradeable":[2752],"IERC1155Upgradeable":[2874],"IERC165Upgradeable":[7305],"Initializable":[1466]},"id":3052,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2876,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"126:23:14"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol","file":"../ERC1155Upgradeable.sol","id":2877,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3052,"sourceUnit":2712,"src":"151:35:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../../proxy/utils/Initializable.sol","id":2878,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3052,"sourceUnit":1467,"src":"187:48:14","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2880,"name":"Initializable","nameLocations":["628:13:14"],"nodeType":"IdentifierPath","referencedDeclaration":1466,"src":"628:13:14"},"id":2881,"nodeType":"InheritanceSpecifier","src":"628:13:14"},{"baseName":{"id":2882,"name":"ERC1155Upgradeable","nameLocations":["643:18:14"],"nodeType":"IdentifierPath","referencedDeclaration":2711,"src":"643:18:14"},"id":2883,"nodeType":"InheritanceSpecifier","src":"643:18:14"}],"canonicalName":"ERC1155SupplyUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2879,"nodeType":"StructuredDocumentation","src":"237:344:14","text":" @dev Extension of ERC1155 that adds tracking of total supply per id.\n Useful for scenarios where Fungible and Non-fungible tokens have to be\n clearly identified. Note: While a totalSupply of 1 might mean the\n corresponding is an NFT, there is no guarantees that no other token with the\n same id are not going to be minted."},"fullyImplemented":true,"id":3051,"linearizedBaseContracts":[3051,2711,3066,2874,7293,7305,6489,1466],"name":"ERC1155SupplyUpgradeable","nameLocation":"600:24:14","nodeType":"ContractDefinition","nodes":[{"body":{"id":2888,"nodeType":"Block","src":"726:7:14","statements":[]},"id":2889,"implemented":true,"kind":"function","modifiers":[{"id":2886,"kind":"modifierInvocation","modifierName":{"id":2885,"name":"onlyInitializing","nameLocations":["709:16:14"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"709:16:14"},"nodeType":"ModifierInvocation","src":"709:16:14"}],"name":"__ERC1155Supply_init","nameLocation":"677:20:14","nodeType":"FunctionDefinition","parameters":{"id":2884,"nodeType":"ParameterList","parameters":[],"src":"697:2:14"},"returnParameters":{"id":2887,"nodeType":"ParameterList","parameters":[],"src":"726:0:14"},"scope":3051,"src":"668:65:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2894,"nodeType":"Block","src":"807:7:14","statements":[]},"id":2895,"implemented":true,"kind":"function","modifiers":[{"id":2892,"kind":"modifierInvocation","modifierName":{"id":2891,"name":"onlyInitializing","nameLocations":["790:16:14"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"790:16:14"},"nodeType":"ModifierInvocation","src":"790:16:14"}],"name":"__ERC1155Supply_init_unchained","nameLocation":"748:30:14","nodeType":"FunctionDefinition","parameters":{"id":2890,"nodeType":"ParameterList","parameters":[],"src":"778:2:14"},"returnParameters":{"id":2893,"nodeType":"ParameterList","parameters":[],"src":"807:0:14"},"scope":3051,"src":"739:75:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":false,"id":2899,"mutability":"mutable","name":"_totalSupply","nameLocation":"855:12:14","nodeType":"VariableDeclaration","scope":3051,"src":"819:48:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":2898,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2896,"name":"uint256","nodeType":"ElementaryTypeName","src":"827:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"819:27:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2897,"name":"uint256","nodeType":"ElementaryTypeName","src":"838:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":2911,"nodeType":"Block","src":"1016:40:14","statements":[{"expression":{"baseExpression":{"id":2907,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2899,"src":"1033:12:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":2909,"indexExpression":{"id":2908,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"1046:2:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1033:16:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2906,"id":2910,"nodeType":"Return","src":"1026:23:14"}]},"documentation":{"id":2900,"nodeType":"StructuredDocumentation","src":"874:66:14","text":" @dev Total amount of tokens in with a given id."},"functionSelector":"bd85b039","id":2912,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"954:11:14","nodeType":"FunctionDefinition","parameters":{"id":2903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2902,"mutability":"mutable","name":"id","nameLocation":"974:2:14","nodeType":"VariableDeclaration","scope":2912,"src":"966:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2901,"name":"uint256","nodeType":"ElementaryTypeName","src":"966:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"965:12:14"},"returnParameters":{"id":2906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2905,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2912,"src":"1007:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2904,"name":"uint256","nodeType":"ElementaryTypeName","src":"1007:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1006:9:14"},"scope":3051,"src":"945:111:14","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2927,"nodeType":"Block","src":"1212:68:14","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2922,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2915,"src":"1266:2:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2920,"name":"ERC1155SupplyUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"1229:24:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1155SupplyUpgradeable_$3051_$","typeString":"type(contract ERC1155SupplyUpgradeable)"}},"id":2921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1254:11:14","memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":2912,"src":"1229:36:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":2923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1229:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1272:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1229:44:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2919,"id":2926,"nodeType":"Return","src":"1222:51:14"}]},"documentation":{"id":2913,"nodeType":"StructuredDocumentation","src":"1062:82:14","text":" @dev Indicates whether any token exist with a given id, or not."},"functionSelector":"4f558e79","id":2928,"implemented":true,"kind":"function","modifiers":[],"name":"exists","nameLocation":"1158:6:14","nodeType":"FunctionDefinition","parameters":{"id":2916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2915,"mutability":"mutable","name":"id","nameLocation":"1173:2:14","nodeType":"VariableDeclaration","scope":2928,"src":"1165:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2914,"name":"uint256","nodeType":"ElementaryTypeName","src":"1165:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1164:12:14"},"returnParameters":{"id":2919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2928,"src":"1206:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2917,"name":"bool","nodeType":"ElementaryTypeName","src":"1206:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1205:6:14"},"scope":3051,"src":"1149:131:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2530],"body":{"id":3044,"nodeType":"Block","src":"1571:683:14","statements":[{"expression":{"arguments":[{"id":2950,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2931,"src":"1608:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2951,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2933,"src":"1618:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2952,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2935,"src":"1624:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2953,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"1628:3:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2954,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"1633:7:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2955,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"1642:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2947,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1581:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC1155SupplyUpgradeable_$3051_$","typeString":"type(contract super ERC1155SupplyUpgradeable)"}},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1587:20:14","memberName":"_beforeTokenTransfer","nodeType":"MemberAccess","referencedDeclaration":2530,"src":"1581:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":2956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1581:66:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2957,"nodeType":"ExpressionStatement","src":"1581:66:14"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2958,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2933,"src":"1662:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1678:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1670:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2959,"name":"address","nodeType":"ElementaryTypeName","src":"1670:7:14","typeDescriptions":{}}},"id":2962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1670:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1662:18:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2988,"nodeType":"IfStatement","src":"1658:156:14","trueBody":{"id":2987,"nodeType":"Block","src":"1682:132:14","statements":[{"body":{"id":2985,"nodeType":"Block","src":"1737:67:14","statements":[{"expression":{"id":2983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2975,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2899,"src":"1755:12:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":2979,"indexExpression":{"baseExpression":{"id":2976,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"1768:3:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2978,"indexExpression":{"id":2977,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2965,"src":"1772:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1768:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1755:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":2980,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"1779:7:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2982,"indexExpression":{"id":2981,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2965,"src":"1787:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1779:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1755:34:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2984,"nodeType":"ExpressionStatement","src":"1755:34:14"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2968,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2965,"src":"1716:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2969,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"1720:3:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1724:6:14","memberName":"length","nodeType":"MemberAccess","src":"1720:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1716:14:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2986,"initializationExpression":{"assignments":[2965],"declarations":[{"constant":false,"id":2965,"mutability":"mutable","name":"i","nameLocation":"1709:1:14","nodeType":"VariableDeclaration","scope":2986,"src":"1701:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2964,"name":"uint256","nodeType":"ElementaryTypeName","src":"1701:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2967,"initialValue":{"hexValue":"30","id":2966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1713:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1701:13:14"},"loopExpression":{"expression":{"id":2973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1732:3:14","subExpression":{"id":2972,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2965,"src":"1734:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2974,"nodeType":"ExpressionStatement","src":"1732:3:14"},"nodeType":"ForStatement","src":"1696:108:14"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2989,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2935,"src":"1828:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1842:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1834:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2990,"name":"address","nodeType":"ElementaryTypeName","src":"1834:7:14","typeDescriptions":{}}},"id":2993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1834:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1828:16:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3043,"nodeType":"IfStatement","src":"1824:424:14","trueBody":{"id":3042,"nodeType":"Block","src":"1846:402:14","statements":[{"body":{"id":3040,"nodeType":"Block","src":"1901:337:14","statements":[{"assignments":[3007],"declarations":[{"constant":false,"id":3007,"mutability":"mutable","name":"id","nameLocation":"1927:2:14","nodeType":"VariableDeclaration","scope":3040,"src":"1919:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3006,"name":"uint256","nodeType":"ElementaryTypeName","src":"1919:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3011,"initialValue":{"baseExpression":{"id":3008,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"1932:3:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3010,"indexExpression":{"id":3009,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2996,"src":"1936:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1932:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1919:19:14"},{"assignments":[3013],"declarations":[{"constant":false,"id":3013,"mutability":"mutable","name":"amount","nameLocation":"1964:6:14","nodeType":"VariableDeclaration","scope":3040,"src":"1956:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3012,"name":"uint256","nodeType":"ElementaryTypeName","src":"1956:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3017,"initialValue":{"baseExpression":{"id":3014,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"1973:7:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3016,"indexExpression":{"id":3015,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2996,"src":"1981:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1973:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1956:27:14"},{"assignments":[3019],"declarations":[{"constant":false,"id":3019,"mutability":"mutable","name":"supply","nameLocation":"2009:6:14","nodeType":"VariableDeclaration","scope":3040,"src":"2001:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3018,"name":"uint256","nodeType":"ElementaryTypeName","src":"2001:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3023,"initialValue":{"baseExpression":{"id":3020,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2899,"src":"2018:12:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3022,"indexExpression":{"id":3021,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"2031:2:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2018:16:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2001:33:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3025,"name":"supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"2060:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3026,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"2070:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2060:16:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e20616d6f756e74206578636565647320746f74616c537570706c79","id":3028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2078:42:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_9eb0869d69143813ac9f244871191d8f2e530e71a4599ba9db4501f0f6110ee4","typeString":"literal_string \"ERC1155: burn amount exceeds totalSupply\""},"value":"ERC1155: burn amount exceeds totalSupply"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9eb0869d69143813ac9f244871191d8f2e530e71a4599ba9db4501f0f6110ee4","typeString":"literal_string \"ERC1155: burn amount exceeds totalSupply\""}],"id":3024,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2052:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2052:69:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3030,"nodeType":"ExpressionStatement","src":"2052:69:14"},{"id":3039,"nodeType":"UncheckedBlock","src":"2139:85:14","statements":[{"expression":{"id":3037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3031,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2899,"src":"2171:12:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3033,"indexExpression":{"id":3032,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"2184:2:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2171:16:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3034,"name":"supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3019,"src":"2190:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3035,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"2199:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2190:15:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2171:34:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3038,"nodeType":"ExpressionStatement","src":"2171:34:14"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2999,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2996,"src":"1880:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3000,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"1884:3:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1888:6:14","memberName":"length","nodeType":"MemberAccess","src":"1884:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1880:14:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3041,"initializationExpression":{"assignments":[2996],"declarations":[{"constant":false,"id":2996,"mutability":"mutable","name":"i","nameLocation":"1873:1:14","nodeType":"VariableDeclaration","scope":3041,"src":"1865:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2995,"name":"uint256","nodeType":"ElementaryTypeName","src":"1865:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2998,"initialValue":{"hexValue":"30","id":2997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1877:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1865:13:14"},"loopExpression":{"expression":{"id":3004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1896:3:14","subExpression":{"id":3003,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2996,"src":"1898:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3005,"nodeType":"ExpressionStatement","src":"1896:3:14"},"nodeType":"ForStatement","src":"1860:378:14"}]}}]},"documentation":{"id":2929,"nodeType":"StructuredDocumentation","src":"1286:59:14","text":" @dev See {ERC1155-_beforeTokenTransfer}."},"id":3045,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"1359:20:14","nodeType":"FunctionDefinition","overrides":{"id":2945,"nodeType":"OverrideSpecifier","overrides":[],"src":"1562:8:14"},"parameters":{"id":2944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2931,"mutability":"mutable","name":"operator","nameLocation":"1397:8:14","nodeType":"VariableDeclaration","scope":3045,"src":"1389:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2930,"name":"address","nodeType":"ElementaryTypeName","src":"1389:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2933,"mutability":"mutable","name":"from","nameLocation":"1423:4:14","nodeType":"VariableDeclaration","scope":3045,"src":"1415:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2932,"name":"address","nodeType":"ElementaryTypeName","src":"1415:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2935,"mutability":"mutable","name":"to","nameLocation":"1445:2:14","nodeType":"VariableDeclaration","scope":3045,"src":"1437:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2934,"name":"address","nodeType":"ElementaryTypeName","src":"1437:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2938,"mutability":"mutable","name":"ids","nameLocation":"1474:3:14","nodeType":"VariableDeclaration","scope":3045,"src":"1457:20:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2936,"name":"uint256","nodeType":"ElementaryTypeName","src":"1457:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2937,"nodeType":"ArrayTypeName","src":"1457:9:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2941,"mutability":"mutable","name":"amounts","nameLocation":"1504:7:14","nodeType":"VariableDeclaration","scope":3045,"src":"1487:24:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2939,"name":"uint256","nodeType":"ElementaryTypeName","src":"1487:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2940,"nodeType":"ArrayTypeName","src":"1487:9:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2943,"mutability":"mutable","name":"data","nameLocation":"1534:4:14","nodeType":"VariableDeclaration","scope":3045,"src":"1521:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2942,"name":"bytes","nodeType":"ElementaryTypeName","src":"1521:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1379:165:14"},"returnParameters":{"id":2946,"nodeType":"ParameterList","parameters":[],"src":"1571:0:14"},"scope":3051,"src":"1350:904:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":3046,"nodeType":"StructuredDocumentation","src":"2260:254:14","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":3050,"mutability":"mutable","name":"__gap","nameLocation":"2539:5:14","nodeType":"VariableDeclaration","scope":3051,"src":"2519:25:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":3047,"name":"uint256","nodeType":"ElementaryTypeName","src":"2519:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3049,"length":{"hexValue":"3439","id":3048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2527:2:14","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"2519:11:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":3052,"src":"582:1965:14","usedErrors":[]}],"src":"126:2422:14"},"id":14},"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol","exportedSymbols":{"IERC1155MetadataURIUpgradeable":[3066],"IERC1155Upgradeable":[2874],"IERC165Upgradeable":[7305]},"id":3067,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3053,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"117:23:15"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol","file":"../IERC1155Upgradeable.sol","id":3054,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3067,"sourceUnit":2875,"src":"142:36:15","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3056,"name":"IERC1155Upgradeable","nameLocations":["419:19:15"],"nodeType":"IdentifierPath","referencedDeclaration":2874,"src":"419:19:15"},"id":3057,"nodeType":"InheritanceSpecifier","src":"419:19:15"}],"canonicalName":"IERC1155MetadataURIUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":3055,"nodeType":"StructuredDocumentation","src":"180:194:15","text":" @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n _Available since v3.1._"},"fullyImplemented":false,"id":3066,"linearizedBaseContracts":[3066,2874,7305],"name":"IERC1155MetadataURIUpgradeable","nameLocation":"385:30:15","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3058,"nodeType":"StructuredDocumentation","src":"445:192:15","text":" @dev Returns the URI for token type `id`.\n If the `\\{id\\}` substring is present in the URI, it must be replaced by\n clients with the actual token type ID."},"functionSelector":"0e89341c","id":3065,"implemented":false,"kind":"function","modifiers":[],"name":"uri","nameLocation":"651:3:15","nodeType":"FunctionDefinition","parameters":{"id":3061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3060,"mutability":"mutable","name":"id","nameLocation":"663:2:15","nodeType":"VariableDeclaration","scope":3065,"src":"655:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3059,"name":"uint256","nodeType":"ElementaryTypeName","src":"655:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"654:12:15"},"returnParameters":{"id":3064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3063,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3065,"src":"690:13:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3062,"name":"string","nodeType":"ElementaryTypeName","src":"690:6:15","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"689:15:15"},"scope":3066,"src":"642:63:15","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3067,"src":"375:332:15","usedErrors":[]}],"src":"117:591:15"},"id":15},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","exportedSymbols":{"IERC20Upgradeable":[3144]},"id":3145,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3068,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:16"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":3069,"nodeType":"StructuredDocumentation","src":"131:70:16","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":3144,"linearizedBaseContracts":[3144],"name":"IERC20Upgradeable","nameLocation":"212:17:16","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3070,"nodeType":"StructuredDocumentation","src":"236:158:16","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":3078,"name":"Transfer","nameLocation":"405:8:16","nodeType":"EventDefinition","parameters":{"id":3077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3072,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"430:4:16","nodeType":"VariableDeclaration","scope":3078,"src":"414:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3071,"name":"address","nodeType":"ElementaryTypeName","src":"414:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3074,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"452:2:16","nodeType":"VariableDeclaration","scope":3078,"src":"436:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3073,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3076,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"464:5:16","nodeType":"VariableDeclaration","scope":3078,"src":"456:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3075,"name":"uint256","nodeType":"ElementaryTypeName","src":"456:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"413:57:16"},"src":"399:72:16"},{"anonymous":false,"documentation":{"id":3079,"nodeType":"StructuredDocumentation","src":"477:148:16","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":3087,"name":"Approval","nameLocation":"636:8:16","nodeType":"EventDefinition","parameters":{"id":3086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3081,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"661:5:16","nodeType":"VariableDeclaration","scope":3087,"src":"645:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3080,"name":"address","nodeType":"ElementaryTypeName","src":"645:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3083,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"684:7:16","nodeType":"VariableDeclaration","scope":3087,"src":"668:23:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3082,"name":"address","nodeType":"ElementaryTypeName","src":"668:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3085,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"701:5:16","nodeType":"VariableDeclaration","scope":3087,"src":"693:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3084,"name":"uint256","nodeType":"ElementaryTypeName","src":"693:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"644:63:16"},"src":"630:78:16"},{"documentation":{"id":3088,"nodeType":"StructuredDocumentation","src":"714:66:16","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":3093,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"794:11:16","nodeType":"FunctionDefinition","parameters":{"id":3089,"nodeType":"ParameterList","parameters":[],"src":"805:2:16"},"returnParameters":{"id":3092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3093,"src":"831:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3090,"name":"uint256","nodeType":"ElementaryTypeName","src":"831:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"830:9:16"},"scope":3144,"src":"785:55:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3094,"nodeType":"StructuredDocumentation","src":"846:72:16","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":3101,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"932:9:16","nodeType":"FunctionDefinition","parameters":{"id":3097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3096,"mutability":"mutable","name":"account","nameLocation":"950:7:16","nodeType":"VariableDeclaration","scope":3101,"src":"942:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3095,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"941:17:16"},"returnParameters":{"id":3100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3101,"src":"982:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3098,"name":"uint256","nodeType":"ElementaryTypeName","src":"982:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"981:9:16"},"scope":3144,"src":"923:68:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3102,"nodeType":"StructuredDocumentation","src":"997:202:16","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":3111,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:16","nodeType":"FunctionDefinition","parameters":{"id":3107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3104,"mutability":"mutable","name":"to","nameLocation":"1230:2:16","nodeType":"VariableDeclaration","scope":3111,"src":"1222:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3103,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3106,"mutability":"mutable","name":"amount","nameLocation":"1242:6:16","nodeType":"VariableDeclaration","scope":3111,"src":"1234:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3105,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:28:16"},"returnParameters":{"id":3110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3111,"src":"1268:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3108,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:16"},"scope":3144,"src":"1204:70:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3112,"nodeType":"StructuredDocumentation","src":"1280:264:16","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":3121,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:16","nodeType":"FunctionDefinition","parameters":{"id":3117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3114,"mutability":"mutable","name":"owner","nameLocation":"1576:5:16","nodeType":"VariableDeclaration","scope":3121,"src":"1568:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3113,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3116,"mutability":"mutable","name":"spender","nameLocation":"1591:7:16","nodeType":"VariableDeclaration","scope":3121,"src":"1583:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3115,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:16"},"returnParameters":{"id":3120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3119,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3121,"src":"1623:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:16"},"scope":3144,"src":"1549:83:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3122,"nodeType":"StructuredDocumentation","src":"1638:642:16","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":3131,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2294:7:16","nodeType":"FunctionDefinition","parameters":{"id":3127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3124,"mutability":"mutable","name":"spender","nameLocation":"2310:7:16","nodeType":"VariableDeclaration","scope":3131,"src":"2302:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3123,"name":"address","nodeType":"ElementaryTypeName","src":"2302:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3126,"mutability":"mutable","name":"amount","nameLocation":"2327:6:16","nodeType":"VariableDeclaration","scope":3131,"src":"2319:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3125,"name":"uint256","nodeType":"ElementaryTypeName","src":"2319:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2301:33:16"},"returnParameters":{"id":3130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3129,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3131,"src":"2353:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3128,"name":"bool","nodeType":"ElementaryTypeName","src":"2353:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2352:6:16"},"scope":3144,"src":"2285:74:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3132,"nodeType":"StructuredDocumentation","src":"2365:287:16","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":3143,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2666:12:16","nodeType":"FunctionDefinition","parameters":{"id":3139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3134,"mutability":"mutable","name":"from","nameLocation":"2696:4:16","nodeType":"VariableDeclaration","scope":3143,"src":"2688:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3133,"name":"address","nodeType":"ElementaryTypeName","src":"2688:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3136,"mutability":"mutable","name":"to","nameLocation":"2718:2:16","nodeType":"VariableDeclaration","scope":3143,"src":"2710:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3135,"name":"address","nodeType":"ElementaryTypeName","src":"2710:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3138,"mutability":"mutable","name":"amount","nameLocation":"2738:6:16","nodeType":"VariableDeclaration","scope":3143,"src":"2730:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3137,"name":"uint256","nodeType":"ElementaryTypeName","src":"2730:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2678:72:16"},"returnParameters":{"id":3142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3143,"src":"2769:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3140,"name":"bool","nodeType":"ElementaryTypeName","src":"2769:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2768:6:16"},"scope":3144,"src":"2657:118:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3145,"src":"202:2575:16","usedErrors":[]}],"src":"106:2672:16"},"id":16},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol","exportedSymbols":{"IERC20PermitUpgradeable":[3180]},"id":3181,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3146,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"114:23:17"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20PermitUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":3147,"nodeType":"StructuredDocumentation","src":"139:480:17","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":3180,"linearizedBaseContracts":[3180],"name":"IERC20PermitUpgradeable","nameLocation":"630:23:17","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3148,"nodeType":"StructuredDocumentation","src":"660:792:17","text":" @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":3165,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"1466:6:17","nodeType":"FunctionDefinition","parameters":{"id":3163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3150,"mutability":"mutable","name":"owner","nameLocation":"1490:5:17","nodeType":"VariableDeclaration","scope":3165,"src":"1482:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3149,"name":"address","nodeType":"ElementaryTypeName","src":"1482:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3152,"mutability":"mutable","name":"spender","nameLocation":"1513:7:17","nodeType":"VariableDeclaration","scope":3165,"src":"1505:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3151,"name":"address","nodeType":"ElementaryTypeName","src":"1505:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3154,"mutability":"mutable","name":"value","nameLocation":"1538:5:17","nodeType":"VariableDeclaration","scope":3165,"src":"1530:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3153,"name":"uint256","nodeType":"ElementaryTypeName","src":"1530:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3156,"mutability":"mutable","name":"deadline","nameLocation":"1561:8:17","nodeType":"VariableDeclaration","scope":3165,"src":"1553:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3155,"name":"uint256","nodeType":"ElementaryTypeName","src":"1553:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3158,"mutability":"mutable","name":"v","nameLocation":"1585:1:17","nodeType":"VariableDeclaration","scope":3165,"src":"1579:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3157,"name":"uint8","nodeType":"ElementaryTypeName","src":"1579:5:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3160,"mutability":"mutable","name":"r","nameLocation":"1604:1:17","nodeType":"VariableDeclaration","scope":3165,"src":"1596:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3159,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1596:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3162,"mutability":"mutable","name":"s","nameLocation":"1623:1:17","nodeType":"VariableDeclaration","scope":3165,"src":"1615:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3161,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1615:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1472:158:17"},"returnParameters":{"id":3164,"nodeType":"ParameterList","parameters":[],"src":"1639:0:17"},"scope":3180,"src":"1457:183:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3166,"nodeType":"StructuredDocumentation","src":"1646:294:17","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":3173,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"1954:6:17","nodeType":"FunctionDefinition","parameters":{"id":3169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3168,"mutability":"mutable","name":"owner","nameLocation":"1969:5:17","nodeType":"VariableDeclaration","scope":3173,"src":"1961:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3167,"name":"address","nodeType":"ElementaryTypeName","src":"1961:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1960:15:17"},"returnParameters":{"id":3172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3171,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3173,"src":"1999:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3170,"name":"uint256","nodeType":"ElementaryTypeName","src":"1999:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1998:9:17"},"scope":3180,"src":"1945:63:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3174,"nodeType":"StructuredDocumentation","src":"2014:128:17","text":" @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"functionSelector":"3644e515","id":3179,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"2209:16:17","nodeType":"FunctionDefinition","parameters":{"id":3175,"nodeType":"ParameterList","parameters":[],"src":"2225:2:17"},"returnParameters":{"id":3178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3177,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3179,"src":"2251:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3176,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2251:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2250:9:17"},"scope":3180,"src":"2200:60:17","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3181,"src":"620:1642:17","usedErrors":[]}],"src":"114:2149:17"},"id":17},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"IERC20PermitUpgradeable":[3180],"IERC20Upgradeable":[3144],"SafeERC20Upgradeable":[3461]},"id":3462,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3182,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:18"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","file":"../IERC20Upgradeable.sol","id":3183,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3462,"sourceUnit":3145,"src":"140:34:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol","file":"../extensions/draft-IERC20PermitUpgradeable.sol","id":3184,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3462,"sourceUnit":3181,"src":"175:57:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../../utils/AddressUpgradeable.sol","id":3185,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3462,"sourceUnit":5077,"src":"233:47:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20Upgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":3186,"nodeType":"StructuredDocumentation","src":"282:457:18","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":3461,"linearizedBaseContracts":[3461],"name":"SafeERC20Upgradeable","nameLocation":"748:20:18","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3189,"libraryName":{"id":3187,"name":"AddressUpgradeable","nameLocations":["781:18:18"],"nodeType":"IdentifierPath","referencedDeclaration":5076,"src":"781:18:18"},"nodeType":"UsingForDirective","src":"775:37:18","typeName":{"id":3188,"name":"address","nodeType":"ElementaryTypeName","src":"804:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":3211,"nodeType":"Block","src":"931:103:18","statements":[{"expression":{"arguments":[{"id":3200,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"961:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":3203,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"991:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"id":3204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"997:8:18","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":3111,"src":"991:14:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1006:8:18","memberName":"selector","nodeType":"MemberAccess","src":"991:23:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":3206,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3194,"src":"1016:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3207,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3196,"src":"1020:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3201,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"968:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"972:18:18","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"968:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":3208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"968:58:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3199,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3460,"src":"941:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$3144_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":3209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"941:86:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3210,"nodeType":"ExpressionStatement","src":"941:86:18"}]},"id":3212,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"827:12:18","nodeType":"FunctionDefinition","parameters":{"id":3197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3192,"mutability":"mutable","name":"token","nameLocation":"867:5:18","nodeType":"VariableDeclaration","scope":3212,"src":"849:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"},"typeName":{"id":3191,"nodeType":"UserDefinedTypeName","pathNode":{"id":3190,"name":"IERC20Upgradeable","nameLocations":["849:17:18"],"nodeType":"IdentifierPath","referencedDeclaration":3144,"src":"849:17:18"},"referencedDeclaration":3144,"src":"849:17:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":3194,"mutability":"mutable","name":"to","nameLocation":"890:2:18","nodeType":"VariableDeclaration","scope":3212,"src":"882:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3193,"name":"address","nodeType":"ElementaryTypeName","src":"882:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3196,"mutability":"mutable","name":"value","nameLocation":"910:5:18","nodeType":"VariableDeclaration","scope":3212,"src":"902:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3195,"name":"uint256","nodeType":"ElementaryTypeName","src":"902:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"839:82:18"},"returnParameters":{"id":3198,"nodeType":"ParameterList","parameters":[],"src":"931:0:18"},"scope":3461,"src":"818:216:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3237,"nodeType":"Block","src":"1179:113:18","statements":[{"expression":{"arguments":[{"id":3225,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"1209:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":3228,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"1239:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"id":3229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1245:12:18","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3143,"src":"1239:18:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1258:8:18","memberName":"selector","nodeType":"MemberAccess","src":"1239:27:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":3231,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"1268:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3232,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3219,"src":"1274:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3233,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3221,"src":"1278:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3226,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1216:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1220:18:18","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1216:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":3234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1216:68:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3224,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3460,"src":"1189:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$3144_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":3235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1189:96:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3236,"nodeType":"ExpressionStatement","src":"1189:96:18"}]},"id":3238,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1049:16:18","nodeType":"FunctionDefinition","parameters":{"id":3222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3215,"mutability":"mutable","name":"token","nameLocation":"1093:5:18","nodeType":"VariableDeclaration","scope":3238,"src":"1075:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"},"typeName":{"id":3214,"nodeType":"UserDefinedTypeName","pathNode":{"id":3213,"name":"IERC20Upgradeable","nameLocations":["1075:17:18"],"nodeType":"IdentifierPath","referencedDeclaration":3144,"src":"1075:17:18"},"referencedDeclaration":3144,"src":"1075:17:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":3217,"mutability":"mutable","name":"from","nameLocation":"1116:4:18","nodeType":"VariableDeclaration","scope":3238,"src":"1108:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3216,"name":"address","nodeType":"ElementaryTypeName","src":"1108:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3219,"mutability":"mutable","name":"to","nameLocation":"1138:2:18","nodeType":"VariableDeclaration","scope":3238,"src":"1130:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3218,"name":"address","nodeType":"ElementaryTypeName","src":"1130:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3221,"mutability":"mutable","name":"value","nameLocation":"1158:5:18","nodeType":"VariableDeclaration","scope":3238,"src":"1150:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3220,"name":"uint256","nodeType":"ElementaryTypeName","src":"1150:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1065:104:18"},"returnParameters":{"id":3223,"nodeType":"ParameterList","parameters":[],"src":"1179:0:18"},"scope":3461,"src":"1040:252:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3281,"nodeType":"Block","src":"1669:497:18","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3250,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"1918:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1927:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1918:10:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3253,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1917:12:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":3258,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1958:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$3461","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$3461","typeString":"library SafeERC20Upgradeable"}],"id":3257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1950:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3256,"name":"address","nodeType":"ElementaryTypeName","src":"1950:7:18","typeDescriptions":{}}},"id":3259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1950:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3260,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3244,"src":"1965:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3254,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"1934:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"id":3255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1940:9:18","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":3121,"src":"1934:15:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":3261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1934:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1977:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1934:44:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3264,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1933:46:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1917:62:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","id":3266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1993:56:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""},"value":"SafeERC20: approve from non-zero to non-zero allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"id":3249,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1896:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1896:163:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3268,"nodeType":"ExpressionStatement","src":"1896:163:18"},{"expression":{"arguments":[{"id":3270,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"2089:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":3273,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"2119:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2125:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":3131,"src":"2119:13:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2133:8:18","memberName":"selector","nodeType":"MemberAccess","src":"2119:22:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":3276,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3244,"src":"2143:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3277,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"2152:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3271,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2096:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2100:18:18","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2096:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":3278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2096:62:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3269,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3460,"src":"2069:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$3144_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":3279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2069:90:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3280,"nodeType":"ExpressionStatement","src":"2069:90:18"}]},"documentation":{"id":3239,"nodeType":"StructuredDocumentation","src":"1298:249:18","text":" @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."},"id":3282,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nameLocation":"1561:11:18","nodeType":"FunctionDefinition","parameters":{"id":3247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3242,"mutability":"mutable","name":"token","nameLocation":"1600:5:18","nodeType":"VariableDeclaration","scope":3282,"src":"1582:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"},"typeName":{"id":3241,"nodeType":"UserDefinedTypeName","pathNode":{"id":3240,"name":"IERC20Upgradeable","nameLocations":["1582:17:18"],"nodeType":"IdentifierPath","referencedDeclaration":3144,"src":"1582:17:18"},"referencedDeclaration":3144,"src":"1582:17:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":3244,"mutability":"mutable","name":"spender","nameLocation":"1623:7:18","nodeType":"VariableDeclaration","scope":3282,"src":"1615:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3243,"name":"address","nodeType":"ElementaryTypeName","src":"1615:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3246,"mutability":"mutable","name":"value","nameLocation":"1648:5:18","nodeType":"VariableDeclaration","scope":3282,"src":"1640:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3245,"name":"uint256","nodeType":"ElementaryTypeName","src":"1640:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1572:87:18"},"returnParameters":{"id":3248,"nodeType":"ParameterList","parameters":[],"src":"1669:0:18"},"scope":3461,"src":"1552:614:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3317,"nodeType":"Block","src":"2299:194:18","statements":[{"assignments":[3293],"declarations":[{"constant":false,"id":3293,"mutability":"mutable","name":"newAllowance","nameLocation":"2317:12:18","nodeType":"VariableDeclaration","scope":3317,"src":"2309:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3292,"name":"uint256","nodeType":"ElementaryTypeName","src":"2309:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3304,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":3298,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2356:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$3461","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$3461","typeString":"library SafeERC20Upgradeable"}],"id":3297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2348:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3296,"name":"address","nodeType":"ElementaryTypeName","src":"2348:7:18","typeDescriptions":{}}},"id":3299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2348:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3300,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3287,"src":"2363:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3294,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"2332:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"id":3295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2338:9:18","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":3121,"src":"2332:15:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2332:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3302,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3289,"src":"2374:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2332:47:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2309:70:18"},{"expression":{"arguments":[{"id":3306,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"2409:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":3309,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"2439:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"id":3310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2445:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":3131,"src":"2439:13:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2453:8:18","memberName":"selector","nodeType":"MemberAccess","src":"2439:22:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":3312,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3287,"src":"2463:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3313,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3293,"src":"2472:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3307,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2416:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2420:18:18","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2416:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":3314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2416:69:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3305,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3460,"src":"2389:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$3144_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":3315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2389:97:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3316,"nodeType":"ExpressionStatement","src":"2389:97:18"}]},"id":3318,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"2181:21:18","nodeType":"FunctionDefinition","parameters":{"id":3290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3285,"mutability":"mutable","name":"token","nameLocation":"2230:5:18","nodeType":"VariableDeclaration","scope":3318,"src":"2212:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"},"typeName":{"id":3284,"nodeType":"UserDefinedTypeName","pathNode":{"id":3283,"name":"IERC20Upgradeable","nameLocations":["2212:17:18"],"nodeType":"IdentifierPath","referencedDeclaration":3144,"src":"2212:17:18"},"referencedDeclaration":3144,"src":"2212:17:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":3287,"mutability":"mutable","name":"spender","nameLocation":"2253:7:18","nodeType":"VariableDeclaration","scope":3318,"src":"2245:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3286,"name":"address","nodeType":"ElementaryTypeName","src":"2245:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3289,"mutability":"mutable","name":"value","nameLocation":"2278:5:18","nodeType":"VariableDeclaration","scope":3318,"src":"2270:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3288,"name":"uint256","nodeType":"ElementaryTypeName","src":"2270:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2202:87:18"},"returnParameters":{"id":3291,"nodeType":"ParameterList","parameters":[],"src":"2299:0:18"},"scope":3461,"src":"2172:321:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3365,"nodeType":"Block","src":"2626:370:18","statements":[{"id":3364,"nodeType":"UncheckedBlock","src":"2636:354:18","statements":[{"assignments":[3329],"declarations":[{"constant":false,"id":3329,"mutability":"mutable","name":"oldAllowance","nameLocation":"2668:12:18","nodeType":"VariableDeclaration","scope":3364,"src":"2660:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3328,"name":"uint256","nodeType":"ElementaryTypeName","src":"2660:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3338,"initialValue":{"arguments":[{"arguments":[{"id":3334,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2707:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$3461","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$3461","typeString":"library SafeERC20Upgradeable"}],"id":3333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2699:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3332,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:18","typeDescriptions":{}}},"id":3335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2699:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3336,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3323,"src":"2714:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3330,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2683:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2689:9:18","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":3121,"src":"2683:15:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":3337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2683:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2660:62:18"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3340,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3329,"src":"2744:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3325,"src":"2760:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2744:21:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":3343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2767:43:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""},"value":"SafeERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""}],"id":3339,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2736:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2736:75:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3345,"nodeType":"ExpressionStatement","src":"2736:75:18"},{"assignments":[3347],"declarations":[{"constant":false,"id":3347,"mutability":"mutable","name":"newAllowance","nameLocation":"2833:12:18","nodeType":"VariableDeclaration","scope":3364,"src":"2825:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3346,"name":"uint256","nodeType":"ElementaryTypeName","src":"2825:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3351,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3348,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3329,"src":"2848:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3349,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3325,"src":"2863:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2848:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2825:43:18"},{"expression":{"arguments":[{"id":3353,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2902:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":3356,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2932:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"id":3357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2938:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":3131,"src":"2932:13:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2946:8:18","memberName":"selector","nodeType":"MemberAccess","src":"2932:22:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":3359,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3323,"src":"2956:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3360,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3347,"src":"2965:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3354,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2909:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2913:18:18","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2909:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":3361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2909:69:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3352,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3460,"src":"2882:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$3144_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":3362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2882:97:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3363,"nodeType":"ExpressionStatement","src":"2882:97:18"}]}]},"id":3366,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"2508:21:18","nodeType":"FunctionDefinition","parameters":{"id":3326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3321,"mutability":"mutable","name":"token","nameLocation":"2557:5:18","nodeType":"VariableDeclaration","scope":3366,"src":"2539:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"},"typeName":{"id":3320,"nodeType":"UserDefinedTypeName","pathNode":{"id":3319,"name":"IERC20Upgradeable","nameLocations":["2539:17:18"],"nodeType":"IdentifierPath","referencedDeclaration":3144,"src":"2539:17:18"},"referencedDeclaration":3144,"src":"2539:17:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":3323,"mutability":"mutable","name":"spender","nameLocation":"2580:7:18","nodeType":"VariableDeclaration","scope":3366,"src":"2572:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3322,"name":"address","nodeType":"ElementaryTypeName","src":"2572:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3325,"mutability":"mutable","name":"value","nameLocation":"2605:5:18","nodeType":"VariableDeclaration","scope":3366,"src":"2597:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3324,"name":"uint256","nodeType":"ElementaryTypeName","src":"2597:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2529:87:18"},"returnParameters":{"id":3327,"nodeType":"ParameterList","parameters":[],"src":"2626:0:18"},"scope":3461,"src":"2499:497:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3421,"nodeType":"Block","src":"3228:257:18","statements":[{"assignments":[3387],"declarations":[{"constant":false,"id":3387,"mutability":"mutable","name":"nonceBefore","nameLocation":"3246:11:18","nodeType":"VariableDeclaration","scope":3421,"src":"3238:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3386,"name":"uint256","nodeType":"ElementaryTypeName","src":"3238:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3392,"initialValue":{"arguments":[{"id":3390,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"3273:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3388,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3369,"src":"3260:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$3180","typeString":"contract IERC20PermitUpgradeable"}},"id":3389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3266:6:18","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":3173,"src":"3260:12:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3260:19:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3238:41:18"},{"expression":{"arguments":[{"id":3396,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"3302:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3397,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3373,"src":"3309:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3398,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"3318:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3399,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3377,"src":"3325:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3400,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3379,"src":"3335:1:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3401,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3381,"src":"3338:1:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3402,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3383,"src":"3341:1:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3393,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3369,"src":"3289:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$3180","typeString":"contract IERC20PermitUpgradeable"}},"id":3395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3295:6:18","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":3165,"src":"3289:12:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":3403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3289:54:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3404,"nodeType":"ExpressionStatement","src":"3289:54:18"},{"assignments":[3406],"declarations":[{"constant":false,"id":3406,"mutability":"mutable","name":"nonceAfter","nameLocation":"3361:10:18","nodeType":"VariableDeclaration","scope":3421,"src":"3353:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3405,"name":"uint256","nodeType":"ElementaryTypeName","src":"3353:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3411,"initialValue":{"arguments":[{"id":3409,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"3387:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3407,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3369,"src":"3374:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$3180","typeString":"contract IERC20PermitUpgradeable"}},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3380:6:18","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":3173,"src":"3374:12:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3374:19:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3353:40:18"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3413,"name":"nonceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3406,"src":"3411:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3414,"name":"nonceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3387,"src":"3425:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3439:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3425:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3411:29:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a207065726d697420646964206e6f742073756363656564","id":3418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3442:35:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""},"value":"SafeERC20: permit did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""}],"id":3412,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3403:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3403:75:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3420,"nodeType":"ExpressionStatement","src":"3403:75:18"}]},"id":3422,"implemented":true,"kind":"function","modifiers":[],"name":"safePermit","nameLocation":"3011:10:18","nodeType":"FunctionDefinition","parameters":{"id":3384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3369,"mutability":"mutable","name":"token","nameLocation":"3055:5:18","nodeType":"VariableDeclaration","scope":3422,"src":"3031:29:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$3180","typeString":"contract IERC20PermitUpgradeable"},"typeName":{"id":3368,"nodeType":"UserDefinedTypeName","pathNode":{"id":3367,"name":"IERC20PermitUpgradeable","nameLocations":["3031:23:18"],"nodeType":"IdentifierPath","referencedDeclaration":3180,"src":"3031:23:18"},"referencedDeclaration":3180,"src":"3031:23:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$3180","typeString":"contract IERC20PermitUpgradeable"}},"visibility":"internal"},{"constant":false,"id":3371,"mutability":"mutable","name":"owner","nameLocation":"3078:5:18","nodeType":"VariableDeclaration","scope":3422,"src":"3070:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3370,"name":"address","nodeType":"ElementaryTypeName","src":"3070:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3373,"mutability":"mutable","name":"spender","nameLocation":"3101:7:18","nodeType":"VariableDeclaration","scope":3422,"src":"3093:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3372,"name":"address","nodeType":"ElementaryTypeName","src":"3093:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3375,"mutability":"mutable","name":"value","nameLocation":"3126:5:18","nodeType":"VariableDeclaration","scope":3422,"src":"3118:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3374,"name":"uint256","nodeType":"ElementaryTypeName","src":"3118:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3377,"mutability":"mutable","name":"deadline","nameLocation":"3149:8:18","nodeType":"VariableDeclaration","scope":3422,"src":"3141:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3376,"name":"uint256","nodeType":"ElementaryTypeName","src":"3141:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3379,"mutability":"mutable","name":"v","nameLocation":"3173:1:18","nodeType":"VariableDeclaration","scope":3422,"src":"3167:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3378,"name":"uint8","nodeType":"ElementaryTypeName","src":"3167:5:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3381,"mutability":"mutable","name":"r","nameLocation":"3192:1:18","nodeType":"VariableDeclaration","scope":3422,"src":"3184:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3380,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3184:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3383,"mutability":"mutable","name":"s","nameLocation":"3211:1:18","nodeType":"VariableDeclaration","scope":3422,"src":"3203:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3382,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3203:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3021:197:18"},"returnParameters":{"id":3385,"nodeType":"ParameterList","parameters":[],"src":"3228:0:18"},"scope":3461,"src":"3002:483:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3459,"nodeType":"Block","src":"3949:636:18","statements":[{"assignments":[3432],"declarations":[{"constant":false,"id":3432,"mutability":"mutable","name":"returndata","nameLocation":"4311:10:18","nodeType":"VariableDeclaration","scope":3459,"src":"4298:23:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3431,"name":"bytes","nodeType":"ElementaryTypeName","src":"4298:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3441,"initialValue":{"arguments":[{"id":3438,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3428,"src":"4352:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","id":3439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4358:34:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""},"value":"SafeERC20: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"expression":{"arguments":[{"id":3435,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3426,"src":"4332:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}],"id":3434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4324:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3433,"name":"address","nodeType":"ElementaryTypeName","src":"4324:7:18","typeDescriptions":{}}},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4324:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4339:12:18","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":4882,"src":"4324:27:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":3440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4324:69:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4298:95:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3442,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3432,"src":"4407:10:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4418:6:18","memberName":"length","nodeType":"MemberAccess","src":"4407:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4427:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4407:21:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3458,"nodeType":"IfStatement","src":"4403:176:18","trueBody":{"id":3457,"nodeType":"Block","src":"4430:149:18","statements":[{"expression":{"arguments":[{"arguments":[{"id":3449,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3432,"src":"4502:10:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":3451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4515:4:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":3450,"name":"bool","nodeType":"ElementaryTypeName","src":"4515:4:18","typeDescriptions":{}}}],"id":3452,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4514:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":3447,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4491:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4495:6:18","memberName":"decode","nodeType":"MemberAccess","src":"4491:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":3453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4491:30:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","id":3454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4523:44:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""},"value":"SafeERC20: ERC20 operation did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"id":3446,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4483:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4483:85:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3456,"nodeType":"ExpressionStatement","src":"4483:85:18"}]}}]},"documentation":{"id":3423,"nodeType":"StructuredDocumentation","src":"3491:372:18","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."},"id":3460,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"3877:19:18","nodeType":"FunctionDefinition","parameters":{"id":3429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3426,"mutability":"mutable","name":"token","nameLocation":"3915:5:18","nodeType":"VariableDeclaration","scope":3460,"src":"3897:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"},"typeName":{"id":3425,"nodeType":"UserDefinedTypeName","pathNode":{"id":3424,"name":"IERC20Upgradeable","nameLocations":["3897:17:18"],"nodeType":"IdentifierPath","referencedDeclaration":3144,"src":"3897:17:18"},"referencedDeclaration":3144,"src":"3897:17:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":3428,"mutability":"mutable","name":"data","nameLocation":"3935:4:18","nodeType":"VariableDeclaration","scope":3460,"src":"3922:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3427,"name":"bytes","nodeType":"ElementaryTypeName","src":"3922:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3896:44:18"},"returnParameters":{"id":3430,"nodeType":"ParameterList","parameters":[],"src":"3949:0:18"},"scope":3461,"src":"3868:717:18","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":3462,"src":"740:3847:18","usedErrors":[]}],"src":"115:4473:18"},"id":18},"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"ContextUpgradeable":[6489],"ERC165Upgradeable":[7293],"ERC721Upgradeable":[4413],"IERC165Upgradeable":[7305],"IERC721MetadataUpgradeable":[4792],"IERC721ReceiverUpgradeable":[4431],"IERC721Upgradeable":[4547],"Initializable":[1466],"MathUpgradeable":[8170],"StringsUpgradeable":[6738]},"id":4414,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3463,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:19"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol","file":"./IERC721Upgradeable.sol","id":3464,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4414,"sourceUnit":4548,"src":"132:34:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol","file":"./IERC721ReceiverUpgradeable.sol","id":3465,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4414,"sourceUnit":4432,"src":"167:42:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol","file":"./extensions/IERC721MetadataUpgradeable.sol","id":3466,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4414,"sourceUnit":4793,"src":"210:53:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":3467,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4414,"sourceUnit":5077,"src":"264:44:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../../utils/ContextUpgradeable.sol","id":3468,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4414,"sourceUnit":6490,"src":"309:44:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol","file":"../../utils/StringsUpgradeable.sol","id":3469,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4414,"sourceUnit":6739,"src":"354:44:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"../../utils/introspection/ERC165Upgradeable.sol","id":3470,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4414,"sourceUnit":7294,"src":"399:57:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":3471,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4414,"sourceUnit":1467,"src":"457:45:19","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3473,"name":"Initializable","nameLocations":["781:13:19"],"nodeType":"IdentifierPath","referencedDeclaration":1466,"src":"781:13:19"},"id":3474,"nodeType":"InheritanceSpecifier","src":"781:13:19"},{"baseName":{"id":3475,"name":"ContextUpgradeable","nameLocations":["796:18:19"],"nodeType":"IdentifierPath","referencedDeclaration":6489,"src":"796:18:19"},"id":3476,"nodeType":"InheritanceSpecifier","src":"796:18:19"},{"baseName":{"id":3477,"name":"ERC165Upgradeable","nameLocations":["816:17:19"],"nodeType":"IdentifierPath","referencedDeclaration":7293,"src":"816:17:19"},"id":3478,"nodeType":"InheritanceSpecifier","src":"816:17:19"},{"baseName":{"id":3479,"name":"IERC721Upgradeable","nameLocations":["835:18:19"],"nodeType":"IdentifierPath","referencedDeclaration":4547,"src":"835:18:19"},"id":3480,"nodeType":"InheritanceSpecifier","src":"835:18:19"},{"baseName":{"id":3481,"name":"IERC721MetadataUpgradeable","nameLocations":["855:26:19"],"nodeType":"IdentifierPath","referencedDeclaration":4792,"src":"855:26:19"},"id":3482,"nodeType":"InheritanceSpecifier","src":"855:26:19"}],"canonicalName":"ERC721Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3472,"nodeType":"StructuredDocumentation","src":"504:246:19","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"id":4413,"linearizedBaseContracts":[4413,4792,4547,7293,7305,6489,1466],"name":"ERC721Upgradeable","nameLocation":"760:17:19","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3485,"libraryName":{"id":3483,"name":"AddressUpgradeable","nameLocations":["894:18:19"],"nodeType":"IdentifierPath","referencedDeclaration":5076,"src":"894:18:19"},"nodeType":"UsingForDirective","src":"888:37:19","typeName":{"id":3484,"name":"address","nodeType":"ElementaryTypeName","src":"917:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":3488,"libraryName":{"id":3486,"name":"StringsUpgradeable","nameLocations":["936:18:19"],"nodeType":"IdentifierPath","referencedDeclaration":6738,"src":"936:18:19"},"nodeType":"UsingForDirective","src":"930:37:19","typeName":{"id":3487,"name":"uint256","nodeType":"ElementaryTypeName","src":"959:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":3490,"mutability":"mutable","name":"_name","nameLocation":"1006:5:19","nodeType":"VariableDeclaration","scope":4413,"src":"991:20:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3489,"name":"string","nodeType":"ElementaryTypeName","src":"991:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":3492,"mutability":"mutable","name":"_symbol","nameLocation":"1053:7:19","nodeType":"VariableDeclaration","scope":4413,"src":"1038:22:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3491,"name":"string","nodeType":"ElementaryTypeName","src":"1038:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":3496,"mutability":"mutable","name":"_owners","nameLocation":"1149:7:19","nodeType":"VariableDeclaration","scope":4413,"src":"1113:43:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":3495,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3493,"name":"uint256","nodeType":"ElementaryTypeName","src":"1121:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1113:27:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3494,"name":"address","nodeType":"ElementaryTypeName","src":"1132:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":3500,"mutability":"mutable","name":"_balances","nameLocation":"1243:9:19","nodeType":"VariableDeclaration","scope":4413,"src":"1207:45:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":3499,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3497,"name":"address","nodeType":"ElementaryTypeName","src":"1215:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1207:27:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3498,"name":"uint256","nodeType":"ElementaryTypeName","src":"1226:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":3504,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1344:15:19","nodeType":"VariableDeclaration","scope":4413,"src":"1308:51:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":3503,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1316:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1308:27:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3502,"name":"address","nodeType":"ElementaryTypeName","src":"1327:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":3510,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1467:18:19","nodeType":"VariableDeclaration","scope":4413,"src":"1414:71:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":3509,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3505,"name":"address","nodeType":"ElementaryTypeName","src":"1422:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1414:44:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3508,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3506,"name":"address","nodeType":"ElementaryTypeName","src":"1441:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1433:24:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3507,"name":"bool","nodeType":"ElementaryTypeName","src":"1452:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":3525,"nodeType":"Block","src":"1698:56:19","statements":[{"expression":{"arguments":[{"id":3521,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3513,"src":"1732:5:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":3522,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"1739:7:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3520,"name":"__ERC721_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"1708:23:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":3523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1708:39:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3524,"nodeType":"ExpressionStatement","src":"1708:39:19"}]},"documentation":{"id":3511,"nodeType":"StructuredDocumentation","src":"1492:108:19","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":3526,"implemented":true,"kind":"function","modifiers":[{"id":3518,"kind":"modifierInvocation","modifierName":{"id":3517,"name":"onlyInitializing","nameLocations":["1681:16:19"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"1681:16:19"},"nodeType":"ModifierInvocation","src":"1681:16:19"}],"name":"__ERC721_init","nameLocation":"1614:13:19","nodeType":"FunctionDefinition","parameters":{"id":3516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3513,"mutability":"mutable","name":"name_","nameLocation":"1642:5:19","nodeType":"VariableDeclaration","scope":3526,"src":"1628:19:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3512,"name":"string","nodeType":"ElementaryTypeName","src":"1628:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3515,"mutability":"mutable","name":"symbol_","nameLocation":"1663:7:19","nodeType":"VariableDeclaration","scope":3526,"src":"1649:21:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3514,"name":"string","nodeType":"ElementaryTypeName","src":"1649:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1627:44:19"},"returnParameters":{"id":3519,"nodeType":"ParameterList","parameters":[],"src":"1698:0:19"},"scope":4413,"src":"1605:149:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3543,"nodeType":"Block","src":"1863:57:19","statements":[{"expression":{"id":3537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3535,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3490,"src":"1873:5:19","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3536,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"1881:5:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1873:13:19","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3538,"nodeType":"ExpressionStatement","src":"1873:13:19"},{"expression":{"id":3541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3539,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3492,"src":"1896:7:19","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3540,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"1906:7:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1896:17:19","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3542,"nodeType":"ExpressionStatement","src":"1896:17:19"}]},"id":3544,"implemented":true,"kind":"function","modifiers":[{"id":3533,"kind":"modifierInvocation","modifierName":{"id":3532,"name":"onlyInitializing","nameLocations":["1846:16:19"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"1846:16:19"},"nodeType":"ModifierInvocation","src":"1846:16:19"}],"name":"__ERC721_init_unchained","nameLocation":"1769:23:19","nodeType":"FunctionDefinition","parameters":{"id":3531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3528,"mutability":"mutable","name":"name_","nameLocation":"1807:5:19","nodeType":"VariableDeclaration","scope":3544,"src":"1793:19:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3527,"name":"string","nodeType":"ElementaryTypeName","src":"1793:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3530,"mutability":"mutable","name":"symbol_","nameLocation":"1828:7:19","nodeType":"VariableDeclaration","scope":3544,"src":"1814:21:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3529,"name":"string","nodeType":"ElementaryTypeName","src":"1814:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1792:44:19"},"returnParameters":{"id":3534,"nodeType":"ParameterList","parameters":[],"src":"1863:0:19"},"scope":4413,"src":"1760:160:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[7287,7304],"body":{"id":3574,"nodeType":"Block","src":"2117:214:19","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3555,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3547,"src":"2146:11:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":3557,"name":"IERC721Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4547,"src":"2166:18:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Upgradeable_$4547_$","typeString":"type(contract IERC721Upgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Upgradeable_$4547_$","typeString":"type(contract IERC721Upgradeable)"}],"id":3556,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2161:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2161:24:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Upgradeable_$4547","typeString":"type(contract IERC721Upgradeable)"}},"id":3559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2186:11:19","memberName":"interfaceId","nodeType":"MemberAccess","src":"2161:36:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2146:51:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3561,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3547,"src":"2213:11:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":3563,"name":"IERC721MetadataUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4792,"src":"2233:26:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721MetadataUpgradeable_$4792_$","typeString":"type(contract IERC721MetadataUpgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721MetadataUpgradeable_$4792_$","typeString":"type(contract IERC721MetadataUpgradeable)"}],"id":3562,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2228:4:19","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2228:32:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721MetadataUpgradeable_$4792","typeString":"type(contract IERC721MetadataUpgradeable)"}},"id":3565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2261:11:19","memberName":"interfaceId","nodeType":"MemberAccess","src":"2228:44:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2213:59:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2146:126:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":3570,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3547,"src":"2312:11:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":3568,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2288:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721Upgradeable_$4413_$","typeString":"type(contract super ERC721Upgradeable)"}},"id":3569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2294:17:19","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":7287,"src":"2288:23:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":3571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2288:36:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2146:178:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3554,"id":3573,"nodeType":"Return","src":"2127:197:19"}]},"documentation":{"id":3545,"nodeType":"StructuredDocumentation","src":"1926:56:19","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":3575,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1996:17:19","nodeType":"FunctionDefinition","overrides":{"id":3551,"nodeType":"OverrideSpecifier","overrides":[{"id":3549,"name":"ERC165Upgradeable","nameLocations":["2063:17:19"],"nodeType":"IdentifierPath","referencedDeclaration":7293,"src":"2063:17:19"},{"id":3550,"name":"IERC165Upgradeable","nameLocations":["2082:18:19"],"nodeType":"IdentifierPath","referencedDeclaration":7305,"src":"2082:18:19"}],"src":"2054:47:19"},"parameters":{"id":3548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3547,"mutability":"mutable","name":"interfaceId","nameLocation":"2021:11:19","nodeType":"VariableDeclaration","scope":3575,"src":"2014:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3546,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2014:6:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2013:20:19"},"returnParameters":{"id":3554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3553,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3575,"src":"2111:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3552,"name":"bool","nodeType":"ElementaryTypeName","src":"2111:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2110:6:19"},"scope":4413,"src":"1987:344:19","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4472],"body":{"id":3598,"nodeType":"Block","src":"2471:123:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3585,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3578,"src":"2489:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2506:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2498:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3586,"name":"address","nodeType":"ElementaryTypeName","src":"2498:7:19","typeDescriptions":{}}},"id":3589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2498:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2489:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":3591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2510:43:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":3584,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2481:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2481:73:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3593,"nodeType":"ExpressionStatement","src":"2481:73:19"},{"expression":{"baseExpression":{"id":3594,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"2571:9:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3596,"indexExpression":{"id":3595,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3578,"src":"2581:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2571:16:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3583,"id":3597,"nodeType":"Return","src":"2564:23:19"}]},"documentation":{"id":3576,"nodeType":"StructuredDocumentation","src":"2337:48:19","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":3599,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2399:9:19","nodeType":"FunctionDefinition","overrides":{"id":3580,"nodeType":"OverrideSpecifier","overrides":[],"src":"2444:8:19"},"parameters":{"id":3579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3578,"mutability":"mutable","name":"owner","nameLocation":"2417:5:19","nodeType":"VariableDeclaration","scope":3599,"src":"2409:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3577,"name":"address","nodeType":"ElementaryTypeName","src":"2409:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2408:15:19"},"returnParameters":{"id":3583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3599,"src":"2462:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3581,"name":"uint256","nodeType":"ElementaryTypeName","src":"2462:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2461:9:19"},"scope":4413,"src":"2390:204:19","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4480],"body":{"id":3626,"nodeType":"Block","src":"2732:138:19","statements":[{"assignments":[3609],"declarations":[{"constant":false,"id":3609,"mutability":"mutable","name":"owner","nameLocation":"2750:5:19","nodeType":"VariableDeclaration","scope":3626,"src":"2742:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3608,"name":"address","nodeType":"ElementaryTypeName","src":"2742:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3613,"initialValue":{"arguments":[{"id":3611,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3602,"src":"2767:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3610,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3909,"src":"2758:8:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":3612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2758:17:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2742:33:19"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3615,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3609,"src":"2793:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2810:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2802:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3616,"name":"address","nodeType":"ElementaryTypeName","src":"2802:7:19","typeDescriptions":{}}},"id":3619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2802:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2793:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":3621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2814:26:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":3614,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2785:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2785:56:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3623,"nodeType":"ExpressionStatement","src":"2785:56:19"},{"expression":{"id":3624,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3609,"src":"2858:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3607,"id":3625,"nodeType":"Return","src":"2851:12:19"}]},"documentation":{"id":3600,"nodeType":"StructuredDocumentation","src":"2600:46:19","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":3627,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2660:7:19","nodeType":"FunctionDefinition","overrides":{"id":3604,"nodeType":"OverrideSpecifier","overrides":[],"src":"2705:8:19"},"parameters":{"id":3603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3602,"mutability":"mutable","name":"tokenId","nameLocation":"2676:7:19","nodeType":"VariableDeclaration","scope":3627,"src":"2668:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3601,"name":"uint256","nodeType":"ElementaryTypeName","src":"2668:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:17:19"},"returnParameters":{"id":3607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3606,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3627,"src":"2723:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3605,"name":"address","nodeType":"ElementaryTypeName","src":"2723:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2722:9:19"},"scope":4413,"src":"2651:219:19","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4777],"body":{"id":3636,"nodeType":"Block","src":"3001:29:19","statements":[{"expression":{"id":3634,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3490,"src":"3018:5:19","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3633,"id":3635,"nodeType":"Return","src":"3011:12:19"}]},"documentation":{"id":3628,"nodeType":"StructuredDocumentation","src":"2876:51:19","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":3637,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2941:4:19","nodeType":"FunctionDefinition","overrides":{"id":3630,"nodeType":"OverrideSpecifier","overrides":[],"src":"2968:8:19"},"parameters":{"id":3629,"nodeType":"ParameterList","parameters":[],"src":"2945:2:19"},"returnParameters":{"id":3633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3632,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3637,"src":"2986:13:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3631,"name":"string","nodeType":"ElementaryTypeName","src":"2986:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2985:15:19"},"scope":4413,"src":"2932:98:19","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4783],"body":{"id":3646,"nodeType":"Block","src":"3165:31:19","statements":[{"expression":{"id":3644,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3492,"src":"3182:7:19","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3643,"id":3645,"nodeType":"Return","src":"3175:14:19"}]},"documentation":{"id":3638,"nodeType":"StructuredDocumentation","src":"3036:53:19","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":3647,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"3103:6:19","nodeType":"FunctionDefinition","overrides":{"id":3640,"nodeType":"OverrideSpecifier","overrides":[],"src":"3132:8:19"},"parameters":{"id":3639,"nodeType":"ParameterList","parameters":[],"src":"3109:2:19"},"returnParameters":{"id":3643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3642,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3647,"src":"3150:13:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3641,"name":"string","nodeType":"ElementaryTypeName","src":"3150:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3149:15:19"},"scope":4413,"src":"3094:102:19","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4791],"body":{"id":3685,"nodeType":"Block","src":"3350:188:19","statements":[{"expression":{"arguments":[{"id":3657,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3650,"src":"3375:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3656,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4304,"src":"3360:14:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":3658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3360:23:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3659,"nodeType":"ExpressionStatement","src":"3360:23:19"},{"assignments":[3661],"declarations":[{"constant":false,"id":3661,"mutability":"mutable","name":"baseURI","nameLocation":"3408:7:19","nodeType":"VariableDeclaration","scope":3685,"src":"3394:21:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3660,"name":"string","nodeType":"ElementaryTypeName","src":"3394:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":3664,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3662,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3695,"src":"3418:8:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":3663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"3394:34:19"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":3667,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3661,"src":"3451:7:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3445:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":3665,"name":"bytes","nodeType":"ElementaryTypeName","src":"3445:5:19","typeDescriptions":{}}},"id":3668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3445:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3460:6:19","memberName":"length","nodeType":"MemberAccess","src":"3445:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3469:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3445:25:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":3682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3529:2:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":3683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3445:86:19","trueExpression":{"arguments":[{"arguments":[{"id":3676,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3661,"src":"3497:7:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3677,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3650,"src":"3506:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3514:8:19","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":6621,"src":"3506:16:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":3679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3506:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":3674,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3480:3:19","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3484:12:19","memberName":"encodePacked","nodeType":"MemberAccess","src":"3480:16:19","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3480:45:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3473:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":3672,"name":"string","nodeType":"ElementaryTypeName","src":"3473:6:19","typeDescriptions":{}}},"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3473:53:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":3655,"id":3684,"nodeType":"Return","src":"3438:93:19"}]},"documentation":{"id":3648,"nodeType":"StructuredDocumentation","src":"3202:55:19","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":3686,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"3271:8:19","nodeType":"FunctionDefinition","overrides":{"id":3652,"nodeType":"OverrideSpecifier","overrides":[],"src":"3317:8:19"},"parameters":{"id":3651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3650,"mutability":"mutable","name":"tokenId","nameLocation":"3288:7:19","nodeType":"VariableDeclaration","scope":3686,"src":"3280:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3649,"name":"uint256","nodeType":"ElementaryTypeName","src":"3280:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3279:17:19"},"returnParameters":{"id":3655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3686,"src":"3335:13:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3653,"name":"string","nodeType":"ElementaryTypeName","src":"3335:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3334:15:19"},"scope":4413,"src":"3262:276:19","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":3694,"nodeType":"Block","src":"3846:26:19","statements":[{"expression":{"hexValue":"","id":3692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3863:2:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":3691,"id":3693,"nodeType":"Return","src":"3856:9:19"}]},"documentation":{"id":3687,"nodeType":"StructuredDocumentation","src":"3544:231:19","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":3695,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3789:8:19","nodeType":"FunctionDefinition","parameters":{"id":3688,"nodeType":"ParameterList","parameters":[],"src":"3797:2:19"},"returnParameters":{"id":3691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3690,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3695,"src":"3831:13:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3689,"name":"string","nodeType":"ElementaryTypeName","src":"3831:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3830:15:19"},"scope":4413,"src":"3780:92:19","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[4520],"body":{"id":3737,"nodeType":"Block","src":"3999:347:19","statements":[{"assignments":[3705],"declarations":[{"constant":false,"id":3705,"mutability":"mutable","name":"owner","nameLocation":"4017:5:19","nodeType":"VariableDeclaration","scope":3737,"src":"4009:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3704,"name":"address","nodeType":"ElementaryTypeName","src":"4009:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3710,"initialValue":{"arguments":[{"id":3708,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"4051:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3706,"name":"ERC721Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"4025:17:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Upgradeable_$4413_$","typeString":"type(contract ERC721Upgradeable)"}},"id":3707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4043:7:19","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":3627,"src":"4025:25:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":3709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4025:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4009:50:19"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3712,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"4077:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3713,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3705,"src":"4083:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4077:11:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":3715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4090:35:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""},"value":"ERC721: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""}],"id":3711,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4069:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4069:57:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3717,"nodeType":"ExpressionStatement","src":"4069:57:19"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3719,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"4158:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4158:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3721,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3705,"src":"4174:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4158:21:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":3724,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3705,"src":"4200:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3725,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"4207:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4207:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3723,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3791,"src":"4183:16:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":3727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4183:37:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4158:62:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c","id":3729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4234:63:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83","typeString":"literal_string \"ERC721: approve caller is not token owner or approved for all\""},"value":"ERC721: approve caller is not token owner or approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83","typeString":"literal_string \"ERC721: approve caller is not token owner or approved for all\""}],"id":3718,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4137:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4137:170:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3731,"nodeType":"ExpressionStatement","src":"4137:170:19"},{"expression":{"arguments":[{"id":3733,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"4327:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3734,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"4331:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3732,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4258,"src":"4318:8:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4318:21:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3736,"nodeType":"ExpressionStatement","src":"4318:21:19"}]},"documentation":{"id":3696,"nodeType":"StructuredDocumentation","src":"3878:46:19","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":3738,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3938:7:19","nodeType":"FunctionDefinition","overrides":{"id":3702,"nodeType":"OverrideSpecifier","overrides":[],"src":"3990:8:19"},"parameters":{"id":3701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3698,"mutability":"mutable","name":"to","nameLocation":"3954:2:19","nodeType":"VariableDeclaration","scope":3738,"src":"3946:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3697,"name":"address","nodeType":"ElementaryTypeName","src":"3946:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3700,"mutability":"mutable","name":"tokenId","nameLocation":"3966:7:19","nodeType":"VariableDeclaration","scope":3738,"src":"3958:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3699,"name":"uint256","nodeType":"ElementaryTypeName","src":"3958:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3945:29:19"},"returnParameters":{"id":3703,"nodeType":"ParameterList","parameters":[],"src":"3999:0:19"},"scope":4413,"src":"3929:417:19","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4536],"body":{"id":3755,"nodeType":"Block","src":"4492:82:19","statements":[{"expression":{"arguments":[{"id":3748,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3741,"src":"4517:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3747,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4304,"src":"4502:14:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":3749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4502:23:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3750,"nodeType":"ExpressionStatement","src":"4502:23:19"},{"expression":{"baseExpression":{"id":3751,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"4543:15:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":3753,"indexExpression":{"id":3752,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3741,"src":"4559:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4543:24:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3746,"id":3754,"nodeType":"Return","src":"4536:31:19"}]},"documentation":{"id":3739,"nodeType":"StructuredDocumentation","src":"4352:50:19","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":3756,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4416:11:19","nodeType":"FunctionDefinition","overrides":{"id":3743,"nodeType":"OverrideSpecifier","overrides":[],"src":"4465:8:19"},"parameters":{"id":3742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3741,"mutability":"mutable","name":"tokenId","nameLocation":"4436:7:19","nodeType":"VariableDeclaration","scope":3756,"src":"4428:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3740,"name":"uint256","nodeType":"ElementaryTypeName","src":"4428:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4427:17:19"},"returnParameters":{"id":3746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3745,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3756,"src":"4483:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3744,"name":"address","nodeType":"ElementaryTypeName","src":"4483:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4482:9:19"},"scope":4413,"src":"4407:167:19","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4528],"body":{"id":3772,"nodeType":"Block","src":"4725:69:19","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3766,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"4754:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4754:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3768,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3759,"src":"4768:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3769,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"4778:8:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3765,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4290,"src":"4735:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":3770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4735:52:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3771,"nodeType":"ExpressionStatement","src":"4735:52:19"}]},"documentation":{"id":3757,"nodeType":"StructuredDocumentation","src":"4580:56:19","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":3773,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4650:17:19","nodeType":"FunctionDefinition","overrides":{"id":3763,"nodeType":"OverrideSpecifier","overrides":[],"src":"4716:8:19"},"parameters":{"id":3762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3759,"mutability":"mutable","name":"operator","nameLocation":"4676:8:19","nodeType":"VariableDeclaration","scope":3773,"src":"4668:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3758,"name":"address","nodeType":"ElementaryTypeName","src":"4668:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3761,"mutability":"mutable","name":"approved","nameLocation":"4691:8:19","nodeType":"VariableDeclaration","scope":3773,"src":"4686:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3760,"name":"bool","nodeType":"ElementaryTypeName","src":"4686:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4667:33:19"},"returnParameters":{"id":3764,"nodeType":"ParameterList","parameters":[],"src":"4725:0:19"},"scope":4413,"src":"4641:153:19","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4546],"body":{"id":3790,"nodeType":"Block","src":"4963:59:19","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":3784,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3510,"src":"4980:18:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":3786,"indexExpression":{"id":3785,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3776,"src":"4999:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4980:25:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3788,"indexExpression":{"id":3787,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3778,"src":"5006:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4980:35:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3783,"id":3789,"nodeType":"Return","src":"4973:42:19"}]},"documentation":{"id":3774,"nodeType":"StructuredDocumentation","src":"4800:55:19","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":3791,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4869:16:19","nodeType":"FunctionDefinition","overrides":{"id":3780,"nodeType":"OverrideSpecifier","overrides":[],"src":"4939:8:19"},"parameters":{"id":3779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3776,"mutability":"mutable","name":"owner","nameLocation":"4894:5:19","nodeType":"VariableDeclaration","scope":3791,"src":"4886:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3775,"name":"address","nodeType":"ElementaryTypeName","src":"4886:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3778,"mutability":"mutable","name":"operator","nameLocation":"4909:8:19","nodeType":"VariableDeclaration","scope":3791,"src":"4901:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3777,"name":"address","nodeType":"ElementaryTypeName","src":"4901:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4885:33:19"},"returnParameters":{"id":3783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3782,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3791,"src":"4957:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3781,"name":"bool","nodeType":"ElementaryTypeName","src":"4957:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4956:6:19"},"scope":4413,"src":"4860:162:19","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4512],"body":{"id":3817,"nodeType":"Block","src":"5203:207:19","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3804,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"5292:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5292:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3806,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3798,"src":"5306:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3803,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3961,"src":"5273:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":3807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5273:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":3808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5316:47:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""},"value":"ERC721: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""}],"id":3802,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5265:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5265:99:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3810,"nodeType":"ExpressionStatement","src":"5265:99:19"},{"expression":{"arguments":[{"id":3812,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3794,"src":"5385:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3813,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3796,"src":"5391:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3814,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3798,"src":"5395:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3811,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4234,"src":"5375:9:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:28:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3816,"nodeType":"ExpressionStatement","src":"5375:28:19"}]},"documentation":{"id":3792,"nodeType":"StructuredDocumentation","src":"5028:51:19","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":3818,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5093:12:19","nodeType":"FunctionDefinition","overrides":{"id":3800,"nodeType":"OverrideSpecifier","overrides":[],"src":"5194:8:19"},"parameters":{"id":3799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3794,"mutability":"mutable","name":"from","nameLocation":"5123:4:19","nodeType":"VariableDeclaration","scope":3818,"src":"5115:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3793,"name":"address","nodeType":"ElementaryTypeName","src":"5115:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3796,"mutability":"mutable","name":"to","nameLocation":"5145:2:19","nodeType":"VariableDeclaration","scope":3818,"src":"5137:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3795,"name":"address","nodeType":"ElementaryTypeName","src":"5137:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3798,"mutability":"mutable","name":"tokenId","nameLocation":"5165:7:19","nodeType":"VariableDeclaration","scope":3818,"src":"5157:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3797,"name":"uint256","nodeType":"ElementaryTypeName","src":"5157:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5105:73:19"},"returnParameters":{"id":3801,"nodeType":"ParameterList","parameters":[],"src":"5203:0:19"},"scope":4413,"src":"5084:326:19","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4502],"body":{"id":3836,"nodeType":"Block","src":"5599:56:19","statements":[{"expression":{"arguments":[{"id":3830,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"5626:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3831,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3823,"src":"5632:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3832,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3825,"src":"5636:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":3833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5645:2:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":3829,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[3837,3867],"referencedDeclaration":3867,"src":"5609:16:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":3834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5609:39:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3835,"nodeType":"ExpressionStatement","src":"5609:39:19"}]},"documentation":{"id":3819,"nodeType":"StructuredDocumentation","src":"5416:55:19","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":3837,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5485:16:19","nodeType":"FunctionDefinition","overrides":{"id":3827,"nodeType":"OverrideSpecifier","overrides":[],"src":"5590:8:19"},"parameters":{"id":3826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3821,"mutability":"mutable","name":"from","nameLocation":"5519:4:19","nodeType":"VariableDeclaration","scope":3837,"src":"5511:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3820,"name":"address","nodeType":"ElementaryTypeName","src":"5511:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3823,"mutability":"mutable","name":"to","nameLocation":"5541:2:19","nodeType":"VariableDeclaration","scope":3837,"src":"5533:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3822,"name":"address","nodeType":"ElementaryTypeName","src":"5533:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3825,"mutability":"mutable","name":"tokenId","nameLocation":"5561:7:19","nodeType":"VariableDeclaration","scope":3837,"src":"5553:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3824,"name":"uint256","nodeType":"ElementaryTypeName","src":"5553:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5501:73:19"},"returnParameters":{"id":3828,"nodeType":"ParameterList","parameters":[],"src":"5599:0:19"},"scope":4413,"src":"5476:179:19","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4492],"body":{"id":3866,"nodeType":"Block","src":"5871:164:19","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3852,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"5908:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5908:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3854,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"5922:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3851,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3961,"src":"5889:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":3855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5889:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":3856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5932:47:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""},"value":"ERC721: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""}],"id":3850,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5881:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5881:99:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3858,"nodeType":"ExpressionStatement","src":"5881:99:19"},{"expression":{"arguments":[{"id":3860,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3840,"src":"6004:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3861,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"6010:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3862,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"6014:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3863,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3846,"src":"6023:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3859,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3896,"src":"5990:13:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":3864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5990:38:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3865,"nodeType":"ExpressionStatement","src":"5990:38:19"}]},"documentation":{"id":3838,"nodeType":"StructuredDocumentation","src":"5661:55:19","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":3867,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5730:16:19","nodeType":"FunctionDefinition","overrides":{"id":3848,"nodeType":"OverrideSpecifier","overrides":[],"src":"5862:8:19"},"parameters":{"id":3847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3840,"mutability":"mutable","name":"from","nameLocation":"5764:4:19","nodeType":"VariableDeclaration","scope":3867,"src":"5756:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3839,"name":"address","nodeType":"ElementaryTypeName","src":"5756:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3842,"mutability":"mutable","name":"to","nameLocation":"5786:2:19","nodeType":"VariableDeclaration","scope":3867,"src":"5778:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3841,"name":"address","nodeType":"ElementaryTypeName","src":"5778:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3844,"mutability":"mutable","name":"tokenId","nameLocation":"5806:7:19","nodeType":"VariableDeclaration","scope":3867,"src":"5798:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3843,"name":"uint256","nodeType":"ElementaryTypeName","src":"5798:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3846,"mutability":"mutable","name":"data","nameLocation":"5836:4:19","nodeType":"VariableDeclaration","scope":3867,"src":"5823:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3845,"name":"bytes","nodeType":"ElementaryTypeName","src":"5823:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5746:100:19"},"returnParameters":{"id":3849,"nodeType":"ParameterList","parameters":[],"src":"5871:0:19"},"scope":4413,"src":"5721:314:19","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":3895,"nodeType":"Block","src":"7036:165:19","statements":[{"expression":{"arguments":[{"id":3880,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"7056:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3881,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3872,"src":"7062:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3874,"src":"7066:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3879,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4234,"src":"7046:9:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7046:28:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3884,"nodeType":"ExpressionStatement","src":"7046:28:19"},{"expression":{"arguments":[{"arguments":[{"id":3887,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"7115:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3888,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3872,"src":"7121:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3889,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3874,"src":"7125:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3890,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"7134:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3886,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"7092:22:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":3891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7092:47:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":3892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7141:52:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":3885,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7084:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7084:110:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3894,"nodeType":"ExpressionStatement","src":"7084:110:19"}]},"documentation":{"id":3868,"nodeType":"StructuredDocumentation","src":"6041:850:19","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":3896,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"6905:13:19","nodeType":"FunctionDefinition","parameters":{"id":3877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3870,"mutability":"mutable","name":"from","nameLocation":"6936:4:19","nodeType":"VariableDeclaration","scope":3896,"src":"6928:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3869,"name":"address","nodeType":"ElementaryTypeName","src":"6928:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3872,"mutability":"mutable","name":"to","nameLocation":"6958:2:19","nodeType":"VariableDeclaration","scope":3896,"src":"6950:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3871,"name":"address","nodeType":"ElementaryTypeName","src":"6950:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3874,"mutability":"mutable","name":"tokenId","nameLocation":"6978:7:19","nodeType":"VariableDeclaration","scope":3896,"src":"6970:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3873,"name":"uint256","nodeType":"ElementaryTypeName","src":"6970:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3876,"mutability":"mutable","name":"data","nameLocation":"7008:4:19","nodeType":"VariableDeclaration","scope":3896,"src":"6995:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3875,"name":"bytes","nodeType":"ElementaryTypeName","src":"6995:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6918:100:19"},"returnParameters":{"id":3878,"nodeType":"ParameterList","parameters":[],"src":"7036:0:19"},"scope":4413,"src":"6896:305:19","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3908,"nodeType":"Block","src":"7385:40:19","statements":[{"expression":{"baseExpression":{"id":3904,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3496,"src":"7402:7:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":3906,"indexExpression":{"id":3905,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"7410:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7402:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3903,"id":3907,"nodeType":"Return","src":"7395:23:19"}]},"documentation":{"id":3897,"nodeType":"StructuredDocumentation","src":"7207:98:19","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist"},"id":3909,"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"7319:8:19","nodeType":"FunctionDefinition","parameters":{"id":3900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3899,"mutability":"mutable","name":"tokenId","nameLocation":"7336:7:19","nodeType":"VariableDeclaration","scope":3909,"src":"7328:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3898,"name":"uint256","nodeType":"ElementaryTypeName","src":"7328:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7327:17:19"},"returnParameters":{"id":3903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3902,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3909,"src":"7376:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3901,"name":"address","nodeType":"ElementaryTypeName","src":"7376:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7375:9:19"},"scope":4413,"src":"7310:115:19","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3926,"nodeType":"Block","src":"7799:55:19","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3918,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3912,"src":"7825:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3917,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3909,"src":"7816:8:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":3919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:17:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7845:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7837:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3920,"name":"address","nodeType":"ElementaryTypeName","src":"7837:7:19","typeDescriptions":{}}},"id":3923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7837:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7816:31:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3916,"id":3925,"nodeType":"Return","src":"7809:38:19"}]},"documentation":{"id":3910,"nodeType":"StructuredDocumentation","src":"7431:292:19","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."},"id":3927,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"7737:7:19","nodeType":"FunctionDefinition","parameters":{"id":3913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3912,"mutability":"mutable","name":"tokenId","nameLocation":"7753:7:19","nodeType":"VariableDeclaration","scope":3927,"src":"7745:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3911,"name":"uint256","nodeType":"ElementaryTypeName","src":"7745:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7744:17:19"},"returnParameters":{"id":3916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3915,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3927,"src":"7793:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3914,"name":"bool","nodeType":"ElementaryTypeName","src":"7793:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7792:6:19"},"scope":4413,"src":"7728:126:19","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3960,"nodeType":"Block","src":"8111:173:19","statements":[{"assignments":[3938],"declarations":[{"constant":false,"id":3938,"mutability":"mutable","name":"owner","nameLocation":"8129:5:19","nodeType":"VariableDeclaration","scope":3960,"src":"8121:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3937,"name":"address","nodeType":"ElementaryTypeName","src":"8121:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3943,"initialValue":{"arguments":[{"id":3941,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3932,"src":"8163:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3939,"name":"ERC721Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"8137:17:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Upgradeable_$4413_$","typeString":"type(contract ERC721Upgradeable)"}},"id":3940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8155:7:19","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":3627,"src":"8137:25:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":3942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8137:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8121:50:19"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3944,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3930,"src":"8189:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3945,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"8200:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8189:16:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":3948,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"8226:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3949,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3930,"src":"8233:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3947,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3791,"src":"8209:16:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8209:32:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8189:52:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3953,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3932,"src":"8257:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3952,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3756,"src":"8245:11:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":3954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8245:20:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3955,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3930,"src":"8269:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8245:31:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8189:87:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3958,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8188:89:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3936,"id":3959,"nodeType":"Return","src":"8181:96:19"}]},"documentation":{"id":3928,"nodeType":"StructuredDocumentation","src":"7860:147:19","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":3961,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nameLocation":"8021:18:19","nodeType":"FunctionDefinition","parameters":{"id":3933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3930,"mutability":"mutable","name":"spender","nameLocation":"8048:7:19","nodeType":"VariableDeclaration","scope":3961,"src":"8040:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3929,"name":"address","nodeType":"ElementaryTypeName","src":"8040:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3932,"mutability":"mutable","name":"tokenId","nameLocation":"8065:7:19","nodeType":"VariableDeclaration","scope":3961,"src":"8057:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3931,"name":"uint256","nodeType":"ElementaryTypeName","src":"8057:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8039:34:19"},"returnParameters":{"id":3936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3935,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3961,"src":"8105:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3934,"name":"bool","nodeType":"ElementaryTypeName","src":"8105:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8104:6:19"},"scope":4413,"src":"8012:272:19","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3975,"nodeType":"Block","src":"8679:43:19","statements":[{"expression":{"arguments":[{"id":3970,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3964,"src":"8699:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3971,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3966,"src":"8703:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":3972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8712:2:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":3969,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[3976,4005],"referencedDeclaration":4005,"src":"8689:9:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":3973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8689:26:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3974,"nodeType":"ExpressionStatement","src":"8689:26:19"}]},"documentation":{"id":3962,"nodeType":"StructuredDocumentation","src":"8290:319:19","text":" @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":3976,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8623:9:19","nodeType":"FunctionDefinition","parameters":{"id":3967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3964,"mutability":"mutable","name":"to","nameLocation":"8641:2:19","nodeType":"VariableDeclaration","scope":3976,"src":"8633:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3963,"name":"address","nodeType":"ElementaryTypeName","src":"8633:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3966,"mutability":"mutable","name":"tokenId","nameLocation":"8653:7:19","nodeType":"VariableDeclaration","scope":3976,"src":"8645:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3965,"name":"uint256","nodeType":"ElementaryTypeName","src":"8645:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8632:29:19"},"returnParameters":{"id":3968,"nodeType":"ParameterList","parameters":[],"src":"8679:0:19"},"scope":4413,"src":"8614:108:19","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4004,"nodeType":"Block","src":"9057:195:19","statements":[{"expression":{"arguments":[{"id":3987,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3979,"src":"9073:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3988,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3981,"src":"9077:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3986,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"9067:5:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9067:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3990,"nodeType":"ExpressionStatement","src":"9067:18:19"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":3995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9147:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9139:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3993,"name":"address","nodeType":"ElementaryTypeName","src":"9139:7:19","typeDescriptions":{}}},"id":3996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9139:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3997,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3979,"src":"9151:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3998,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3981,"src":"9155:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3999,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3983,"src":"9164:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3992,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"9116:22:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":4000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9116:53:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":4001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9183:52:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":3991,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9095:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9095:150:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4003,"nodeType":"ExpressionStatement","src":"9095:150:19"}]},"documentation":{"id":3977,"nodeType":"StructuredDocumentation","src":"8728:210:19","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":4005,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8952:9:19","nodeType":"FunctionDefinition","parameters":{"id":3984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3979,"mutability":"mutable","name":"to","nameLocation":"8979:2:19","nodeType":"VariableDeclaration","scope":4005,"src":"8971:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3978,"name":"address","nodeType":"ElementaryTypeName","src":"8971:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3981,"mutability":"mutable","name":"tokenId","nameLocation":"8999:7:19","nodeType":"VariableDeclaration","scope":4005,"src":"8991:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3980,"name":"uint256","nodeType":"ElementaryTypeName","src":"8991:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3983,"mutability":"mutable","name":"data","nameLocation":"9029:4:19","nodeType":"VariableDeclaration","scope":4005,"src":"9016:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3982,"name":"bytes","nodeType":"ElementaryTypeName","src":"9016:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8961:78:19"},"returnParameters":{"id":3985,"nodeType":"ParameterList","parameters":[],"src":"9057:0:19"},"scope":4413,"src":"8943:309:19","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4081,"nodeType":"Block","src":"9635:859:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4014,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4008,"src":"9653:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9667:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9659:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4015,"name":"address","nodeType":"ElementaryTypeName","src":"9659:7:19","typeDescriptions":{}}},"id":4018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9659:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9653:16:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":4020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9671:34:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":4013,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9645:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9645:61:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4022,"nodeType":"ExpressionStatement","src":"9645:61:19"},{"expression":{"arguments":[{"id":4027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9724:17:19","subExpression":{"arguments":[{"id":4025,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"9733:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4024,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3927,"src":"9725:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":4026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9725:16:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":4028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9743:30:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":4023,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9716:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9716:58:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4030,"nodeType":"ExpressionStatement","src":"9716:58:19"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":4034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9814:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9806:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4032,"name":"address","nodeType":"ElementaryTypeName","src":"9806:7:19","typeDescriptions":{}}},"id":4035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9806:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4036,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4008,"src":"9818:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4037,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"9822:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":4038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9831:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":4031,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4379,"src":"9785:20:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9785:48:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4040,"nodeType":"ExpressionStatement","src":"9785:48:19"},{"expression":{"arguments":[{"id":4045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9928:17:19","subExpression":{"arguments":[{"id":4043,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"9937:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4042,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3927,"src":"9929:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":4044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9929:16:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":4046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9947:30:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":4041,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9920:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9920:58:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4048,"nodeType":"ExpressionStatement","src":"9920:58:19"},{"id":4055,"nodeType":"UncheckedBlock","src":"9989:360:19","statements":[{"expression":{"id":4053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4049,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"10320:9:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4051,"indexExpression":{"id":4050,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4008,"src":"10330:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10320:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":4052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10337:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10320:18:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4054,"nodeType":"ExpressionStatement","src":"10320:18:19"}]},{"expression":{"id":4060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4056,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3496,"src":"10359:7:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":4058,"indexExpression":{"id":4057,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"10367:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10359:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4059,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4008,"src":"10378:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10359:21:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4061,"nodeType":"ExpressionStatement","src":"10359:21:19"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10413:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4064,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10405:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4063,"name":"address","nodeType":"ElementaryTypeName","src":"10405:7:19","typeDescriptions":{}}},"id":4066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10405:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4067,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4008,"src":"10417:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4068,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"10421:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4062,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4446,"src":"10396:8:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10396:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4070,"nodeType":"EmitStatement","src":"10391:38:19"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":4074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10468:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10460:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4072,"name":"address","nodeType":"ElementaryTypeName","src":"10460:7:19","typeDescriptions":{}}},"id":4075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10460:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4076,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4008,"src":"10472:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4077,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"10476:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":4078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10485:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":4071,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4392,"src":"10440:19:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10440:47:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4080,"nodeType":"ExpressionStatement","src":"10440:47:19"}]},"documentation":{"id":4006,"nodeType":"StructuredDocumentation","src":"9258:311:19","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":4082,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9583:5:19","nodeType":"FunctionDefinition","parameters":{"id":4011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4008,"mutability":"mutable","name":"to","nameLocation":"9597:2:19","nodeType":"VariableDeclaration","scope":4082,"src":"9589:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4007,"name":"address","nodeType":"ElementaryTypeName","src":"9589:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4010,"mutability":"mutable","name":"tokenId","nameLocation":"9609:7:19","nodeType":"VariableDeclaration","scope":4082,"src":"9601:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4009,"name":"uint256","nodeType":"ElementaryTypeName","src":"9601:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9588:29:19"},"returnParameters":{"id":4012,"nodeType":"ParameterList","parameters":[],"src":"9635:0:19"},"scope":4413,"src":"9574:920:19","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4148,"nodeType":"Block","src":"10869:735:19","statements":[{"assignments":[4089],"declarations":[{"constant":false,"id":4089,"mutability":"mutable","name":"owner","nameLocation":"10887:5:19","nodeType":"VariableDeclaration","scope":4148,"src":"10879:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4088,"name":"address","nodeType":"ElementaryTypeName","src":"10879:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4094,"initialValue":{"arguments":[{"id":4092,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"10921:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4090,"name":"ERC721Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"10895:17:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Upgradeable_$4413_$","typeString":"type(contract ERC721Upgradeable)"}},"id":4091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10913:7:19","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":3627,"src":"10895:25:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":4093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10895:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10879:50:19"},{"expression":{"arguments":[{"id":4096,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4089,"src":"10961:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10976:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4098,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10968:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4097,"name":"address","nodeType":"ElementaryTypeName","src":"10968:7:19","typeDescriptions":{}}},"id":4100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10968:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4101,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"10980:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":4102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10989:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":4095,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4379,"src":"10940:20:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10940:51:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4104,"nodeType":"ExpressionStatement","src":"10940:51:19"},{"expression":{"id":4110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4105,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4089,"src":"11093:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4108,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"11127:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4106,"name":"ERC721Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"11101:17:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Upgradeable_$4413_$","typeString":"type(contract ERC721Upgradeable)"}},"id":4107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11119:7:19","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":3627,"src":"11101:25:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":4109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11101:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11093:42:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4111,"nodeType":"ExpressionStatement","src":"11093:42:19"},{"expression":{"id":4115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"11173:31:19","subExpression":{"baseExpression":{"id":4112,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"11180:15:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":4114,"indexExpression":{"id":4113,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"11196:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11180:24:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4116,"nodeType":"ExpressionStatement","src":"11173:31:19"},{"id":4123,"nodeType":"UncheckedBlock","src":"11215:237:19","statements":[{"expression":{"id":4121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4117,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"11420:9:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4119,"indexExpression":{"id":4118,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4089,"src":"11430:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11420:16:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":4120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11440:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11420:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4122,"nodeType":"ExpressionStatement","src":"11420:21:19"}]},{"expression":{"id":4127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"11461:23:19","subExpression":{"baseExpression":{"id":4124,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3496,"src":"11468:7:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":4126,"indexExpression":{"id":4125,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"11476:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11468:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4128,"nodeType":"ExpressionStatement","src":"11461:23:19"},{"eventCall":{"arguments":[{"id":4130,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4089,"src":"11509:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11524:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11516:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4131,"name":"address","nodeType":"ElementaryTypeName","src":"11516:7:19","typeDescriptions":{}}},"id":4134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11516:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4135,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"11528:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4129,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4446,"src":"11500:8:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11500:36:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4137,"nodeType":"EmitStatement","src":"11495:41:19"},{"expression":{"arguments":[{"id":4139,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4089,"src":"11567:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11582:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11574:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4140,"name":"address","nodeType":"ElementaryTypeName","src":"11574:7:19","typeDescriptions":{}}},"id":4143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11574:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4144,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"11586:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":4145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11595:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":4138,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4392,"src":"11547:19:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11547:50:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4147,"nodeType":"ExpressionStatement","src":"11547:50:19"}]},"documentation":{"id":4083,"nodeType":"StructuredDocumentation","src":"10500:315:19","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":4149,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"10829:5:19","nodeType":"FunctionDefinition","parameters":{"id":4086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4085,"mutability":"mutable","name":"tokenId","nameLocation":"10843:7:19","nodeType":"VariableDeclaration","scope":4149,"src":"10835:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4084,"name":"uint256","nodeType":"ElementaryTypeName","src":"10835:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10834:17:19"},"returnParameters":{"id":4087,"nodeType":"ParameterList","parameters":[],"src":"10869:0:19"},"scope":4413,"src":"10820:784:19","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4233,"nodeType":"Block","src":"12037:1146:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4162,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"12081:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4160,"name":"ERC721Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"12055:17:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Upgradeable_$4413_$","typeString":"type(contract ERC721Upgradeable)"}},"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12073:7:19","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":3627,"src":"12055:25:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":4163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12055:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4164,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"12093:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12055:42:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":4166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12099:39:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":4159,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12047:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12047:92:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4168,"nodeType":"ExpressionStatement","src":"12047:92:19"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4170,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"12157:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12171:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12163:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4171,"name":"address","nodeType":"ElementaryTypeName","src":"12163:7:19","typeDescriptions":{}}},"id":4174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12163:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12157:16:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":4176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12175:38:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":4169,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12149:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12149:65:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4178,"nodeType":"ExpressionStatement","src":"12149:65:19"},{"expression":{"arguments":[{"id":4180,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"12246:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4181,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"12252:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4182,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"12256:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":4183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12265:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":4179,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4379,"src":"12225:20:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12225:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4185,"nodeType":"ExpressionStatement","src":"12225:42:19"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4189,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"12393:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4187,"name":"ERC721Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"12367:17:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Upgradeable_$4413_$","typeString":"type(contract ERC721Upgradeable)"}},"id":4188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12385:7:19","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":3627,"src":"12367:25:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":4190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12367:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4191,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"12405:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12367:42:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":4193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12411:39:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":4186,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12359:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12359:92:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4195,"nodeType":"ExpressionStatement","src":"12359:92:19"},{"expression":{"id":4199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"12513:31:19","subExpression":{"baseExpression":{"id":4196,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"12520:15:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":4198,"indexExpression":{"id":4197,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"12536:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12520:24:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4200,"nodeType":"ExpressionStatement","src":"12513:31:19"},{"id":4213,"nodeType":"UncheckedBlock","src":"12555:496:19","statements":[{"expression":{"id":4205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4201,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"12988:9:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4203,"indexExpression":{"id":4202,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"12998:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12988:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":4204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13007:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12988:20:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4206,"nodeType":"ExpressionStatement","src":"12988:20:19"},{"expression":{"id":4211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4207,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"13022:9:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4209,"indexExpression":{"id":4208,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"13032:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13022:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":4210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13039:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13022:18:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4212,"nodeType":"ExpressionStatement","src":"13022:18:19"}]},{"expression":{"id":4218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4214,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3496,"src":"13060:7:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":4216,"indexExpression":{"id":4215,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"13068:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13060:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4217,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"13079:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13060:21:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4219,"nodeType":"ExpressionStatement","src":"13060:21:19"},{"eventCall":{"arguments":[{"id":4221,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"13106:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4222,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"13112:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4223,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"13116:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4220,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4446,"src":"13097:8:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13097:27:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4225,"nodeType":"EmitStatement","src":"13092:32:19"},{"expression":{"arguments":[{"id":4227,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"13155:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4228,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"13161:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4229,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"13165:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":4230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13174:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":4226,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4392,"src":"13135:19:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13135:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4232,"nodeType":"ExpressionStatement","src":"13135:41:19"}]},"documentation":{"id":4150,"nodeType":"StructuredDocumentation","src":"11610:313:19","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":4234,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"11937:9:19","nodeType":"FunctionDefinition","parameters":{"id":4157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4152,"mutability":"mutable","name":"from","nameLocation":"11964:4:19","nodeType":"VariableDeclaration","scope":4234,"src":"11956:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4151,"name":"address","nodeType":"ElementaryTypeName","src":"11956:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4154,"mutability":"mutable","name":"to","nameLocation":"11986:2:19","nodeType":"VariableDeclaration","scope":4234,"src":"11978:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4153,"name":"address","nodeType":"ElementaryTypeName","src":"11978:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4156,"mutability":"mutable","name":"tokenId","nameLocation":"12006:7:19","nodeType":"VariableDeclaration","scope":4234,"src":"11998:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4155,"name":"uint256","nodeType":"ElementaryTypeName","src":"11998:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11946:73:19"},"returnParameters":{"id":4158,"nodeType":"ParameterList","parameters":[],"src":"12037:0:19"},"scope":4413,"src":"11928:1255:19","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4257,"nodeType":"Block","src":"13359:118:19","statements":[{"expression":{"id":4246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4242,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"13369:15:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":4244,"indexExpression":{"id":4243,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4239,"src":"13385:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13369:24:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4245,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4237,"src":"13396:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13369:29:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4247,"nodeType":"ExpressionStatement","src":"13369:29:19"},{"eventCall":{"arguments":[{"arguments":[{"id":4251,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4239,"src":"13448:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4249,"name":"ERC721Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"13422:17:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Upgradeable_$4413_$","typeString":"type(contract ERC721Upgradeable)"}},"id":4250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13440:7:19","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":3627,"src":"13422:25:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":4252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13422:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4253,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4237,"src":"13458:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4254,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4239,"src":"13462:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4248,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"13413:8:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13413:57:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4256,"nodeType":"EmitStatement","src":"13408:62:19"}]},"documentation":{"id":4235,"nodeType":"StructuredDocumentation","src":"13189:101:19","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":4258,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"13304:8:19","nodeType":"FunctionDefinition","parameters":{"id":4240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4237,"mutability":"mutable","name":"to","nameLocation":"13321:2:19","nodeType":"VariableDeclaration","scope":4258,"src":"13313:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4236,"name":"address","nodeType":"ElementaryTypeName","src":"13313:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4239,"mutability":"mutable","name":"tokenId","nameLocation":"13333:7:19","nodeType":"VariableDeclaration","scope":4258,"src":"13325:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4238,"name":"uint256","nodeType":"ElementaryTypeName","src":"13325:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13312:29:19"},"returnParameters":{"id":4241,"nodeType":"ParameterList","parameters":[],"src":"13359:0:19"},"scope":4413,"src":"13295:182:19","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4289,"nodeType":"Block","src":"13736:184:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4269,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4261,"src":"13754:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4270,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4263,"src":"13763:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13754:17:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":4272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13773:27:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""},"value":"ERC721: approve to caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""}],"id":4268,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13746:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13746:55:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4274,"nodeType":"ExpressionStatement","src":"13746:55:19"},{"expression":{"id":4281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":4275,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3510,"src":"13811:18:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":4278,"indexExpression":{"id":4276,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4261,"src":"13830:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13811:25:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":4279,"indexExpression":{"id":4277,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4263,"src":"13837:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13811:35:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4280,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4265,"src":"13849:8:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13811:46:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4282,"nodeType":"ExpressionStatement","src":"13811:46:19"},{"eventCall":{"arguments":[{"id":4284,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4261,"src":"13887:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4285,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4263,"src":"13894:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4286,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4265,"src":"13904:8:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4283,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4464,"src":"13872:14:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":4287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13872:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4288,"nodeType":"EmitStatement","src":"13867:46:19"}]},"documentation":{"id":4259,"nodeType":"StructuredDocumentation","src":"13483:125:19","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":4290,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"13622:18:19","nodeType":"FunctionDefinition","parameters":{"id":4266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4261,"mutability":"mutable","name":"owner","nameLocation":"13658:5:19","nodeType":"VariableDeclaration","scope":4290,"src":"13650:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4260,"name":"address","nodeType":"ElementaryTypeName","src":"13650:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4263,"mutability":"mutable","name":"operator","nameLocation":"13681:8:19","nodeType":"VariableDeclaration","scope":4290,"src":"13673:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4262,"name":"address","nodeType":"ElementaryTypeName","src":"13673:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4265,"mutability":"mutable","name":"approved","nameLocation":"13704:8:19","nodeType":"VariableDeclaration","scope":4290,"src":"13699:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4264,"name":"bool","nodeType":"ElementaryTypeName","src":"13699:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13640:78:19"},"returnParameters":{"id":4267,"nodeType":"ParameterList","parameters":[],"src":"13736:0:19"},"scope":4413,"src":"13613:307:19","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4303,"nodeType":"Block","src":"14067:70:19","statements":[{"expression":{"arguments":[{"arguments":[{"id":4298,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4293,"src":"14093:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4297,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3927,"src":"14085:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":4299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14085:16:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":4300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14103:26:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":4296,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14077:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14077:53:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4302,"nodeType":"ExpressionStatement","src":"14077:53:19"}]},"documentation":{"id":4291,"nodeType":"StructuredDocumentation","src":"13926:73:19","text":" @dev Reverts if the `tokenId` has not been minted yet."},"id":4304,"implemented":true,"kind":"function","modifiers":[],"name":"_requireMinted","nameLocation":"14013:14:19","nodeType":"FunctionDefinition","parameters":{"id":4294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4293,"mutability":"mutable","name":"tokenId","nameLocation":"14036:7:19","nodeType":"VariableDeclaration","scope":4304,"src":"14028:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4292,"name":"uint256","nodeType":"ElementaryTypeName","src":"14028:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14027:17:19"},"returnParameters":{"id":4295,"nodeType":"ParameterList","parameters":[],"src":"14067:0:19"},"scope":4413,"src":"14004:133:19","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4365,"nodeType":"Block","src":"14844:698:19","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4309,"src":"14858:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14861:10:19","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":4810,"src":"14858:13:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$attached_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":4320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14858:15:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4363,"nodeType":"Block","src":"15500:36:19","statements":[{"expression":{"hexValue":"74727565","id":4361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15521:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4317,"id":4362,"nodeType":"Return","src":"15514:11:19"}]},"id":4364,"nodeType":"IfStatement","src":"14854:682:19","trueBody":{"id":4360,"nodeType":"Block","src":"14875:619:19","statements":[{"clauses":[{"block":{"id":4340,"nodeType":"Block","src":"15000:102:19","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4334,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4332,"src":"15025:6:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":4335,"name":"IERC721ReceiverUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"15035:26:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721ReceiverUpgradeable_$4431_$","typeString":"type(contract IERC721ReceiverUpgradeable)"}},"id":4336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15062:16:19","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":4430,"src":"15035:43:19","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721ReceiverUpgradeable.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":4337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15079:8:19","memberName":"selector","nodeType":"MemberAccess","src":"15035:52:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"15025:62:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4317,"id":4339,"nodeType":"Return","src":"15018:69:19"}]},"errorName":"","id":4341,"nodeType":"TryCatchClause","parameters":{"id":4333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4332,"mutability":"mutable","name":"retval","nameLocation":"14992:6:19","nodeType":"VariableDeclaration","scope":4341,"src":"14985:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4331,"name":"bytes4","nodeType":"ElementaryTypeName","src":"14985:6:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"14984:15:19"},"src":"14976:126:19"},{"block":{"id":4357,"nodeType":"Block","src":"15131:353:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4345,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4343,"src":"15153:6:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15160:6:19","memberName":"length","nodeType":"MemberAccess","src":"15153:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15170:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15153:18:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4355,"nodeType":"Block","src":"15280:190:19","statements":[{"AST":{"nodeType":"YulBlock","src":"15366:86:19","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15403:2:19","type":"","value":"32"},{"name":"reason","nodeType":"YulIdentifier","src":"15407:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15399:3:19"},"nodeType":"YulFunctionCall","src":"15399:15:19"},{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"15422:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15416:5:19"},"nodeType":"YulFunctionCall","src":"15416:13:19"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15392:6:19"},"nodeType":"YulFunctionCall","src":"15392:38:19"},"nodeType":"YulExpressionStatement","src":"15392:38:19"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":4343,"isOffset":false,"isSlot":false,"src":"15407:6:19","valueSize":1},{"declaration":4343,"isOffset":false,"isSlot":false,"src":"15422:6:19","valueSize":1}],"id":4354,"nodeType":"InlineAssembly","src":"15357:95:19"}]},"id":4356,"nodeType":"IfStatement","src":"15149:321:19","trueBody":{"id":4353,"nodeType":"Block","src":"15173:101:19","statements":[{"expression":{"arguments":[{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":4350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15202:52:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":4349,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"15195:6:19","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":4351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15195:60:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4352,"nodeType":"ExpressionStatement","src":"15195:60:19"}]}}]},"errorName":"","id":4358,"nodeType":"TryCatchClause","parameters":{"id":4344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4343,"mutability":"mutable","name":"reason","nameLocation":"15123:6:19","nodeType":"VariableDeclaration","scope":4358,"src":"15110:19:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4342,"name":"bytes","nodeType":"ElementaryTypeName","src":"15110:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15109:21:19"},"src":"15103:381:19"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4325,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"14941:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14941:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4327,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"14955:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4328,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4311,"src":"14961:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4329,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4313,"src":"14970:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":4322,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4309,"src":"14920:2:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4321,"name":"IERC721ReceiverUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"14893:26:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721ReceiverUpgradeable_$4431_$","typeString":"type(contract IERC721ReceiverUpgradeable)"}},"id":4323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14893:30:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721ReceiverUpgradeable_$4431","typeString":"contract IERC721ReceiverUpgradeable"}},"id":4324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14924:16:19","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":4430,"src":"14893:47:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":4330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14893:82:19","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":4359,"nodeType":"TryStatement","src":"14889:595:19"}]}}]},"documentation":{"id":4305,"nodeType":"StructuredDocumentation","src":"14143:541:19","text":" @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"},"id":4366,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"14698:22:19","nodeType":"FunctionDefinition","parameters":{"id":4314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4307,"mutability":"mutable","name":"from","nameLocation":"14738:4:19","nodeType":"VariableDeclaration","scope":4366,"src":"14730:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4306,"name":"address","nodeType":"ElementaryTypeName","src":"14730:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4309,"mutability":"mutable","name":"to","nameLocation":"14760:2:19","nodeType":"VariableDeclaration","scope":4366,"src":"14752:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4308,"name":"address","nodeType":"ElementaryTypeName","src":"14752:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4311,"mutability":"mutable","name":"tokenId","nameLocation":"14780:7:19","nodeType":"VariableDeclaration","scope":4366,"src":"14772:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4310,"name":"uint256","nodeType":"ElementaryTypeName","src":"14772:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4313,"mutability":"mutable","name":"data","nameLocation":"14810:4:19","nodeType":"VariableDeclaration","scope":4366,"src":"14797:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4312,"name":"bytes","nodeType":"ElementaryTypeName","src":"14797:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14720:100:19"},"returnParameters":{"id":4317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4316,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4366,"src":"14838:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4315,"name":"bool","nodeType":"ElementaryTypeName","src":"14838:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14837:6:19"},"scope":4413,"src":"14689:853:19","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":4378,"nodeType":"Block","src":"16410:2:19","statements":[]},"documentation":{"id":4367,"nodeType":"StructuredDocumentation","src":"15548:705:19","text":" @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n - When `from` is zero, the tokens will be minted for `to`.\n - When `to` is zero, ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":4379,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"16267:20:19","nodeType":"FunctionDefinition","parameters":{"id":4376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4369,"mutability":"mutable","name":"from","nameLocation":"16305:4:19","nodeType":"VariableDeclaration","scope":4379,"src":"16297:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4368,"name":"address","nodeType":"ElementaryTypeName","src":"16297:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4371,"mutability":"mutable","name":"to","nameLocation":"16327:2:19","nodeType":"VariableDeclaration","scope":4379,"src":"16319:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4370,"name":"address","nodeType":"ElementaryTypeName","src":"16319:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4373,"mutability":"mutable","name":"firstTokenId","nameLocation":"16347:12:19","nodeType":"VariableDeclaration","scope":4379,"src":"16339:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4372,"name":"uint256","nodeType":"ElementaryTypeName","src":"16339:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4375,"mutability":"mutable","name":"batchSize","nameLocation":"16377:9:19","nodeType":"VariableDeclaration","scope":4379,"src":"16369:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4374,"name":"uint256","nodeType":"ElementaryTypeName","src":"16369:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16287:105:19"},"returnParameters":{"id":4377,"nodeType":"ParameterList","parameters":[],"src":"16410:0:19"},"scope":4413,"src":"16258:154:19","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4391,"nodeType":"Block","src":"17269:2:19","statements":[]},"documentation":{"id":4380,"nodeType":"StructuredDocumentation","src":"16418:695:19","text":" @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n - When `from` is zero, the tokens were minted for `to`.\n - When `to` is zero, ``from``'s tokens were burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":4392,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"17127:19:19","nodeType":"FunctionDefinition","parameters":{"id":4389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4382,"mutability":"mutable","name":"from","nameLocation":"17164:4:19","nodeType":"VariableDeclaration","scope":4392,"src":"17156:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4381,"name":"address","nodeType":"ElementaryTypeName","src":"17156:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4384,"mutability":"mutable","name":"to","nameLocation":"17186:2:19","nodeType":"VariableDeclaration","scope":4392,"src":"17178:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4383,"name":"address","nodeType":"ElementaryTypeName","src":"17178:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4386,"mutability":"mutable","name":"firstTokenId","nameLocation":"17206:12:19","nodeType":"VariableDeclaration","scope":4392,"src":"17198:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4385,"name":"uint256","nodeType":"ElementaryTypeName","src":"17198:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4388,"mutability":"mutable","name":"batchSize","nameLocation":"17236:9:19","nodeType":"VariableDeclaration","scope":4392,"src":"17228:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4387,"name":"uint256","nodeType":"ElementaryTypeName","src":"17228:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17146:105:19"},"returnParameters":{"id":4390,"nodeType":"ParameterList","parameters":[],"src":"17269:0:19"},"scope":4413,"src":"17118:153:19","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4406,"nodeType":"Block","src":"17820:45:19","statements":[{"expression":{"id":4404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4400,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"17830:9:19","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4402,"indexExpression":{"id":4401,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4395,"src":"17840:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17830:18:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4403,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4397,"src":"17852:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17830:28:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4405,"nodeType":"ExpressionStatement","src":"17830:28:19"}]},"documentation":{"id":4393,"nodeType":"StructuredDocumentation","src":"17277:409:19","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\n being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\n that `ownerOf(tokenId)` is `a`."},"id":4407,"implemented":true,"kind":"function","modifiers":[],"name":"__unsafe_increaseBalance","nameLocation":"17753:24:19","nodeType":"FunctionDefinition","parameters":{"id":4398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4395,"mutability":"mutable","name":"account","nameLocation":"17786:7:19","nodeType":"VariableDeclaration","scope":4407,"src":"17778:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4394,"name":"address","nodeType":"ElementaryTypeName","src":"17778:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4397,"mutability":"mutable","name":"amount","nameLocation":"17803:6:19","nodeType":"VariableDeclaration","scope":4407,"src":"17795:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4396,"name":"uint256","nodeType":"ElementaryTypeName","src":"17795:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17777:33:19"},"returnParameters":{"id":4399,"nodeType":"ParameterList","parameters":[],"src":"17820:0:19"},"scope":4413,"src":"17744:121:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":false,"documentation":{"id":4408,"nodeType":"StructuredDocumentation","src":"17871:254:19","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":4412,"mutability":"mutable","name":"__gap","nameLocation":"18150:5:19","nodeType":"VariableDeclaration","scope":4413,"src":"18130:25:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$44_storage","typeString":"uint256[44]"},"typeName":{"baseType":{"id":4409,"name":"uint256","nodeType":"ElementaryTypeName","src":"18130:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4411,"length":{"hexValue":"3434","id":4410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18138:2:19","typeDescriptions":{"typeIdentifier":"t_rational_44_by_1","typeString":"int_const 44"},"value":"44"},"nodeType":"ArrayTypeName","src":"18130:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$44_storage_ptr","typeString":"uint256[44]"}},"visibility":"private"}],"scope":4414,"src":"751:17407:19","usedErrors":[]}],"src":"107:18052:19"},"id":19},"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol","exportedSymbols":{"IERC721ReceiverUpgradeable":[4431]},"id":4432,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4415,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:20"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721ReceiverUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":4416,"nodeType":"StructuredDocumentation","src":"141:152:20","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":4431,"linearizedBaseContracts":[4431],"name":"IERC721ReceiverUpgradeable","nameLocation":"304:26:20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4417,"nodeType":"StructuredDocumentation","src":"337:493:20","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":4430,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"844:16:20","nodeType":"FunctionDefinition","parameters":{"id":4426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4419,"mutability":"mutable","name":"operator","nameLocation":"878:8:20","nodeType":"VariableDeclaration","scope":4430,"src":"870:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4418,"name":"address","nodeType":"ElementaryTypeName","src":"870:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4421,"mutability":"mutable","name":"from","nameLocation":"904:4:20","nodeType":"VariableDeclaration","scope":4430,"src":"896:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4420,"name":"address","nodeType":"ElementaryTypeName","src":"896:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4423,"mutability":"mutable","name":"tokenId","nameLocation":"926:7:20","nodeType":"VariableDeclaration","scope":4430,"src":"918:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4422,"name":"uint256","nodeType":"ElementaryTypeName","src":"918:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4425,"mutability":"mutable","name":"data","nameLocation":"958:4:20","nodeType":"VariableDeclaration","scope":4430,"src":"943:19:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4424,"name":"bytes","nodeType":"ElementaryTypeName","src":"943:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"860:108:20"},"returnParameters":{"id":4429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4430,"src":"987:6:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4427,"name":"bytes4","nodeType":"ElementaryTypeName","src":"987:6:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"986:8:20"},"scope":4431,"src":"835:160:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4432,"src":"294:703:20","usedErrors":[]}],"src":"116:882:20"},"id":20},"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol","exportedSymbols":{"IERC165Upgradeable":[7305],"IERC721Upgradeable":[4547]},"id":4548,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4433,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:21"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","file":"../../utils/introspection/IERC165Upgradeable.sol","id":4434,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4548,"sourceUnit":7306,"src":"133:58:21","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4436,"name":"IERC165Upgradeable","nameLocations":["293:18:21"],"nodeType":"IdentifierPath","referencedDeclaration":7305,"src":"293:18:21"},"id":4437,"nodeType":"InheritanceSpecifier","src":"293:18:21"}],"canonicalName":"IERC721Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":4435,"nodeType":"StructuredDocumentation","src":"193:67:21","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":4547,"linearizedBaseContracts":[4547,7305],"name":"IERC721Upgradeable","nameLocation":"271:18:21","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":4438,"nodeType":"StructuredDocumentation","src":"318:88:21","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":4446,"name":"Transfer","nameLocation":"417:8:21","nodeType":"EventDefinition","parameters":{"id":4445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4440,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"442:4:21","nodeType":"VariableDeclaration","scope":4446,"src":"426:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4439,"name":"address","nodeType":"ElementaryTypeName","src":"426:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4442,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"464:2:21","nodeType":"VariableDeclaration","scope":4446,"src":"448:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4441,"name":"address","nodeType":"ElementaryTypeName","src":"448:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4444,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"484:7:21","nodeType":"VariableDeclaration","scope":4446,"src":"468:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4443,"name":"uint256","nodeType":"ElementaryTypeName","src":"468:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:67:21"},"src":"411:82:21"},{"anonymous":false,"documentation":{"id":4447,"nodeType":"StructuredDocumentation","src":"499:94:21","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":4455,"name":"Approval","nameLocation":"604:8:21","nodeType":"EventDefinition","parameters":{"id":4454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4449,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"629:5:21","nodeType":"VariableDeclaration","scope":4455,"src":"613:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4448,"name":"address","nodeType":"ElementaryTypeName","src":"613:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4451,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"652:8:21","nodeType":"VariableDeclaration","scope":4455,"src":"636:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4450,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4453,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"678:7:21","nodeType":"VariableDeclaration","scope":4455,"src":"662:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4452,"name":"uint256","nodeType":"ElementaryTypeName","src":"662:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"612:74:21"},"src":"598:89:21"},{"anonymous":false,"documentation":{"id":4456,"nodeType":"StructuredDocumentation","src":"693:117:21","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":4464,"name":"ApprovalForAll","nameLocation":"821:14:21","nodeType":"EventDefinition","parameters":{"id":4463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4458,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"852:5:21","nodeType":"VariableDeclaration","scope":4464,"src":"836:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4457,"name":"address","nodeType":"ElementaryTypeName","src":"836:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4460,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"875:8:21","nodeType":"VariableDeclaration","scope":4464,"src":"859:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4459,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4462,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"890:8:21","nodeType":"VariableDeclaration","scope":4464,"src":"885:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4461,"name":"bool","nodeType":"ElementaryTypeName","src":"885:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"835:64:21"},"src":"815:85:21"},{"documentation":{"id":4465,"nodeType":"StructuredDocumentation","src":"906:76:21","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":4472,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"996:9:21","nodeType":"FunctionDefinition","parameters":{"id":4468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4467,"mutability":"mutable","name":"owner","nameLocation":"1014:5:21","nodeType":"VariableDeclaration","scope":4472,"src":"1006:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4466,"name":"address","nodeType":"ElementaryTypeName","src":"1006:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1005:15:21"},"returnParameters":{"id":4471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4470,"mutability":"mutable","name":"balance","nameLocation":"1052:7:21","nodeType":"VariableDeclaration","scope":4472,"src":"1044:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4469,"name":"uint256","nodeType":"ElementaryTypeName","src":"1044:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1043:17:21"},"scope":4547,"src":"987:74:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4473,"nodeType":"StructuredDocumentation","src":"1067:131:21","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":4480,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1212:7:21","nodeType":"FunctionDefinition","parameters":{"id":4476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4475,"mutability":"mutable","name":"tokenId","nameLocation":"1228:7:21","nodeType":"VariableDeclaration","scope":4480,"src":"1220:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4474,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1219:17:21"},"returnParameters":{"id":4479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4478,"mutability":"mutable","name":"owner","nameLocation":"1268:5:21","nodeType":"VariableDeclaration","scope":4480,"src":"1260:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4477,"name":"address","nodeType":"ElementaryTypeName","src":"1260:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1259:15:21"},"scope":4547,"src":"1203:72:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4481,"nodeType":"StructuredDocumentation","src":"1281:556:21","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":4492,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1851:16:21","nodeType":"FunctionDefinition","parameters":{"id":4490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4483,"mutability":"mutable","name":"from","nameLocation":"1885:4:21","nodeType":"VariableDeclaration","scope":4492,"src":"1877:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4482,"name":"address","nodeType":"ElementaryTypeName","src":"1877:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4485,"mutability":"mutable","name":"to","nameLocation":"1907:2:21","nodeType":"VariableDeclaration","scope":4492,"src":"1899:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4484,"name":"address","nodeType":"ElementaryTypeName","src":"1899:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4487,"mutability":"mutable","name":"tokenId","nameLocation":"1927:7:21","nodeType":"VariableDeclaration","scope":4492,"src":"1919:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4486,"name":"uint256","nodeType":"ElementaryTypeName","src":"1919:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4489,"mutability":"mutable","name":"data","nameLocation":"1959:4:21","nodeType":"VariableDeclaration","scope":4492,"src":"1944:19:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4488,"name":"bytes","nodeType":"ElementaryTypeName","src":"1944:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1867:102:21"},"returnParameters":{"id":4491,"nodeType":"ParameterList","parameters":[],"src":"1978:0:21"},"scope":4547,"src":"1842:137:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4493,"nodeType":"StructuredDocumentation","src":"1985:687:21","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":4502,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2686:16:21","nodeType":"FunctionDefinition","parameters":{"id":4500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4495,"mutability":"mutable","name":"from","nameLocation":"2720:4:21","nodeType":"VariableDeclaration","scope":4502,"src":"2712:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4494,"name":"address","nodeType":"ElementaryTypeName","src":"2712:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4497,"mutability":"mutable","name":"to","nameLocation":"2742:2:21","nodeType":"VariableDeclaration","scope":4502,"src":"2734:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4496,"name":"address","nodeType":"ElementaryTypeName","src":"2734:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4499,"mutability":"mutable","name":"tokenId","nameLocation":"2762:7:21","nodeType":"VariableDeclaration","scope":4502,"src":"2754:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4498,"name":"uint256","nodeType":"ElementaryTypeName","src":"2754:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2702:73:21"},"returnParameters":{"id":4501,"nodeType":"ParameterList","parameters":[],"src":"2784:0:21"},"scope":4547,"src":"2677:108:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4503,"nodeType":"StructuredDocumentation","src":"2791:732:21","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":4512,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3537:12:21","nodeType":"FunctionDefinition","parameters":{"id":4510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4505,"mutability":"mutable","name":"from","nameLocation":"3567:4:21","nodeType":"VariableDeclaration","scope":4512,"src":"3559:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4504,"name":"address","nodeType":"ElementaryTypeName","src":"3559:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4507,"mutability":"mutable","name":"to","nameLocation":"3589:2:21","nodeType":"VariableDeclaration","scope":4512,"src":"3581:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4506,"name":"address","nodeType":"ElementaryTypeName","src":"3581:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4509,"mutability":"mutable","name":"tokenId","nameLocation":"3609:7:21","nodeType":"VariableDeclaration","scope":4512,"src":"3601:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4508,"name":"uint256","nodeType":"ElementaryTypeName","src":"3601:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3549:73:21"},"returnParameters":{"id":4511,"nodeType":"ParameterList","parameters":[],"src":"3631:0:21"},"scope":4547,"src":"3528:104:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4513,"nodeType":"StructuredDocumentation","src":"3638:452:21","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":4520,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4104:7:21","nodeType":"FunctionDefinition","parameters":{"id":4518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4515,"mutability":"mutable","name":"to","nameLocation":"4120:2:21","nodeType":"VariableDeclaration","scope":4520,"src":"4112:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4514,"name":"address","nodeType":"ElementaryTypeName","src":"4112:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4517,"mutability":"mutable","name":"tokenId","nameLocation":"4132:7:21","nodeType":"VariableDeclaration","scope":4520,"src":"4124:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4516,"name":"uint256","nodeType":"ElementaryTypeName","src":"4124:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4111:29:21"},"returnParameters":{"id":4519,"nodeType":"ParameterList","parameters":[],"src":"4149:0:21"},"scope":4547,"src":"4095:55:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4521,"nodeType":"StructuredDocumentation","src":"4156:309:21","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":4528,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4479:17:21","nodeType":"FunctionDefinition","parameters":{"id":4526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4523,"mutability":"mutable","name":"operator","nameLocation":"4505:8:21","nodeType":"VariableDeclaration","scope":4528,"src":"4497:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4522,"name":"address","nodeType":"ElementaryTypeName","src":"4497:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4525,"mutability":"mutable","name":"_approved","nameLocation":"4520:9:21","nodeType":"VariableDeclaration","scope":4528,"src":"4515:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4524,"name":"bool","nodeType":"ElementaryTypeName","src":"4515:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4496:34:21"},"returnParameters":{"id":4527,"nodeType":"ParameterList","parameters":[],"src":"4539:0:21"},"scope":4547,"src":"4470:70:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4529,"nodeType":"StructuredDocumentation","src":"4546:139:21","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":4536,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4699:11:21","nodeType":"FunctionDefinition","parameters":{"id":4532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4531,"mutability":"mutable","name":"tokenId","nameLocation":"4719:7:21","nodeType":"VariableDeclaration","scope":4536,"src":"4711:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4530,"name":"uint256","nodeType":"ElementaryTypeName","src":"4711:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4710:17:21"},"returnParameters":{"id":4535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4534,"mutability":"mutable","name":"operator","nameLocation":"4759:8:21","nodeType":"VariableDeclaration","scope":4536,"src":"4751:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4533,"name":"address","nodeType":"ElementaryTypeName","src":"4751:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4750:18:21"},"scope":4547,"src":"4690:79:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4537,"nodeType":"StructuredDocumentation","src":"4775:138:21","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":4546,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4927:16:21","nodeType":"FunctionDefinition","parameters":{"id":4542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4539,"mutability":"mutable","name":"owner","nameLocation":"4952:5:21","nodeType":"VariableDeclaration","scope":4546,"src":"4944:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4538,"name":"address","nodeType":"ElementaryTypeName","src":"4944:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4541,"mutability":"mutable","name":"operator","nameLocation":"4967:8:21","nodeType":"VariableDeclaration","scope":4546,"src":"4959:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4540,"name":"address","nodeType":"ElementaryTypeName","src":"4959:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4943:33:21"},"returnParameters":{"id":4545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4546,"src":"5000:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4543,"name":"bool","nodeType":"ElementaryTypeName","src":"5000:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4999:6:21"},"scope":4547,"src":"4918:88:21","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4548,"src":"261:4747:21","usedErrors":[]}],"src":"108:4901:21"},"id":21},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"ContextUpgradeable":[6489],"ERC165Upgradeable":[7293],"ERC721URIStorageUpgradeable":[4692],"ERC721Upgradeable":[4413],"IERC165Upgradeable":[7305],"IERC721MetadataUpgradeable":[4792],"IERC721ReceiverUpgradeable":[4431],"IERC721Upgradeable":[4547],"Initializable":[1466],"MathUpgradeable":[8170],"StringsUpgradeable":[6738]},"id":4693,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4549,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"128:23:22"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol","file":"../ERC721Upgradeable.sol","id":4550,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4693,"sourceUnit":4414,"src":"153:34:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../../proxy/utils/Initializable.sol","id":4551,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4693,"sourceUnit":1467,"src":"188:48:22","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4553,"name":"Initializable","nameLocations":["357:13:22"],"nodeType":"IdentifierPath","referencedDeclaration":1466,"src":"357:13:22"},"id":4554,"nodeType":"InheritanceSpecifier","src":"357:13:22"},{"baseName":{"id":4555,"name":"ERC721Upgradeable","nameLocations":["372:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":4413,"src":"372:17:22"},"id":4556,"nodeType":"InheritanceSpecifier","src":"372:17:22"}],"canonicalName":"ERC721URIStorageUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4552,"nodeType":"StructuredDocumentation","src":"238:69:22","text":" @dev ERC721 token with storage based token URI management."},"fullyImplemented":true,"id":4692,"linearizedBaseContracts":[4692,4413,4792,4547,7293,7305,6489,1466],"name":"ERC721URIStorageUpgradeable","nameLocation":"326:27:22","nodeType":"ContractDefinition","nodes":[{"body":{"id":4561,"nodeType":"Block","src":"457:7:22","statements":[]},"id":4562,"implemented":true,"kind":"function","modifiers":[{"id":4559,"kind":"modifierInvocation","modifierName":{"id":4558,"name":"onlyInitializing","nameLocations":["440:16:22"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"440:16:22"},"nodeType":"ModifierInvocation","src":"440:16:22"}],"name":"__ERC721URIStorage_init","nameLocation":"405:23:22","nodeType":"FunctionDefinition","parameters":{"id":4557,"nodeType":"ParameterList","parameters":[],"src":"428:2:22"},"returnParameters":{"id":4560,"nodeType":"ParameterList","parameters":[],"src":"457:0:22"},"scope":4692,"src":"396:68:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4567,"nodeType":"Block","src":"541:7:22","statements":[]},"id":4568,"implemented":true,"kind":"function","modifiers":[{"id":4565,"kind":"modifierInvocation","modifierName":{"id":4564,"name":"onlyInitializing","nameLocations":["524:16:22"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"524:16:22"},"nodeType":"ModifierInvocation","src":"524:16:22"}],"name":"__ERC721URIStorage_init_unchained","nameLocation":"479:33:22","nodeType":"FunctionDefinition","parameters":{"id":4563,"nodeType":"ParameterList","parameters":[],"src":"512:2:22"},"returnParameters":{"id":4566,"nodeType":"ParameterList","parameters":[],"src":"541:0:22"},"scope":4692,"src":"470:78:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"global":false,"id":4571,"libraryName":{"id":4569,"name":"StringsUpgradeable","nameLocations":["559:18:22"],"nodeType":"IdentifierPath","referencedDeclaration":6738,"src":"559:18:22"},"nodeType":"UsingForDirective","src":"553:37:22","typeName":{"id":4570,"name":"uint256","nodeType":"ElementaryTypeName","src":"582:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":4575,"mutability":"mutable","name":"_tokenURIs","nameLocation":"670:10:22","nodeType":"VariableDeclaration","scope":4692,"src":"635:45:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"typeName":{"id":4574,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4572,"name":"uint256","nodeType":"ElementaryTypeName","src":"643:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"635:26:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4573,"name":"string","nodeType":"ElementaryTypeName","src":"654:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"visibility":"private"},{"baseFunctions":[3686],"body":{"id":4633,"nodeType":"Block","src":"835:520:22","statements":[{"expression":{"arguments":[{"id":4585,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4578,"src":"860:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4584,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4304,"src":"845:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":4586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"845:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4587,"nodeType":"ExpressionStatement","src":"845:23:22"},{"assignments":[4589],"declarations":[{"constant":false,"id":4589,"mutability":"mutable","name":"_tokenURI","nameLocation":"893:9:22","nodeType":"VariableDeclaration","scope":4633,"src":"879:23:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4588,"name":"string","nodeType":"ElementaryTypeName","src":"879:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":4593,"initialValue":{"baseExpression":{"id":4590,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4575,"src":"905:10:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":4592,"indexExpression":{"id":4591,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4578,"src":"916:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"905:19:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"VariableDeclarationStatement","src":"879:45:22"},{"assignments":[4595],"declarations":[{"constant":false,"id":4595,"mutability":"mutable","name":"base","nameLocation":"948:4:22","nodeType":"VariableDeclaration","scope":4633,"src":"934:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4594,"name":"string","nodeType":"ElementaryTypeName","src":"934:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":4598,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4596,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3695,"src":"955:8:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":4597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"955:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"934:31:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4601,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4595,"src":"1044:4:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1038:5:22","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4599,"name":"bytes","nodeType":"ElementaryTypeName","src":"1038:5:22","typeDescriptions":{}}},"id":4602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1038:11:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1050:6:22","memberName":"length","nodeType":"MemberAccess","src":"1038:18:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1060:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1038:23:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4609,"nodeType":"IfStatement","src":"1034:70:22","trueBody":{"id":4608,"nodeType":"Block","src":"1063:41:22","statements":[{"expression":{"id":4606,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"1084:9:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4583,"id":4607,"nodeType":"Return","src":"1077:16:22"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4612,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"1212:9:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1206:5:22","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4610,"name":"bytes","nodeType":"ElementaryTypeName","src":"1206:5:22","typeDescriptions":{}}},"id":4613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1206:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1223:6:22","memberName":"length","nodeType":"MemberAccess","src":"1206:23:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1206:27:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4627,"nodeType":"IfStatement","src":"1202:106:22","trueBody":{"id":4626,"nodeType":"Block","src":"1235:73:22","statements":[{"expression":{"arguments":[{"arguments":[{"id":4621,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4595,"src":"1280:4:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":4622,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"1286:9:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":4619,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1263:3:22","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1267:12:22","memberName":"encodePacked","nodeType":"MemberAccess","src":"1263:16:22","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1263:33:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1256:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":4617,"name":"string","nodeType":"ElementaryTypeName","src":"1256:6:22","typeDescriptions":{}}},"id":4624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1256:41:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4583,"id":4625,"nodeType":"Return","src":"1249:48:22"}]}},{"expression":{"arguments":[{"id":4630,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4578,"src":"1340:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4628,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1325:5:22","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721URIStorageUpgradeable_$4692_$","typeString":"type(contract super ERC721URIStorageUpgradeable)"}},"id":4629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1331:8:22","memberName":"tokenURI","nodeType":"MemberAccess","referencedDeclaration":3686,"src":"1325:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) view returns (string memory)"}},"id":4631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1325:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4583,"id":4632,"nodeType":"Return","src":"1318:30:22"}]},"documentation":{"id":4576,"nodeType":"StructuredDocumentation","src":"687:55:22","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":4634,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"756:8:22","nodeType":"FunctionDefinition","overrides":{"id":4580,"nodeType":"OverrideSpecifier","overrides":[],"src":"802:8:22"},"parameters":{"id":4579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4578,"mutability":"mutable","name":"tokenId","nameLocation":"773:7:22","nodeType":"VariableDeclaration","scope":4634,"src":"765:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4577,"name":"uint256","nodeType":"ElementaryTypeName","src":"765:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"764:17:22"},"returnParameters":{"id":4583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4634,"src":"820:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4581,"name":"string","nodeType":"ElementaryTypeName","src":"820:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"819:15:22"},"scope":4692,"src":"747:608:22","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":4655,"nodeType":"Block","src":"1583:133:22","statements":[{"expression":{"arguments":[{"arguments":[{"id":4644,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4637,"src":"1609:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4643,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3927,"src":"1601:7:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":4645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1601:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524337323155524953746f726167653a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e","id":4646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1619:48:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521de1f20ce4d7bb86b61090bad73a87315a1f4baff36cc352901c7777280c4","typeString":"literal_string \"ERC721URIStorage: URI set of nonexistent token\""},"value":"ERC721URIStorage: URI set of nonexistent token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7521de1f20ce4d7bb86b61090bad73a87315a1f4baff36cc352901c7777280c4","typeString":"literal_string \"ERC721URIStorage: URI set of nonexistent token\""}],"id":4642,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1593:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1593:75:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4648,"nodeType":"ExpressionStatement","src":"1593:75:22"},{"expression":{"id":4653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4649,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4575,"src":"1678:10:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":4651,"indexExpression":{"id":4650,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4637,"src":"1689:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1678:19:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4652,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"1700:9:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1678:31:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":4654,"nodeType":"ExpressionStatement","src":"1678:31:22"}]},"documentation":{"id":4635,"nodeType":"StructuredDocumentation","src":"1361:136:22","text":" @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":4656,"implemented":true,"kind":"function","modifiers":[],"name":"_setTokenURI","nameLocation":"1511:12:22","nodeType":"FunctionDefinition","parameters":{"id":4640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4637,"mutability":"mutable","name":"tokenId","nameLocation":"1532:7:22","nodeType":"VariableDeclaration","scope":4656,"src":"1524:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4636,"name":"uint256","nodeType":"ElementaryTypeName","src":"1524:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4639,"mutability":"mutable","name":"_tokenURI","nameLocation":"1555:9:22","nodeType":"VariableDeclaration","scope":4656,"src":"1541:23:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4638,"name":"string","nodeType":"ElementaryTypeName","src":"1541:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1523:42:22"},"returnParameters":{"id":4641,"nodeType":"ParameterList","parameters":[],"src":"1583:0:22"},"scope":4692,"src":"1502:214:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[4149],"body":{"id":4685,"nodeType":"Block","src":"1992:142:22","statements":[{"expression":{"arguments":[{"id":4666,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"2014:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4663,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2002:5:22","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721URIStorageUpgradeable_$4692_$","typeString":"type(contract super ERC721URIStorageUpgradeable)"}},"id":4665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2008:5:22","memberName":"_burn","nodeType":"MemberAccess","referencedDeclaration":4149,"src":"2002:11:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":4667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2002:20:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4668,"nodeType":"ExpressionStatement","src":"2002:20:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"baseExpression":{"id":4671,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4575,"src":"2043:10:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":4673,"indexExpression":{"id":4672,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"2054:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2043:19:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"id":4670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2037:5:22","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4669,"name":"bytes","nodeType":"ElementaryTypeName","src":"2037:5:22","typeDescriptions":{}}},"id":4674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2037:26:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes storage pointer"}},"id":4675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2064:6:22","memberName":"length","nodeType":"MemberAccess","src":"2037:33:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2074:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2037:38:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4684,"nodeType":"IfStatement","src":"2033:95:22","trueBody":{"id":4683,"nodeType":"Block","src":"2077:51:22","statements":[{"expression":{"id":4681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"2091:26:22","subExpression":{"baseExpression":{"id":4678,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4575,"src":"2098:10:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":4680,"indexExpression":{"id":4679,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"2109:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2098:19:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4682,"nodeType":"ExpressionStatement","src":"2091:26:22"}]}}]},"documentation":{"id":4657,"nodeType":"StructuredDocumentation","src":"1722:207:22","text":" @dev See {ERC721-_burn}. This override additionally checks to see if a\n token-specific URI was set for the token, and if so, it deletes the token URI from\n the storage mapping."},"id":4686,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"1943:5:22","nodeType":"FunctionDefinition","overrides":{"id":4661,"nodeType":"OverrideSpecifier","overrides":[],"src":"1983:8:22"},"parameters":{"id":4660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4659,"mutability":"mutable","name":"tokenId","nameLocation":"1957:7:22","nodeType":"VariableDeclaration","scope":4686,"src":"1949:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4658,"name":"uint256","nodeType":"ElementaryTypeName","src":"1949:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1948:17:22"},"returnParameters":{"id":4662,"nodeType":"ParameterList","parameters":[],"src":"1992:0:22"},"scope":4692,"src":"1934:200:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":4687,"nodeType":"StructuredDocumentation","src":"2140:254:22","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":4691,"mutability":"mutable","name":"__gap","nameLocation":"2419:5:22","nodeType":"VariableDeclaration","scope":4692,"src":"2399:25:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":4688,"name":"uint256","nodeType":"ElementaryTypeName","src":"2399:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4690,"length":{"hexValue":"3439","id":4689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2407:2:22","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"2399:11:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":4693,"src":"308:2119:22","usedErrors":[]}],"src":"128:2300:22"},"id":22},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"CheckpointsUpgradeable":[6447],"ContextUpgradeable":[6489],"CountersUpgradeable":[6563],"ECDSAUpgradeable":[7099],"EIP712Upgradeable":[7249],"ERC165Upgradeable":[7293],"ERC721Upgradeable":[4413],"ERC721VotesUpgradeable":[4765],"IERC165Upgradeable":[7305],"IERC721MetadataUpgradeable":[4792],"IERC721ReceiverUpgradeable":[4431],"IERC721Upgradeable":[4547],"IVotesUpgradeable":[804],"Initializable":[1466],"MathUpgradeable":[8170],"SafeCastUpgradeable":[9711],"StringsUpgradeable":[6738],"VotesUpgradeable":[1278]},"id":4766,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4694,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"123:23:23"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol","file":"../ERC721Upgradeable.sol","id":4695,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4766,"sourceUnit":4414,"src":"148:34:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol","file":"../../../governance/utils/VotesUpgradeable.sol","id":4696,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4766,"sourceUnit":1279,"src":"183:56:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../../proxy/utils/Initializable.sol","id":4697,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4766,"sourceUnit":1467,"src":"240:48:23","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4699,"name":"Initializable","nameLocations":["859:13:23"],"nodeType":"IdentifierPath","referencedDeclaration":1466,"src":"859:13:23"},"id":4700,"nodeType":"InheritanceSpecifier","src":"859:13:23"},{"baseName":{"id":4701,"name":"ERC721Upgradeable","nameLocations":["874:17:23"],"nodeType":"IdentifierPath","referencedDeclaration":4413,"src":"874:17:23"},"id":4702,"nodeType":"InheritanceSpecifier","src":"874:17:23"},{"baseName":{"id":4703,"name":"VotesUpgradeable","nameLocations":["893:16:23"],"nodeType":"IdentifierPath","referencedDeclaration":1278,"src":"893:16:23"},"id":4704,"nodeType":"InheritanceSpecifier","src":"893:16:23"}],"canonicalName":"ERC721VotesUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4698,"nodeType":"StructuredDocumentation","src":"290:524:23","text":" @dev Extension of ERC721 to support voting and delegation as implemented by {Votes}, where each individual NFT counts\n as 1 vote unit.\n Tokens do not count as votes until they are delegated, because votes must be tracked which incurs an additional cost\n on every transfer. Token holders can either delegate to a trusted representative who will decide how to make use of\n the votes in governance decisions, or they can delegate to themselves to be their own representative.\n _Available since v4.5._"},"fullyImplemented":true,"id":4765,"linearizedBaseContracts":[4765,1278,7249,4413,4792,4547,7293,7305,6489,804,1466],"name":"ERC721VotesUpgradeable","nameLocation":"833:22:23","nodeType":"ContractDefinition","nodes":[{"body":{"id":4709,"nodeType":"Block","src":"972:7:23","statements":[]},"id":4710,"implemented":true,"kind":"function","modifiers":[{"id":4707,"kind":"modifierInvocation","modifierName":{"id":4706,"name":"onlyInitializing","nameLocations":["955:16:23"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"955:16:23"},"nodeType":"ModifierInvocation","src":"955:16:23"}],"name":"__ERC721Votes_init","nameLocation":"925:18:23","nodeType":"FunctionDefinition","parameters":{"id":4705,"nodeType":"ParameterList","parameters":[],"src":"943:2:23"},"returnParameters":{"id":4708,"nodeType":"ParameterList","parameters":[],"src":"972:0:23"},"scope":4765,"src":"916:63:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4715,"nodeType":"Block","src":"1051:7:23","statements":[]},"id":4716,"implemented":true,"kind":"function","modifiers":[{"id":4713,"kind":"modifierInvocation","modifierName":{"id":4712,"name":"onlyInitializing","nameLocations":["1034:16:23"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"1034:16:23"},"nodeType":"ModifierInvocation","src":"1034:16:23"}],"name":"__ERC721Votes_init_unchained","nameLocation":"994:28:23","nodeType":"FunctionDefinition","parameters":{"id":4711,"nodeType":"ParameterList","parameters":[],"src":"1022:2:23"},"returnParameters":{"id":4714,"nodeType":"ParameterList","parameters":[],"src":"1051:0:23"},"scope":4765,"src":"985:73:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4392],"body":{"id":4744,"nodeType":"Block","src":"1387:128:23","statements":[{"expression":{"arguments":[{"id":4730,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"1418:4:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4731,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4721,"src":"1424:2:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4732,"name":"batchSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4725,"src":"1428:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4729,"name":"_transferVotingUnits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"1397:20:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1397:41:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4734,"nodeType":"ExpressionStatement","src":"1397:41:23"},{"expression":{"arguments":[{"id":4738,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"1474:4:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4721,"src":"1480:2:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4740,"name":"firstTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4723,"src":"1484:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4741,"name":"batchSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4725,"src":"1498:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4735,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1448:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721VotesUpgradeable_$4765_$","typeString":"type(contract super ERC721VotesUpgradeable)"}},"id":4737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1454:19:23","memberName":"_afterTokenTransfer","nodeType":"MemberAccess","referencedDeclaration":4392,"src":"1448:25:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1448:60:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4743,"nodeType":"ExpressionStatement","src":"1448:60:23"}]},"documentation":{"id":4717,"nodeType":"StructuredDocumentation","src":"1063:159:23","text":" @dev See {ERC721-_afterTokenTransfer}. Adjusts votes when tokens are transferred.\n Emits a {IVotes-DelegateVotesChanged} event."},"id":4745,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"1236:19:23","nodeType":"FunctionDefinition","overrides":{"id":4727,"nodeType":"OverrideSpecifier","overrides":[],"src":"1378:8:23"},"parameters":{"id":4726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4719,"mutability":"mutable","name":"from","nameLocation":"1273:4:23","nodeType":"VariableDeclaration","scope":4745,"src":"1265:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4718,"name":"address","nodeType":"ElementaryTypeName","src":"1265:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4721,"mutability":"mutable","name":"to","nameLocation":"1295:2:23","nodeType":"VariableDeclaration","scope":4745,"src":"1287:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4720,"name":"address","nodeType":"ElementaryTypeName","src":"1287:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4723,"mutability":"mutable","name":"firstTokenId","nameLocation":"1315:12:23","nodeType":"VariableDeclaration","scope":4745,"src":"1307:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4722,"name":"uint256","nodeType":"ElementaryTypeName","src":"1307:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4725,"mutability":"mutable","name":"batchSize","nameLocation":"1345:9:23","nodeType":"VariableDeclaration","scope":4745,"src":"1337:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4724,"name":"uint256","nodeType":"ElementaryTypeName","src":"1337:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1255:105:23"},"returnParameters":{"id":4728,"nodeType":"ParameterList","parameters":[],"src":"1387:0:23"},"scope":4765,"src":"1227:288:23","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1272],"body":{"id":4758,"nodeType":"Block","src":"1674:42:23","statements":[{"expression":{"arguments":[{"id":4755,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4748,"src":"1701:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4754,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3599,"src":"1691:9:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1691:18:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4753,"id":4757,"nodeType":"Return","src":"1684:25:23"}]},"documentation":{"id":4746,"nodeType":"StructuredDocumentation","src":"1521:57:23","text":" @dev Returns the balance of `account`."},"id":4759,"implemented":true,"kind":"function","modifiers":[],"name":"_getVotingUnits","nameLocation":"1592:15:23","nodeType":"FunctionDefinition","overrides":{"id":4750,"nodeType":"OverrideSpecifier","overrides":[],"src":"1647:8:23"},"parameters":{"id":4749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4748,"mutability":"mutable","name":"account","nameLocation":"1616:7:23","nodeType":"VariableDeclaration","scope":4759,"src":"1608:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4747,"name":"address","nodeType":"ElementaryTypeName","src":"1608:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1607:17:23"},"returnParameters":{"id":4753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4759,"src":"1665:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4751,"name":"uint256","nodeType":"ElementaryTypeName","src":"1665:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1664:9:23"},"scope":4765,"src":"1583:133:23","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":4760,"nodeType":"StructuredDocumentation","src":"1722:254:23","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":4764,"mutability":"mutable","name":"__gap","nameLocation":"2001:5:23","nodeType":"VariableDeclaration","scope":4765,"src":"1981:25:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":4761,"name":"uint256","nodeType":"ElementaryTypeName","src":"1981:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4763,"length":{"hexValue":"3530","id":4762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1989:2:23","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1981:11:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":4766,"src":"815:1194:23","usedErrors":[]}],"src":"123:1887:23"},"id":23},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol","exportedSymbols":{"IERC165Upgradeable":[7305],"IERC721MetadataUpgradeable":[4792],"IERC721Upgradeable":[4547]},"id":4793,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4767,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:24"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol","file":"../IERC721Upgradeable.sol","id":4768,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4793,"sourceUnit":4548,"src":"137:35:24","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4770,"name":"IERC721Upgradeable","nameLocations":["348:18:24"],"nodeType":"IdentifierPath","referencedDeclaration":4547,"src":"348:18:24"},"id":4771,"nodeType":"InheritanceSpecifier","src":"348:18:24"}],"canonicalName":"IERC721MetadataUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":4769,"nodeType":"StructuredDocumentation","src":"174:133:24","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":4792,"linearizedBaseContracts":[4792,4547,7305],"name":"IERC721MetadataUpgradeable","nameLocation":"318:26:24","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4772,"nodeType":"StructuredDocumentation","src":"373:58:24","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":4777,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"445:4:24","nodeType":"FunctionDefinition","parameters":{"id":4773,"nodeType":"ParameterList","parameters":[],"src":"449:2:24"},"returnParameters":{"id":4776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4775,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4777,"src":"475:13:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4774,"name":"string","nodeType":"ElementaryTypeName","src":"475:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"474:15:24"},"scope":4792,"src":"436:54:24","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4778,"nodeType":"StructuredDocumentation","src":"496:60:24","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":4783,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"570:6:24","nodeType":"FunctionDefinition","parameters":{"id":4779,"nodeType":"ParameterList","parameters":[],"src":"576:2:24"},"returnParameters":{"id":4782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4783,"src":"602:13:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4780,"name":"string","nodeType":"ElementaryTypeName","src":"602:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"601:15:24"},"scope":4792,"src":"561:56:24","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4784,"nodeType":"StructuredDocumentation","src":"623:90:24","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":4791,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"727:8:24","nodeType":"FunctionDefinition","parameters":{"id":4787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4786,"mutability":"mutable","name":"tokenId","nameLocation":"744:7:24","nodeType":"VariableDeclaration","scope":4791,"src":"736:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4785,"name":"uint256","nodeType":"ElementaryTypeName","src":"736:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"735:17:24"},"returnParameters":{"id":4790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4789,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4791,"src":"776:13:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4788,"name":"string","nodeType":"ElementaryTypeName","src":"776:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"775:15:24"},"scope":4792,"src":"718:73:24","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4793,"src":"308:485:24","usedErrors":[]}],"src":"112:682:24"},"id":24},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076]},"id":5077,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4794,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:25"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":4795,"nodeType":"StructuredDocumentation","src":"126:67:25","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":5076,"linearizedBaseContracts":[5076],"name":"AddressUpgradeable","nameLocation":"202:18:25","nodeType":"ContractDefinition","nodes":[{"body":{"id":4809,"nodeType":"Block","src":"1252:254:25","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":4803,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4798,"src":"1476:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1484:4:25","memberName":"code","nodeType":"MemberAccess","src":"1476:12:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1489:6:25","memberName":"length","nodeType":"MemberAccess","src":"1476:19:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1498:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1476:23:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4802,"id":4808,"nodeType":"Return","src":"1469:30:25"}]},"documentation":{"id":4796,"nodeType":"StructuredDocumentation","src":"227:954:25","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":4810,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1195:10:25","nodeType":"FunctionDefinition","parameters":{"id":4799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4798,"mutability":"mutable","name":"account","nameLocation":"1214:7:25","nodeType":"VariableDeclaration","scope":4810,"src":"1206:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4797,"name":"address","nodeType":"ElementaryTypeName","src":"1206:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1205:17:25"},"returnParameters":{"id":4802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4801,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4810,"src":"1246:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4800,"name":"bool","nodeType":"ElementaryTypeName","src":"1246:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1245:6:25"},"scope":5076,"src":"1186:320:25","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4843,"nodeType":"Block","src":"2494:241:25","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4821,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2520:4:25","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$5076","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$5076","typeString":"library AddressUpgradeable"}],"id":4820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2512:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4819,"name":"address","nodeType":"ElementaryTypeName","src":"2512:7:25","typeDescriptions":{}}},"id":4822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2512:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2526:7:25","memberName":"balance","nodeType":"MemberAccess","src":"2512:21:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4824,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4815,"src":"2537:6:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2512:31:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":4826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2545:31:25","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":4818,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2504:7:25","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2504:73:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4828,"nodeType":"ExpressionStatement","src":"2504:73:25"},{"assignments":[4830,null],"declarations":[{"constant":false,"id":4830,"mutability":"mutable","name":"success","nameLocation":"2594:7:25","nodeType":"VariableDeclaration","scope":4843,"src":"2589:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4829,"name":"bool","nodeType":"ElementaryTypeName","src":"2589:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":4837,"initialValue":{"arguments":[{"hexValue":"","id":4835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2637:2:25","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":4831,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4813,"src":"2607:9:25","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":4832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2617:4:25","memberName":"call","nodeType":"MemberAccess","src":"2607:14:25","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":4834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":4833,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4815,"src":"2629:6:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2607:29:25","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":4836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2607:33:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2588:52:25"},{"expression":{"arguments":[{"id":4839,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4830,"src":"2658:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":4840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2667:60:25","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":4838,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2650:7:25","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2650:78:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4842,"nodeType":"ExpressionStatement","src":"2650:78:25"}]},"documentation":{"id":4811,"nodeType":"StructuredDocumentation","src":"1512:906:25","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":4844,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2432:9:25","nodeType":"FunctionDefinition","parameters":{"id":4816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4813,"mutability":"mutable","name":"recipient","nameLocation":"2458:9:25","nodeType":"VariableDeclaration","scope":4844,"src":"2442:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":4812,"name":"address","nodeType":"ElementaryTypeName","src":"2442:15:25","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":4815,"mutability":"mutable","name":"amount","nameLocation":"2477:6:25","nodeType":"VariableDeclaration","scope":4844,"src":"2469:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4814,"name":"uint256","nodeType":"ElementaryTypeName","src":"2469:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2441:43:25"},"returnParameters":{"id":4817,"nodeType":"ParameterList","parameters":[],"src":"2494:0:25"},"scope":5076,"src":"2423:312:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4861,"nodeType":"Block","src":"3566:96:25","statements":[{"expression":{"arguments":[{"id":4855,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4847,"src":"3605:6:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4856,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4849,"src":"3613:4:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":4857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3619:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":4858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3622:32:25","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":4854,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[4902,4946],"referencedDeclaration":4946,"src":"3583:21:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":4859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3583:72:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4853,"id":4860,"nodeType":"Return","src":"3576:79:25"}]},"documentation":{"id":4845,"nodeType":"StructuredDocumentation","src":"2741:731:25","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":4862,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3486:12:25","nodeType":"FunctionDefinition","parameters":{"id":4850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4847,"mutability":"mutable","name":"target","nameLocation":"3507:6:25","nodeType":"VariableDeclaration","scope":4862,"src":"3499:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4846,"name":"address","nodeType":"ElementaryTypeName","src":"3499:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4849,"mutability":"mutable","name":"data","nameLocation":"3528:4:25","nodeType":"VariableDeclaration","scope":4862,"src":"3515:17:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4848,"name":"bytes","nodeType":"ElementaryTypeName","src":"3515:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3498:35:25"},"returnParameters":{"id":4853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4862,"src":"3552:12:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4851,"name":"bytes","nodeType":"ElementaryTypeName","src":"3552:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3551:14:25"},"scope":5076,"src":"3477:185:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4881,"nodeType":"Block","src":"4031:76:25","statements":[{"expression":{"arguments":[{"id":4875,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4865,"src":"4070:6:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4876,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4867,"src":"4078:4:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":4877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4084:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":4878,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4869,"src":"4087:12:25","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4874,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[4902,4946],"referencedDeclaration":4946,"src":"4048:21:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":4879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4048:52:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4873,"id":4880,"nodeType":"Return","src":"4041:59:25"}]},"documentation":{"id":4863,"nodeType":"StructuredDocumentation","src":"3668:211:25","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":4882,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3893:12:25","nodeType":"FunctionDefinition","parameters":{"id":4870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4865,"mutability":"mutable","name":"target","nameLocation":"3923:6:25","nodeType":"VariableDeclaration","scope":4882,"src":"3915:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4864,"name":"address","nodeType":"ElementaryTypeName","src":"3915:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4867,"mutability":"mutable","name":"data","nameLocation":"3952:4:25","nodeType":"VariableDeclaration","scope":4882,"src":"3939:17:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4866,"name":"bytes","nodeType":"ElementaryTypeName","src":"3939:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4869,"mutability":"mutable","name":"errorMessage","nameLocation":"3980:12:25","nodeType":"VariableDeclaration","scope":4882,"src":"3966:26:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4868,"name":"string","nodeType":"ElementaryTypeName","src":"3966:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3905:93:25"},"returnParameters":{"id":4873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4872,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4882,"src":"4017:12:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4871,"name":"bytes","nodeType":"ElementaryTypeName","src":"4017:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4016:14:25"},"scope":5076,"src":"3884:223:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4901,"nodeType":"Block","src":"4612:111:25","statements":[{"expression":{"arguments":[{"id":4895,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4885,"src":"4651:6:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4896,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4887,"src":"4659:4:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4897,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4889,"src":"4665:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":4898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4672:43:25","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":4894,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[4902,4946],"referencedDeclaration":4946,"src":"4629:21:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":4899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4629:87:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4893,"id":4900,"nodeType":"Return","src":"4622:94:25"}]},"documentation":{"id":4883,"nodeType":"StructuredDocumentation","src":"4113:351:25","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":4902,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4478:21:25","nodeType":"FunctionDefinition","parameters":{"id":4890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4885,"mutability":"mutable","name":"target","nameLocation":"4517:6:25","nodeType":"VariableDeclaration","scope":4902,"src":"4509:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4884,"name":"address","nodeType":"ElementaryTypeName","src":"4509:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4887,"mutability":"mutable","name":"data","nameLocation":"4546:4:25","nodeType":"VariableDeclaration","scope":4902,"src":"4533:17:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4886,"name":"bytes","nodeType":"ElementaryTypeName","src":"4533:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4889,"mutability":"mutable","name":"value","nameLocation":"4568:5:25","nodeType":"VariableDeclaration","scope":4902,"src":"4560:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4888,"name":"uint256","nodeType":"ElementaryTypeName","src":"4560:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4499:80:25"},"returnParameters":{"id":4893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4892,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4902,"src":"4598:12:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4891,"name":"bytes","nodeType":"ElementaryTypeName","src":"4598:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4597:14:25"},"scope":5076,"src":"4469:254:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4945,"nodeType":"Block","src":"5150:267:25","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4919,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5176:4:25","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$5076","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$5076","typeString":"library AddressUpgradeable"}],"id":4918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5168:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4917,"name":"address","nodeType":"ElementaryTypeName","src":"5168:7:25","typeDescriptions":{}}},"id":4920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5168:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5182:7:25","memberName":"balance","nodeType":"MemberAccess","src":"5168:21:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4922,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"5193:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5168:30:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":4924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5200:40:25","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":4916,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5160:7:25","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5160:81:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4926,"nodeType":"ExpressionStatement","src":"5160:81:25"},{"assignments":[4928,4930],"declarations":[{"constant":false,"id":4928,"mutability":"mutable","name":"success","nameLocation":"5257:7:25","nodeType":"VariableDeclaration","scope":4945,"src":"5252:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4927,"name":"bool","nodeType":"ElementaryTypeName","src":"5252:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4930,"mutability":"mutable","name":"returndata","nameLocation":"5279:10:25","nodeType":"VariableDeclaration","scope":4945,"src":"5266:23:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4929,"name":"bytes","nodeType":"ElementaryTypeName","src":"5266:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4937,"initialValue":{"arguments":[{"id":4935,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4907,"src":"5319:4:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4931,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4905,"src":"5293:6:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5300:4:25","memberName":"call","nodeType":"MemberAccess","src":"5293:11:25","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":4934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":4933,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"5312:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5293:25:25","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":4936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5293:31:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5251:73:25"},{"expression":{"arguments":[{"id":4939,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4905,"src":"5368:6:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4940,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4928,"src":"5376:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":4941,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4930,"src":"5385:10:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4942,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4911,"src":"5397:12:25","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4938,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5031,"src":"5341:26:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":4943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5341:69:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4915,"id":4944,"nodeType":"Return","src":"5334:76:25"}]},"documentation":{"id":4903,"nodeType":"StructuredDocumentation","src":"4729:237:25","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":4946,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4980:21:25","nodeType":"FunctionDefinition","parameters":{"id":4912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4905,"mutability":"mutable","name":"target","nameLocation":"5019:6:25","nodeType":"VariableDeclaration","scope":4946,"src":"5011:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4904,"name":"address","nodeType":"ElementaryTypeName","src":"5011:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4907,"mutability":"mutable","name":"data","nameLocation":"5048:4:25","nodeType":"VariableDeclaration","scope":4946,"src":"5035:17:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4906,"name":"bytes","nodeType":"ElementaryTypeName","src":"5035:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4909,"mutability":"mutable","name":"value","nameLocation":"5070:5:25","nodeType":"VariableDeclaration","scope":4946,"src":"5062:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4908,"name":"uint256","nodeType":"ElementaryTypeName","src":"5062:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4911,"mutability":"mutable","name":"errorMessage","nameLocation":"5099:12:25","nodeType":"VariableDeclaration","scope":4946,"src":"5085:26:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4910,"name":"string","nodeType":"ElementaryTypeName","src":"5085:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5001:116:25"},"returnParameters":{"id":4915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4914,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4946,"src":"5136:12:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4913,"name":"bytes","nodeType":"ElementaryTypeName","src":"5136:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5135:14:25"},"scope":5076,"src":"4971:446:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4962,"nodeType":"Block","src":"5694:97:25","statements":[{"expression":{"arguments":[{"id":4957,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4949,"src":"5730:6:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4958,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4951,"src":"5738:4:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":4959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5744:39:25","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":4956,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[4963,4992],"referencedDeclaration":4992,"src":"5711:18:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":4960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5711:73:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4955,"id":4961,"nodeType":"Return","src":"5704:80:25"}]},"documentation":{"id":4947,"nodeType":"StructuredDocumentation","src":"5423:166:25","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":4963,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5603:18:25","nodeType":"FunctionDefinition","parameters":{"id":4952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4949,"mutability":"mutable","name":"target","nameLocation":"5630:6:25","nodeType":"VariableDeclaration","scope":4963,"src":"5622:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4948,"name":"address","nodeType":"ElementaryTypeName","src":"5622:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4951,"mutability":"mutable","name":"data","nameLocation":"5651:4:25","nodeType":"VariableDeclaration","scope":4963,"src":"5638:17:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4950,"name":"bytes","nodeType":"ElementaryTypeName","src":"5638:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5621:35:25"},"returnParameters":{"id":4955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4963,"src":"5680:12:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4953,"name":"bytes","nodeType":"ElementaryTypeName","src":"5680:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5679:14:25"},"scope":5076,"src":"5594:197:25","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4991,"nodeType":"Block","src":"6133:168:25","statements":[{"assignments":[4976,4978],"declarations":[{"constant":false,"id":4976,"mutability":"mutable","name":"success","nameLocation":"6149:7:25","nodeType":"VariableDeclaration","scope":4991,"src":"6144:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4975,"name":"bool","nodeType":"ElementaryTypeName","src":"6144:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4978,"mutability":"mutable","name":"returndata","nameLocation":"6171:10:25","nodeType":"VariableDeclaration","scope":4991,"src":"6158:23:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4977,"name":"bytes","nodeType":"ElementaryTypeName","src":"6158:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4983,"initialValue":{"arguments":[{"id":4981,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4968,"src":"6203:4:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4979,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4966,"src":"6185:6:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6192:10:25","memberName":"staticcall","nodeType":"MemberAccess","src":"6185:17:25","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":4982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6185:23:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6143:65:25"},{"expression":{"arguments":[{"id":4985,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4966,"src":"6252:6:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4986,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"6260:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":4987,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4978,"src":"6269:10:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4988,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4970,"src":"6281:12:25","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4984,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5031,"src":"6225:26:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":4989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6225:69:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4974,"id":4990,"nodeType":"Return","src":"6218:76:25"}]},"documentation":{"id":4964,"nodeType":"StructuredDocumentation","src":"5797:173:25","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":4992,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5984:18:25","nodeType":"FunctionDefinition","parameters":{"id":4971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4966,"mutability":"mutable","name":"target","nameLocation":"6020:6:25","nodeType":"VariableDeclaration","scope":4992,"src":"6012:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4965,"name":"address","nodeType":"ElementaryTypeName","src":"6012:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4968,"mutability":"mutable","name":"data","nameLocation":"6049:4:25","nodeType":"VariableDeclaration","scope":4992,"src":"6036:17:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4967,"name":"bytes","nodeType":"ElementaryTypeName","src":"6036:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4970,"mutability":"mutable","name":"errorMessage","nameLocation":"6077:12:25","nodeType":"VariableDeclaration","scope":4992,"src":"6063:26:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4969,"name":"string","nodeType":"ElementaryTypeName","src":"6063:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6002:93:25"},"returnParameters":{"id":4974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4973,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4992,"src":"6119:12:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4972,"name":"bytes","nodeType":"ElementaryTypeName","src":"6119:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6118:14:25"},"scope":5076,"src":"5975:326:25","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5030,"nodeType":"Block","src":"6783:434:25","statements":[{"condition":{"id":5006,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4997,"src":"6797:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5028,"nodeType":"Block","src":"7153:58:25","statements":[{"expression":{"arguments":[{"id":5024,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4999,"src":"7175:10:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5025,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"7187:12:25","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5023,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5075,"src":"7167:7:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":5026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7167:33:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5027,"nodeType":"ExpressionStatement","src":"7167:33:25"}]},"id":5029,"nodeType":"IfStatement","src":"6793:418:25","trueBody":{"id":5022,"nodeType":"Block","src":"6806:341:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5007,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4999,"src":"6824:10:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6835:6:25","memberName":"length","nodeType":"MemberAccess","src":"6824:17:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6845:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6824:22:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5019,"nodeType":"IfStatement","src":"6820:286:25","trueBody":{"id":5018,"nodeType":"Block","src":"6848:258:25","statements":[{"expression":{"arguments":[{"arguments":[{"id":5013,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4995,"src":"7050:6:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5012,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4810,"src":"7039:10:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7039:18:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":5015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7059:31:25","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":5011,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7031:7:25","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7031:60:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5017,"nodeType":"ExpressionStatement","src":"7031:60:25"}]}},{"expression":{"id":5020,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4999,"src":"7126:10:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5005,"id":5021,"nodeType":"Return","src":"7119:17:25"}]}}]},"documentation":{"id":4993,"nodeType":"StructuredDocumentation","src":"6307:277:25","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":5031,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"6598:26:25","nodeType":"FunctionDefinition","parameters":{"id":5002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4995,"mutability":"mutable","name":"target","nameLocation":"6642:6:25","nodeType":"VariableDeclaration","scope":5031,"src":"6634:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4994,"name":"address","nodeType":"ElementaryTypeName","src":"6634:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4997,"mutability":"mutable","name":"success","nameLocation":"6663:7:25","nodeType":"VariableDeclaration","scope":5031,"src":"6658:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4996,"name":"bool","nodeType":"ElementaryTypeName","src":"6658:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4999,"mutability":"mutable","name":"returndata","nameLocation":"6693:10:25","nodeType":"VariableDeclaration","scope":5031,"src":"6680:23:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4998,"name":"bytes","nodeType":"ElementaryTypeName","src":"6680:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5001,"mutability":"mutable","name":"errorMessage","nameLocation":"6727:12:25","nodeType":"VariableDeclaration","scope":5031,"src":"6713:26:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5000,"name":"string","nodeType":"ElementaryTypeName","src":"6713:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6624:121:25"},"returnParameters":{"id":5005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5004,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5031,"src":"6769:12:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5003,"name":"bytes","nodeType":"ElementaryTypeName","src":"6769:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6768:14:25"},"scope":5076,"src":"6589:628:25","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5054,"nodeType":"Block","src":"7598:135:25","statements":[{"condition":{"id":5043,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"7612:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5052,"nodeType":"Block","src":"7669:58:25","statements":[{"expression":{"arguments":[{"id":5048,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5036,"src":"7691:10:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5049,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5038,"src":"7703:12:25","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5047,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5075,"src":"7683:7:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":5050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7683:33:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5051,"nodeType":"ExpressionStatement","src":"7683:33:25"}]},"id":5053,"nodeType":"IfStatement","src":"7608:119:25","trueBody":{"id":5046,"nodeType":"Block","src":"7621:42:25","statements":[{"expression":{"id":5044,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5036,"src":"7642:10:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5042,"id":5045,"nodeType":"Return","src":"7635:17:25"}]}}]},"documentation":{"id":5032,"nodeType":"StructuredDocumentation","src":"7223:210:25","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":5055,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"7447:16:25","nodeType":"FunctionDefinition","parameters":{"id":5039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5034,"mutability":"mutable","name":"success","nameLocation":"7478:7:25","nodeType":"VariableDeclaration","scope":5055,"src":"7473:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5033,"name":"bool","nodeType":"ElementaryTypeName","src":"7473:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5036,"mutability":"mutable","name":"returndata","nameLocation":"7508:10:25","nodeType":"VariableDeclaration","scope":5055,"src":"7495:23:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5035,"name":"bytes","nodeType":"ElementaryTypeName","src":"7495:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5038,"mutability":"mutable","name":"errorMessage","nameLocation":"7542:12:25","nodeType":"VariableDeclaration","scope":5055,"src":"7528:26:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5037,"name":"string","nodeType":"ElementaryTypeName","src":"7528:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7463:97:25"},"returnParameters":{"id":5042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5041,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5055,"src":"7584:12:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5040,"name":"bytes","nodeType":"ElementaryTypeName","src":"7584:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7583:14:25"},"scope":5076,"src":"7438:295:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5074,"nodeType":"Block","src":"7822:457:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5062,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"7898:10:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7909:6:25","memberName":"length","nodeType":"MemberAccess","src":"7898:17:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7918:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7898:21:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5072,"nodeType":"Block","src":"8228:45:25","statements":[{"expression":{"arguments":[{"id":5069,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5059,"src":"8249:12:25","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5068,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"8242:6:25","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8242:20:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5071,"nodeType":"ExpressionStatement","src":"8242:20:25"}]},"id":5073,"nodeType":"IfStatement","src":"7894:379:25","trueBody":{"id":5067,"nodeType":"Block","src":"7921:301:25","statements":[{"AST":{"nodeType":"YulBlock","src":"8079:133:25","statements":[{"nodeType":"YulVariableDeclaration","src":"8097:40:25","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"8126:10:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8120:5:25"},"nodeType":"YulFunctionCall","src":"8120:17:25"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"8101:15:25","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8165:2:25","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"8169:10:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8161:3:25"},"nodeType":"YulFunctionCall","src":"8161:19:25"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"8182:15:25"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8154:6:25"},"nodeType":"YulFunctionCall","src":"8154:44:25"},"nodeType":"YulExpressionStatement","src":"8154:44:25"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":5057,"isOffset":false,"isSlot":false,"src":"8126:10:25","valueSize":1},{"declaration":5057,"isOffset":false,"isSlot":false,"src":"8169:10:25","valueSize":1}],"id":5066,"nodeType":"InlineAssembly","src":"8070:142:25"}]}}]},"id":5075,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"7748:7:25","nodeType":"FunctionDefinition","parameters":{"id":5060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5057,"mutability":"mutable","name":"returndata","nameLocation":"7769:10:25","nodeType":"VariableDeclaration","scope":5075,"src":"7756:23:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5056,"name":"bytes","nodeType":"ElementaryTypeName","src":"7756:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5059,"mutability":"mutable","name":"errorMessage","nameLocation":"7795:12:25","nodeType":"VariableDeclaration","scope":5075,"src":"7781:26:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5058,"name":"string","nodeType":"ElementaryTypeName","src":"7781:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7755:53:25"},"returnParameters":{"id":5061,"nodeType":"ParameterList","parameters":[],"src":"7822:0:25"},"scope":5076,"src":"7739:540:25","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":5077,"src":"194:8087:25","usedErrors":[]}],"src":"101:8181:25"},"id":25},"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol","exportedSymbols":{"CheckpointsUpgradeable":[6447],"MathUpgradeable":[8170],"SafeCastUpgradeable":[9711]},"id":6448,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5078,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:26"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","file":"./math/MathUpgradeable.sol","id":5079,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6448,"sourceUnit":8171,"src":"218:36:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol","file":"./math/SafeCastUpgradeable.sol","id":5080,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6448,"sourceUnit":9712,"src":"255:40:26","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"CheckpointsUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":5081,"nodeType":"StructuredDocumentation","src":"297:432:26","text":" @dev This library defines the `History` struct, for checkpointing values as they change at different points in\n time, and later looking up past values by block number. See {Votes} as an example.\n To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\n checkpoint for the current transaction block using the {push} function.\n _Available since v4.5._"},"fullyImplemented":true,"id":6447,"linearizedBaseContracts":[6447],"name":"CheckpointsUpgradeable","nameLocation":"738:22:26","nodeType":"ContractDefinition","nodes":[{"canonicalName":"CheckpointsUpgradeable.History","id":5086,"members":[{"constant":false,"id":5085,"mutability":"mutable","name":"_checkpoints","nameLocation":"805:12:26","nodeType":"VariableDeclaration","scope":5086,"src":"792:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":5083,"nodeType":"UserDefinedTypeName","pathNode":{"id":5082,"name":"Checkpoint","nameLocations":["792:10:26"],"nodeType":"IdentifierPath","referencedDeclaration":5091,"src":"792:10:26"},"referencedDeclaration":5091,"src":"792:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":5084,"nodeType":"ArrayTypeName","src":"792:12:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"}],"name":"History","nameLocation":"774:7:26","nodeType":"StructDefinition","scope":6447,"src":"767:57:26","visibility":"public"},{"canonicalName":"CheckpointsUpgradeable.Checkpoint","id":5091,"members":[{"constant":false,"id":5088,"mutability":"mutable","name":"_blockNumber","nameLocation":"865:12:26","nodeType":"VariableDeclaration","scope":5091,"src":"858:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5087,"name":"uint32","nodeType":"ElementaryTypeName","src":"858:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5090,"mutability":"mutable","name":"_value","nameLocation":"895:6:26","nodeType":"VariableDeclaration","scope":5091,"src":"887:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5089,"name":"uint224","nodeType":"ElementaryTypeName","src":"887:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"name":"Checkpoint","nameLocation":"837:10:26","nodeType":"StructDefinition","scope":6447,"src":"830:78:26","visibility":"public"},{"body":{"id":5147,"nodeType":"Block","src":"1350:355:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5103,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5097,"src":"1368:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5104,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1382:5:26","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1388:6:26","memberName":"number","nodeType":"MemberAccess","src":"1382:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1368:26:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564","id":5107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1396:34:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be","typeString":"literal_string \"Checkpoints: block not yet mined\""},"value":"Checkpoints: block not yet mined"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be","typeString":"literal_string \"Checkpoints: block not yet mined\""}],"id":5102,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1360:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1360:71:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5109,"nodeType":"ExpressionStatement","src":"1360:71:26"},{"assignments":[5111],"declarations":[{"constant":false,"id":5111,"mutability":"mutable","name":"key","nameLocation":"1448:3:26","nodeType":"VariableDeclaration","scope":5147,"src":"1441:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5110,"name":"uint32","nodeType":"ElementaryTypeName","src":"1441:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5116,"initialValue":{"arguments":[{"id":5114,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5097,"src":"1483:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5112,"name":"SafeCastUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9711,"src":"1454:19:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCastUpgradeable_$9711_$","typeString":"type(library SafeCastUpgradeable)"}},"id":5113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1474:8:26","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":8873,"src":"1454:28:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":5115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1454:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"1441:54:26"},{"assignments":[5118],"declarations":[{"constant":false,"id":5118,"mutability":"mutable","name":"len","nameLocation":"1514:3:26","nodeType":"VariableDeclaration","scope":5147,"src":"1506:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5117,"name":"uint256","nodeType":"ElementaryTypeName","src":"1506:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5122,"initialValue":{"expression":{"expression":{"id":5119,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5095,"src":"1520:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1525:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"1520:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":5121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1538:6:26","memberName":"length","nodeType":"MemberAccess","src":"1520:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1506:38:26"},{"assignments":[5124],"declarations":[{"constant":false,"id":5124,"mutability":"mutable","name":"pos","nameLocation":"1562:3:26","nodeType":"VariableDeclaration","scope":5147,"src":"1554:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5123,"name":"uint256","nodeType":"ElementaryTypeName","src":"1554:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5132,"initialValue":{"arguments":[{"expression":{"id":5126,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5095,"src":"1587:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1592:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"1587:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"id":5128,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5111,"src":"1606:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":5129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1611:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5130,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5118,"src":"1614:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5125,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5545,5962,6379],"referencedDeclaration":5545,"src":"1568:18:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":5131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1568:50:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1554:64:26"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5133,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5124,"src":"1635:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1642:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1635:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5138,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5095,"src":"1664:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5139,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1669:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"1664:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5140,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5124,"src":"1683:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1689:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1683:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5137,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":5612,"src":"1650:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$5091_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":5143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1650:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":5144,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1692:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5090,"src":"1650:48:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":5145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1635:63:26","trueExpression":{"hexValue":"30","id":5136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1646:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":5101,"id":5146,"nodeType":"Return","src":"1628:70:26"}]},"documentation":{"id":5092,"nodeType":"StructuredDocumentation","src":"914:336:26","text":" @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\n before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\n block, the requested block number must be in the past, excluding the current block."},"id":5148,"implemented":true,"kind":"function","modifiers":[],"name":"getAtBlock","nameLocation":"1264:10:26","nodeType":"FunctionDefinition","parameters":{"id":5098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5095,"mutability":"mutable","name":"self","nameLocation":"1291:4:26","nodeType":"VariableDeclaration","scope":5148,"src":"1275:20:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":5094,"nodeType":"UserDefinedTypeName","pathNode":{"id":5093,"name":"History","nameLocations":["1275:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":5086,"src":"1275:7:26"},"referencedDeclaration":5086,"src":"1275:7:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"},{"constant":false,"id":5097,"mutability":"mutable","name":"blockNumber","nameLocation":"1305:11:26","nodeType":"VariableDeclaration","scope":5148,"src":"1297:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5096,"name":"uint256","nodeType":"ElementaryTypeName","src":"1297:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1274:43:26"},"returnParameters":{"id":5101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5148,"src":"1341:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5099,"name":"uint256","nodeType":"ElementaryTypeName","src":"1341:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1340:9:26"},"scope":6447,"src":"1255:450:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5247,"nodeType":"Block","src":"2211:677:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5160,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"2229:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5161,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2243:5:26","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2249:6:26","memberName":"number","nodeType":"MemberAccess","src":"2243:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2229:26:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564","id":5164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2257:34:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be","typeString":"literal_string \"Checkpoints: block not yet mined\""},"value":"Checkpoints: block not yet mined"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be","typeString":"literal_string \"Checkpoints: block not yet mined\""}],"id":5159,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2221:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2221:71:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5166,"nodeType":"ExpressionStatement","src":"2221:71:26"},{"assignments":[5168],"declarations":[{"constant":false,"id":5168,"mutability":"mutable","name":"key","nameLocation":"2309:3:26","nodeType":"VariableDeclaration","scope":5247,"src":"2302:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5167,"name":"uint32","nodeType":"ElementaryTypeName","src":"2302:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5173,"initialValue":{"arguments":[{"id":5171,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5154,"src":"2344:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5169,"name":"SafeCastUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9711,"src":"2315:19:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCastUpgradeable_$9711_$","typeString":"type(library SafeCastUpgradeable)"}},"id":5170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2335:8:26","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":8873,"src":"2315:28:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":5172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2315:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"2302:54:26"},{"assignments":[5175],"declarations":[{"constant":false,"id":5175,"mutability":"mutable","name":"len","nameLocation":"2375:3:26","nodeType":"VariableDeclaration","scope":5247,"src":"2367:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5174,"name":"uint256","nodeType":"ElementaryTypeName","src":"2367:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5179,"initialValue":{"expression":{"expression":{"id":5176,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5152,"src":"2381:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5177,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2386:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"2381:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":5178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2399:6:26","memberName":"length","nodeType":"MemberAccess","src":"2381:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2367:38:26"},{"assignments":[5181],"declarations":[{"constant":false,"id":5181,"mutability":"mutable","name":"low","nameLocation":"2424:3:26","nodeType":"VariableDeclaration","scope":5247,"src":"2416:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5180,"name":"uint256","nodeType":"ElementaryTypeName","src":"2416:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5183,"initialValue":{"hexValue":"30","id":5182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2430:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2416:15:26"},{"assignments":[5185],"declarations":[{"constant":false,"id":5185,"mutability":"mutable","name":"high","nameLocation":"2449:4:26","nodeType":"VariableDeclaration","scope":5247,"src":"2441:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5184,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5187,"initialValue":{"id":5186,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"2456:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2441:18:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5188,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"2474:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35","id":5189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2480:1:26","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"2474:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5222,"nodeType":"IfStatement","src":"2470:253:26","trueBody":{"id":5221,"nodeType":"Block","src":"2483:240:26","statements":[{"assignments":[5192],"declarations":[{"constant":false,"id":5192,"mutability":"mutable","name":"mid","nameLocation":"2505:3:26","nodeType":"VariableDeclaration","scope":5221,"src":"2497:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5191,"name":"uint256","nodeType":"ElementaryTypeName","src":"2497:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5199,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5193,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"2511:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":5196,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"2538:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5194,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"2517:15:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$8170_$","typeString":"type(library MathUpgradeable)"}},"id":5195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2533:4:26","memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":7674,"src":"2517:20:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":5197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2517:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2511:31:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2497:45:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5200,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5168,"src":"2560:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"expression":{"id":5202,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5152,"src":"2580:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2585:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"2580:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"id":5204,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5192,"src":"2599:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5201,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":5612,"src":"2566:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$5091_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":5205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2566:37:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":5206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2604:12:26","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":5088,"src":"2566:50:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2560:56:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5219,"nodeType":"Block","src":"2667:46:26","statements":[{"expression":{"id":5217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5213,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5181,"src":"2685:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5214,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5192,"src":"2691:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2697:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2691:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2685:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5218,"nodeType":"ExpressionStatement","src":"2685:13:26"}]},"id":5220,"nodeType":"IfStatement","src":"2556:157:26","trueBody":{"id":5212,"nodeType":"Block","src":"2618:43:26","statements":[{"expression":{"id":5210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5208,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5185,"src":"2636:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5209,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5192,"src":"2643:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2636:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5211,"nodeType":"ExpressionStatement","src":"2636:10:26"}]}}]}},{"assignments":[5224],"declarations":[{"constant":false,"id":5224,"mutability":"mutable","name":"pos","nameLocation":"2741:3:26","nodeType":"VariableDeclaration","scope":5247,"src":"2733:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5223,"name":"uint256","nodeType":"ElementaryTypeName","src":"2733:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5232,"initialValue":{"arguments":[{"expression":{"id":5226,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5152,"src":"2766:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2771:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"2766:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"id":5228,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5168,"src":"2785:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5229,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5181,"src":"2790:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5230,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5185,"src":"2795:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5225,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5545,5962,6379],"referencedDeclaration":5545,"src":"2747:18:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":5231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:53:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2733:67:26"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5233,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5224,"src":"2818:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2825:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2818:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5238,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5152,"src":"2847:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2852:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"2847:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5240,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5224,"src":"2866:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2872:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2866:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5237,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":5612,"src":"2833:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$5091_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":5243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2833:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":5244,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2875:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5090,"src":"2833:48:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":5245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2818:63:26","trueExpression":{"hexValue":"30","id":5236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2829:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":5158,"id":5246,"nodeType":"Return","src":"2811:70:26"}]},"documentation":{"id":5149,"nodeType":"StructuredDocumentation","src":"1711:386:26","text":" @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\n before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\n checkpoint is probably \"recent\", defined as being among the last sqrt(N) checkpoints where N is the number of\n checkpoints."},"id":5248,"implemented":true,"kind":"function","modifiers":[],"name":"getAtProbablyRecentBlock","nameLocation":"2111:24:26","nodeType":"FunctionDefinition","parameters":{"id":5155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5152,"mutability":"mutable","name":"self","nameLocation":"2152:4:26","nodeType":"VariableDeclaration","scope":5248,"src":"2136:20:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":5151,"nodeType":"UserDefinedTypeName","pathNode":{"id":5150,"name":"History","nameLocations":["2136:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":5086,"src":"2136:7:26"},"referencedDeclaration":5086,"src":"2136:7:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"},{"constant":false,"id":5154,"mutability":"mutable","name":"blockNumber","nameLocation":"2166:11:26","nodeType":"VariableDeclaration","scope":5248,"src":"2158:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5153,"name":"uint256","nodeType":"ElementaryTypeName","src":"2158:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2135:43:26"},"returnParameters":{"id":5158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5248,"src":"2202:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5156,"name":"uint256","nodeType":"ElementaryTypeName","src":"2202:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2201:9:26"},"scope":6447,"src":"2102:786:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5275,"nodeType":"Block","src":"3153:132:26","statements":[{"expression":{"arguments":[{"expression":{"id":5262,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5252,"src":"3178:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5263,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3183:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"3178:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"arguments":[{"expression":{"id":5266,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3226:5:26","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3232:6:26","memberName":"number","nodeType":"MemberAccess","src":"3226:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5264,"name":"SafeCastUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9711,"src":"3197:19:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCastUpgradeable_$9711_$","typeString":"type(library SafeCastUpgradeable)"}},"id":5265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3217:8:26","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":8873,"src":"3197:28:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":5268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3197:42:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"id":5271,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5254,"src":"3271:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5269,"name":"SafeCastUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9711,"src":"3241:19:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCastUpgradeable_$9711_$","typeString":"type(library SafeCastUpgradeable)"}},"id":5270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3261:9:26","memberName":"toUint224","nodeType":"MemberAccess","referencedDeclaration":8273,"src":"3241:29:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint224_$","typeString":"function (uint256) pure returns (uint224)"}},"id":5272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3241:36:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":5261,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[5493,5910,6327],"referencedDeclaration":5493,"src":"3170:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint224_$returns$_t_uint224_$_t_uint224_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint224) returns (uint224,uint224)"}},"id":5273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3170:108:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":5260,"id":5274,"nodeType":"Return","src":"3163:115:26"}]},"documentation":{"id":5249,"nodeType":"StructuredDocumentation","src":"2894:167:26","text":" @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\n Returns previous value and new value."},"id":5276,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"3075:4:26","nodeType":"FunctionDefinition","parameters":{"id":5255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5252,"mutability":"mutable","name":"self","nameLocation":"3096:4:26","nodeType":"VariableDeclaration","scope":5276,"src":"3080:20:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":5251,"nodeType":"UserDefinedTypeName","pathNode":{"id":5250,"name":"History","nameLocations":["3080:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":5086,"src":"3080:7:26"},"referencedDeclaration":5086,"src":"3080:7:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"},{"constant":false,"id":5254,"mutability":"mutable","name":"value","nameLocation":"3110:5:26","nodeType":"VariableDeclaration","scope":5276,"src":"3102:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5253,"name":"uint256","nodeType":"ElementaryTypeName","src":"3102:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3079:37:26"},"returnParameters":{"id":5260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5257,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5276,"src":"3135:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5256,"name":"uint256","nodeType":"ElementaryTypeName","src":"3135:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5276,"src":"3144:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5258,"name":"uint256","nodeType":"ElementaryTypeName","src":"3144:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3134:18:26"},"scope":6447,"src":"3066:219:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5309,"nodeType":"Block","src":"3688:59:26","statements":[{"expression":{"arguments":[{"id":5300,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5280,"src":"3710:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},{"arguments":[{"arguments":[{"id":5303,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5280,"src":"3726:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}],"id":5302,"name":"latest","nodeType":"Identifier","overloadedDeclarations":[5340,5757,6174],"referencedDeclaration":5340,"src":"3719:6:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$5086_storage_ptr_$returns$_t_uint224_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer) view returns (uint224)"}},"id":5304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3719:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":5305,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5292,"src":"3733:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5301,"name":"op","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5290,"src":"3716:2:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"}},"id":5306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3716:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5299,"name":"push","nodeType":"Identifier","overloadedDeclarations":[5276,5310,5645,6062],"referencedDeclaration":5276,"src":"3705:4:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$5086_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) returns (uint256,uint256)"}},"id":5307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3705:35:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":5298,"id":5308,"nodeType":"Return","src":"3698:42:26"}]},"documentation":{"id":5277,"nodeType":"StructuredDocumentation","src":"3291:221:26","text":" @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\n be set to `op(latest, delta)`.\n Returns previous value and new value."},"id":5310,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"3526:4:26","nodeType":"FunctionDefinition","parameters":{"id":5293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5280,"mutability":"mutable","name":"self","nameLocation":"3556:4:26","nodeType":"VariableDeclaration","scope":5310,"src":"3540:20:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":5279,"nodeType":"UserDefinedTypeName","pathNode":{"id":5278,"name":"History","nameLocations":["3540:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":5086,"src":"3540:7:26"},"referencedDeclaration":5086,"src":"3540:7:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"},{"constant":false,"id":5290,"mutability":"mutable","name":"op","nameLocation":"3620:2:26","nodeType":"VariableDeclaration","scope":5310,"src":"3570:52:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"},"typeName":{"id":5289,"nodeType":"FunctionTypeName","parameterTypes":{"id":5285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5282,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5289,"src":"3579:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5281,"name":"uint256","nodeType":"ElementaryTypeName","src":"3579:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5284,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5289,"src":"3588:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5283,"name":"uint256","nodeType":"ElementaryTypeName","src":"3588:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3578:18:26"},"returnParameterTypes":{"id":5288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5289,"src":"3611:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5286,"name":"uint256","nodeType":"ElementaryTypeName","src":"3611:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3610:9:26"},"src":"3570:52:26","stateMutability":"view","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"},"visibility":"internal"},"visibility":"internal"},{"constant":false,"id":5292,"mutability":"mutable","name":"delta","nameLocation":"3640:5:26","nodeType":"VariableDeclaration","scope":5310,"src":"3632:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5291,"name":"uint256","nodeType":"ElementaryTypeName","src":"3632:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3530:121:26"},"returnParameters":{"id":5298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5295,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5310,"src":"3670:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5294,"name":"uint256","nodeType":"ElementaryTypeName","src":"3670:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5297,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5310,"src":"3679:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5296,"name":"uint256","nodeType":"ElementaryTypeName","src":"3679:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3669:18:26"},"scope":6447,"src":"3517:230:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5339,"nodeType":"Block","src":"3937:135:26","statements":[{"assignments":[5320],"declarations":[{"constant":false,"id":5320,"mutability":"mutable","name":"pos","nameLocation":"3955:3:26","nodeType":"VariableDeclaration","scope":5339,"src":"3947:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5319,"name":"uint256","nodeType":"ElementaryTypeName","src":"3947:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5324,"initialValue":{"expression":{"expression":{"id":5321,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5314,"src":"3961:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5322,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3966:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"3961:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":5323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3979:6:26","memberName":"length","nodeType":"MemberAccess","src":"3961:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3947:38:26"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5325,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5320,"src":"4002:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4009:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4002:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5330,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5314,"src":"4031:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4036:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"4031:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5332,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5320,"src":"4050:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4056:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4050:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5329,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":5612,"src":"4017:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$5091_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":5335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4017:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":5336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4059:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5090,"src":"4017:48:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":5337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4002:63:26","trueExpression":{"hexValue":"30","id":5328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4013:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":5318,"id":5338,"nodeType":"Return","src":"3995:70:26"}]},"documentation":{"id":5311,"nodeType":"StructuredDocumentation","src":"3753:109:26","text":" @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints."},"id":5340,"implemented":true,"kind":"function","modifiers":[],"name":"latest","nameLocation":"3876:6:26","nodeType":"FunctionDefinition","parameters":{"id":5315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5314,"mutability":"mutable","name":"self","nameLocation":"3899:4:26","nodeType":"VariableDeclaration","scope":5340,"src":"3883:20:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":5313,"nodeType":"UserDefinedTypeName","pathNode":{"id":5312,"name":"History","nameLocations":["3883:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":5086,"src":"3883:7:26"},"referencedDeclaration":5086,"src":"3883:7:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"}],"src":"3882:22:26"},"returnParameters":{"id":5318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5317,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5340,"src":"3928:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5316,"name":"uint224","nodeType":"ElementaryTypeName","src":"3928:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3927:9:26"},"scope":6447,"src":"3867:205:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5388,"nodeType":"Block","src":"4446:279:26","statements":[{"assignments":[5354],"declarations":[{"constant":false,"id":5354,"mutability":"mutable","name":"pos","nameLocation":"4464:3:26","nodeType":"VariableDeclaration","scope":5388,"src":"4456:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5353,"name":"uint256","nodeType":"ElementaryTypeName","src":"4456:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5358,"initialValue":{"expression":{"expression":{"id":5355,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5344,"src":"4470:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4475:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"4470:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":5357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4488:6:26","memberName":"length","nodeType":"MemberAccess","src":"4470:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4456:38:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5359,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5354,"src":"4508:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4515:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4508:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5386,"nodeType":"Block","src":"4569:150:26","statements":[{"assignments":[5370],"declarations":[{"constant":false,"id":5370,"mutability":"mutable","name":"ckpt","nameLocation":"4601:4:26","nodeType":"VariableDeclaration","scope":5386,"src":"4583:22:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"},"typeName":{"id":5369,"nodeType":"UserDefinedTypeName","pathNode":{"id":5368,"name":"Checkpoint","nameLocations":["4583:10:26"],"nodeType":"IdentifierPath","referencedDeclaration":5091,"src":"4583:10:26"},"referencedDeclaration":5091,"src":"4583:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"visibility":"internal"}],"id":5378,"initialValue":{"arguments":[{"expression":{"id":5372,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5344,"src":"4622:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5373,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4627:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"4622:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5374,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5354,"src":"4641:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4647:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4641:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5371,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":5612,"src":"4608:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$5091_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":5377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4608:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4583:66:26"},{"expression":{"components":[{"hexValue":"74727565","id":5379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4671:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":5380,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5370,"src":"4677:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":5381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4682:12:26","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":5088,"src":"4677:17:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":5382,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5370,"src":"4696:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":5383,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4701:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5090,"src":"4696:11:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":5384,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4670:38:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$_t_uint224_$","typeString":"tuple(bool,uint32,uint224)"}},"functionReturnParameters":5352,"id":5385,"nodeType":"Return","src":"4663:45:26"}]},"id":5387,"nodeType":"IfStatement","src":"4504:215:26","trueBody":{"id":5367,"nodeType":"Block","src":"4518:45:26","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":5362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4540:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4547:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":5364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4550:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5365,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4539:13:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":5352,"id":5366,"nodeType":"Return","src":"4532:20:26"}]}}]},"documentation":{"id":5341,"nodeType":"StructuredDocumentation","src":"4078:168:26","text":" @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n in the most recent checkpoint."},"id":5389,"implemented":true,"kind":"function","modifiers":[],"name":"latestCheckpoint","nameLocation":"4260:16:26","nodeType":"FunctionDefinition","parameters":{"id":5345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5344,"mutability":"mutable","name":"self","nameLocation":"4293:4:26","nodeType":"VariableDeclaration","scope":5389,"src":"4277:20:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":5343,"nodeType":"UserDefinedTypeName","pathNode":{"id":5342,"name":"History","nameLocations":["4277:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":5086,"src":"4277:7:26"},"referencedDeclaration":5086,"src":"4277:7:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"}],"src":"4276:22:26"},"returnParameters":{"id":5352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5347,"mutability":"mutable","name":"exists","nameLocation":"4364:6:26","nodeType":"VariableDeclaration","scope":5389,"src":"4359:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5346,"name":"bool","nodeType":"ElementaryTypeName","src":"4359:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5349,"mutability":"mutable","name":"_blockNumber","nameLocation":"4391:12:26","nodeType":"VariableDeclaration","scope":5389,"src":"4384:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5348,"name":"uint32","nodeType":"ElementaryTypeName","src":"4384:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5351,"mutability":"mutable","name":"_value","nameLocation":"4425:6:26","nodeType":"VariableDeclaration","scope":5389,"src":"4417:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5350,"name":"uint224","nodeType":"ElementaryTypeName","src":"4417:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"4345:96:26"},"scope":6447,"src":"4251:474:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5402,"nodeType":"Block","src":"4863:48:26","statements":[{"expression":{"expression":{"expression":{"id":5398,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5393,"src":"4880:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":5399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4885:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5085,"src":"4880:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":5400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4898:6:26","memberName":"length","nodeType":"MemberAccess","src":"4880:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5397,"id":5401,"nodeType":"Return","src":"4873:31:26"}]},"documentation":{"id":5390,"nodeType":"StructuredDocumentation","src":"4731:57:26","text":" @dev Returns the number of checkpoint."},"id":5403,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"4802:6:26","nodeType":"FunctionDefinition","parameters":{"id":5394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5393,"mutability":"mutable","name":"self","nameLocation":"4825:4:26","nodeType":"VariableDeclaration","scope":5403,"src":"4809:20:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":5392,"nodeType":"UserDefinedTypeName","pathNode":{"id":5391,"name":"History","nameLocations":["4809:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":5086,"src":"4809:7:26"},"referencedDeclaration":5086,"src":"4809:7:26","typeDescriptions":{"typeIdentifier":"t_struct$_History_$5086_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"}],"src":"4808:22:26"},"returnParameters":{"id":5397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5396,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5403,"src":"4854:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5395,"name":"uint256","nodeType":"ElementaryTypeName","src":"4854:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:9:26"},"scope":6447,"src":"4793:118:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5492,"nodeType":"Block","src":"5223:743:26","statements":[{"assignments":[5420],"declarations":[{"constant":false,"id":5420,"mutability":"mutable","name":"pos","nameLocation":"5241:3:26","nodeType":"VariableDeclaration","scope":5492,"src":"5233:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5419,"name":"uint256","nodeType":"ElementaryTypeName","src":"5233:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5423,"initialValue":{"expression":{"id":5421,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5408,"src":"5247:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},"id":5422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5252:6:26","memberName":"length","nodeType":"MemberAccess","src":"5247:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5233:25:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5424,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5420,"src":"5273:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5279:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5273:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5490,"nodeType":"Block","src":"5847:113:26","statements":[{"expression":{"arguments":[{"arguments":[{"id":5481,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"5897:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5482,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"5910:5:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":5480,"name":"Checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"5871:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint_$5091_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":5483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["5883:12:26","5902:6:26"],"names":["_blockNumber","_value"],"nodeType":"FunctionCall","src":"5871:46:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint_$5091_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}],"expression":{"id":5477,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5408,"src":"5861:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},"id":5479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5866:4:26","memberName":"push","nodeType":"MemberAccess","src":"5861:9:26","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint_$5091_storage_$returns$__$attached_to$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint storage ref)"}},"id":5484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5861:57:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5485,"nodeType":"ExpressionStatement","src":"5861:57:26"},{"expression":{"components":[{"hexValue":"30","id":5486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5940:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5487,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"5943:5:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":5488,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5939:10:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint224_$","typeString":"tuple(int_const 0,uint224)"}},"functionReturnParameters":5418,"id":5489,"nodeType":"Return","src":"5932:17:26"}]},"id":5491,"nodeType":"IfStatement","src":"5269:691:26","trueBody":{"id":5476,"nodeType":"Block","src":"5282:559:26","statements":[{"assignments":[5429],"declarations":[{"constant":false,"id":5429,"mutability":"mutable","name":"last","nameLocation":"5366:4:26","nodeType":"VariableDeclaration","scope":5476,"src":"5348:22:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"},"typeName":{"id":5428,"nodeType":"UserDefinedTypeName","pathNode":{"id":5427,"name":"Checkpoint","nameLocations":["5348:10:26"],"nodeType":"IdentifierPath","referencedDeclaration":5091,"src":"5348:10:26"},"referencedDeclaration":5091,"src":"5348:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"visibility":"internal"}],"id":5436,"initialValue":{"arguments":[{"id":5431,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5408,"src":"5387:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5432,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5420,"src":"5393:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5399:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5393:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5430,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":5612,"src":"5373:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$5091_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":5435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5348:53:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5438,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5429,"src":"5476:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":5439,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5481:12:26","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":5088,"src":"5476:17:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5440,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"5497:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5476:24:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e743a20696e76616c6964206b6579","id":5442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5502:25:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_b717461289064d78d4f64eae2786bccf758ed88a7bfa28ee6fa5093be89d54df","typeString":"literal_string \"Checkpoint: invalid key\""},"value":"Checkpoint: invalid key"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b717461289064d78d4f64eae2786bccf758ed88a7bfa28ee6fa5093be89d54df","typeString":"literal_string \"Checkpoint: invalid key\""}],"id":5437,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5468:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5468:60:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5444,"nodeType":"ExpressionStatement","src":"5468:60:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5445,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5429,"src":"5592:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":5446,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5597:12:26","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":5088,"src":"5592:17:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5447,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"5613:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5592:24:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5469,"nodeType":"Block","src":"5700:90:26","statements":[{"expression":{"arguments":[{"arguments":[{"id":5464,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"5754:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5465,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"5767:5:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":5463,"name":"Checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"5728:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint_$5091_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":5466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["5740:12:26","5759:6:26"],"names":["_blockNumber","_value"],"nodeType":"FunctionCall","src":"5728:46:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint_$5091_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}],"expression":{"id":5460,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5408,"src":"5718:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},"id":5462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5723:4:26","memberName":"push","nodeType":"MemberAccess","src":"5718:9:26","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint_$5091_storage_$returns$__$attached_to$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint storage ref)"}},"id":5467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5718:57:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5468,"nodeType":"ExpressionStatement","src":"5718:57:26"}]},"id":5470,"nodeType":"IfStatement","src":"5588:202:26","trueBody":{"id":5459,"nodeType":"Block","src":"5618:76:26","statements":[{"expression":{"id":5457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":5450,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5408,"src":"5650:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5451,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5420,"src":"5656:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5662:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5656:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5449,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":5612,"src":"5636:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$5091_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":5454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5636:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":5455,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5665:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5090,"src":"5636:35:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5456,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"5674:5:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"5636:43:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":5458,"nodeType":"ExpressionStatement","src":"5636:43:26"}]}},{"expression":{"components":[{"expression":{"id":5471,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5429,"src":"5811:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":5472,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5816:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5090,"src":"5811:11:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":5473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5412,"src":"5824:5:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":5474,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5810:20:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":5418,"id":5475,"nodeType":"Return","src":"5803:27:26"}]}}]},"documentation":{"id":5404,"nodeType":"StructuredDocumentation","src":"4917:165:26","text":" @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n or by updating the last one."},"id":5493,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"5096:7:26","nodeType":"FunctionDefinition","parameters":{"id":5413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5408,"mutability":"mutable","name":"self","nameLocation":"5134:4:26","nodeType":"VariableDeclaration","scope":5493,"src":"5113:25:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":5406,"nodeType":"UserDefinedTypeName","pathNode":{"id":5405,"name":"Checkpoint","nameLocations":["5113:10:26"],"nodeType":"IdentifierPath","referencedDeclaration":5091,"src":"5113:10:26"},"referencedDeclaration":5091,"src":"5113:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":5407,"nodeType":"ArrayTypeName","src":"5113:12:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"},{"constant":false,"id":5410,"mutability":"mutable","name":"key","nameLocation":"5155:3:26","nodeType":"VariableDeclaration","scope":5493,"src":"5148:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5409,"name":"uint32","nodeType":"ElementaryTypeName","src":"5148:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5412,"mutability":"mutable","name":"value","nameLocation":"5176:5:26","nodeType":"VariableDeclaration","scope":5493,"src":"5168:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5411,"name":"uint224","nodeType":"ElementaryTypeName","src":"5168:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"5103:84:26"},"returnParameters":{"id":5418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5415,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5493,"src":"5205:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5414,"name":"uint224","nodeType":"ElementaryTypeName","src":"5205:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":5417,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5493,"src":"5214:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5416,"name":"uint224","nodeType":"ElementaryTypeName","src":"5214:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"5204:18:26"},"scope":6447,"src":"5087:879:26","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5544,"nodeType":"Block","src":"6460:286:26","statements":[{"body":{"id":5540,"nodeType":"Block","src":"6489:230:26","statements":[{"assignments":[5513],"declarations":[{"constant":false,"id":5513,"mutability":"mutable","name":"mid","nameLocation":"6511:3:26","nodeType":"VariableDeclaration","scope":5540,"src":"6503:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5512,"name":"uint256","nodeType":"ElementaryTypeName","src":"6503:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5519,"initialValue":{"arguments":[{"id":5516,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5502,"src":"6541:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5517,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5504,"src":"6546:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5514,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"6517:15:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$8170_$","typeString":"type(library MathUpgradeable)"}},"id":5515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6533:7:26","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":7371,"src":"6517:23:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6517:34:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6503:48:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5521,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5498,"src":"6583:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},{"id":5522,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5513,"src":"6589:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5520,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":5612,"src":"6569:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$5091_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":5523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6569:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":5524,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6594:12:26","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":5088,"src":"6569:37:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5525,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5500,"src":"6609:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6569:43:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5538,"nodeType":"Block","src":"6663:46:26","statements":[{"expression":{"id":5536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5532,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5502,"src":"6681:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5533,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5513,"src":"6687:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6693:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6687:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6681:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5537,"nodeType":"ExpressionStatement","src":"6681:13:26"}]},"id":5539,"nodeType":"IfStatement","src":"6565:144:26","trueBody":{"id":5531,"nodeType":"Block","src":"6614:43:26","statements":[{"expression":{"id":5529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5527,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5504,"src":"6632:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5528,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5513,"src":"6639:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6632:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5530,"nodeType":"ExpressionStatement","src":"6632:10:26"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5509,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5502,"src":"6477:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5510,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5504,"src":"6483:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6477:10:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5541,"nodeType":"WhileStatement","src":"6470:249:26"},{"expression":{"id":5542,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5504,"src":"6735:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5508,"id":5543,"nodeType":"Return","src":"6728:11:26"}]},"documentation":{"id":5494,"nodeType":"StructuredDocumentation","src":"5972:320:26","text":" @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":5545,"implemented":true,"kind":"function","modifiers":[],"name":"_upperBinaryLookup","nameLocation":"6306:18:26","nodeType":"FunctionDefinition","parameters":{"id":5505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5498,"mutability":"mutable","name":"self","nameLocation":"6355:4:26","nodeType":"VariableDeclaration","scope":5545,"src":"6334:25:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":5496,"nodeType":"UserDefinedTypeName","pathNode":{"id":5495,"name":"Checkpoint","nameLocations":["6334:10:26"],"nodeType":"IdentifierPath","referencedDeclaration":5091,"src":"6334:10:26"},"referencedDeclaration":5091,"src":"6334:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":5497,"nodeType":"ArrayTypeName","src":"6334:12:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"},{"constant":false,"id":5500,"mutability":"mutable","name":"key","nameLocation":"6376:3:26","nodeType":"VariableDeclaration","scope":5545,"src":"6369:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5499,"name":"uint32","nodeType":"ElementaryTypeName","src":"6369:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5502,"mutability":"mutable","name":"low","nameLocation":"6397:3:26","nodeType":"VariableDeclaration","scope":5545,"src":"6389:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5501,"name":"uint256","nodeType":"ElementaryTypeName","src":"6389:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5504,"mutability":"mutable","name":"high","nameLocation":"6418:4:26","nodeType":"VariableDeclaration","scope":5545,"src":"6410:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5503,"name":"uint256","nodeType":"ElementaryTypeName","src":"6410:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6324:104:26"},"returnParameters":{"id":5508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5507,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5545,"src":"6451:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5506,"name":"uint256","nodeType":"ElementaryTypeName","src":"6451:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6450:9:26"},"scope":6447,"src":"6297:449:26","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5596,"nodeType":"Block","src":"7249:286:26","statements":[{"body":{"id":5592,"nodeType":"Block","src":"7278:230:26","statements":[{"assignments":[5565],"declarations":[{"constant":false,"id":5565,"mutability":"mutable","name":"mid","nameLocation":"7300:3:26","nodeType":"VariableDeclaration","scope":5592,"src":"7292:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5564,"name":"uint256","nodeType":"ElementaryTypeName","src":"7292:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5571,"initialValue":{"arguments":[{"id":5568,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5554,"src":"7330:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5569,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5556,"src":"7335:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5566,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"7306:15:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$8170_$","typeString":"type(library MathUpgradeable)"}},"id":5567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7322:7:26","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":7371,"src":"7306:23:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7306:34:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7292:48:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5573,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5550,"src":"7372:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},{"id":5574,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5565,"src":"7378:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5572,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":5612,"src":"7358:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$5091_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":5575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7358:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":5576,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7383:12:26","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":5088,"src":"7358:37:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5577,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5552,"src":"7398:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7358:43:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5590,"nodeType":"Block","src":"7455:43:26","statements":[{"expression":{"id":5588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5586,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5556,"src":"7473:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5587,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5565,"src":"7480:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7473:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5589,"nodeType":"ExpressionStatement","src":"7473:10:26"}]},"id":5591,"nodeType":"IfStatement","src":"7354:144:26","trueBody":{"id":5585,"nodeType":"Block","src":"7403:46:26","statements":[{"expression":{"id":5583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5579,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5554,"src":"7421:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5580,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5565,"src":"7427:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7433:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7427:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7421:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5584,"nodeType":"ExpressionStatement","src":"7421:13:26"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5561,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5554,"src":"7266:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5562,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5556,"src":"7272:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7266:10:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5593,"nodeType":"WhileStatement","src":"7259:249:26"},{"expression":{"id":5594,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5556,"src":"7524:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5560,"id":5595,"nodeType":"Return","src":"7517:11:26"}]},"documentation":{"id":5546,"nodeType":"StructuredDocumentation","src":"6752:329:26","text":" @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":5597,"implemented":true,"kind":"function","modifiers":[],"name":"_lowerBinaryLookup","nameLocation":"7095:18:26","nodeType":"FunctionDefinition","parameters":{"id":5557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5550,"mutability":"mutable","name":"self","nameLocation":"7144:4:26","nodeType":"VariableDeclaration","scope":5597,"src":"7123:25:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":5548,"nodeType":"UserDefinedTypeName","pathNode":{"id":5547,"name":"Checkpoint","nameLocations":["7123:10:26"],"nodeType":"IdentifierPath","referencedDeclaration":5091,"src":"7123:10:26"},"referencedDeclaration":5091,"src":"7123:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":5549,"nodeType":"ArrayTypeName","src":"7123:12:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"},{"constant":false,"id":5552,"mutability":"mutable","name":"key","nameLocation":"7165:3:26","nodeType":"VariableDeclaration","scope":5597,"src":"7158:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5551,"name":"uint32","nodeType":"ElementaryTypeName","src":"7158:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5554,"mutability":"mutable","name":"low","nameLocation":"7186:3:26","nodeType":"VariableDeclaration","scope":5597,"src":"7178:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5553,"name":"uint256","nodeType":"ElementaryTypeName","src":"7178:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5556,"mutability":"mutable","name":"high","nameLocation":"7207:4:26","nodeType":"VariableDeclaration","scope":5597,"src":"7199:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5555,"name":"uint256","nodeType":"ElementaryTypeName","src":"7199:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7113:104:26"},"returnParameters":{"id":5560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5559,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5597,"src":"7240:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5558,"name":"uint256","nodeType":"ElementaryTypeName","src":"7240:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7239:9:26"},"scope":6447,"src":"7086:449:26","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5611,"nodeType":"Block","src":"7790:125:26","statements":[{"AST":{"nodeType":"YulBlock","src":"7809:100:26","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7830:1:26","type":"","value":"0"},{"name":"self.slot","nodeType":"YulIdentifier","src":"7833:9:26"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7823:6:26"},"nodeType":"YulFunctionCall","src":"7823:20:26"},"nodeType":"YulExpressionStatement","src":"7823:20:26"},{"nodeType":"YulAssignment","src":"7856:43:26","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7885:1:26","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7888:4:26","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"7875:9:26"},"nodeType":"YulFunctionCall","src":"7875:18:26"},{"name":"pos","nodeType":"YulIdentifier","src":"7895:3:26"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7871:3:26"},"nodeType":"YulFunctionCall","src":"7871:28:26"},"variableNames":[{"name":"result.slot","nodeType":"YulIdentifier","src":"7856:11:26"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":5604,"isOffset":false,"isSlot":false,"src":"7895:3:26","valueSize":1},{"declaration":5608,"isOffset":false,"isSlot":true,"src":"7856:11:26","suffix":"slot","valueSize":1},{"declaration":5602,"isOffset":false,"isSlot":true,"src":"7833:9:26","suffix":"slot","valueSize":1}],"id":5610,"nodeType":"InlineAssembly","src":"7800:109:26"}]},"documentation":{"id":5598,"nodeType":"StructuredDocumentation","src":"7541:132:26","text":" @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds."},"id":5612,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeAccess","nameLocation":"7687:13:26","nodeType":"FunctionDefinition","parameters":{"id":5605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5602,"mutability":"mutable","name":"self","nameLocation":"7722:4:26","nodeType":"VariableDeclaration","scope":5612,"src":"7701:25:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":5600,"nodeType":"UserDefinedTypeName","pathNode":{"id":5599,"name":"Checkpoint","nameLocations":["7701:10:26"],"nodeType":"IdentifierPath","referencedDeclaration":5091,"src":"7701:10:26"},"referencedDeclaration":5091,"src":"7701:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":5601,"nodeType":"ArrayTypeName","src":"7701:12:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$5091_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"},{"constant":false,"id":5604,"mutability":"mutable","name":"pos","nameLocation":"7736:3:26","nodeType":"VariableDeclaration","scope":5612,"src":"7728:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5603,"name":"uint256","nodeType":"ElementaryTypeName","src":"7728:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7700:40:26"},"returnParameters":{"id":5609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5608,"mutability":"mutable","name":"result","nameLocation":"7782:6:26","nodeType":"VariableDeclaration","scope":5612,"src":"7763:25:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"},"typeName":{"id":5607,"nodeType":"UserDefinedTypeName","pathNode":{"id":5606,"name":"Checkpoint","nameLocations":["7763:10:26"],"nodeType":"IdentifierPath","referencedDeclaration":5091,"src":"7763:10:26"},"referencedDeclaration":5091,"src":"7763:10:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$5091_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"visibility":"internal"}],"src":"7762:27:26"},"scope":6447,"src":"7678:237:26","stateMutability":"pure","virtual":false,"visibility":"private"},{"canonicalName":"CheckpointsUpgradeable.Trace224","id":5617,"members":[{"constant":false,"id":5616,"mutability":"mutable","name":"_checkpoints","nameLocation":"7963:12:26","nodeType":"VariableDeclaration","scope":5617,"src":"7947:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":5614,"nodeType":"UserDefinedTypeName","pathNode":{"id":5613,"name":"Checkpoint224","nameLocations":["7947:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":5622,"src":"7947:13:26"},"referencedDeclaration":5622,"src":"7947:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":5615,"nodeType":"ArrayTypeName","src":"7947:15:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"}],"name":"Trace224","nameLocation":"7928:8:26","nodeType":"StructDefinition","scope":6447,"src":"7921:61:26","visibility":"public"},{"canonicalName":"CheckpointsUpgradeable.Checkpoint224","id":5622,"members":[{"constant":false,"id":5619,"mutability":"mutable","name":"_key","nameLocation":"8026:4:26","nodeType":"VariableDeclaration","scope":5622,"src":"8019:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5618,"name":"uint32","nodeType":"ElementaryTypeName","src":"8019:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5621,"mutability":"mutable","name":"_value","nameLocation":"8048:6:26","nodeType":"VariableDeclaration","scope":5622,"src":"8040:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5620,"name":"uint224","nodeType":"ElementaryTypeName","src":"8040:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"name":"Checkpoint224","nameLocation":"7995:13:26","nodeType":"StructDefinition","scope":6447,"src":"7988:73:26","visibility":"public"},{"body":{"id":5644,"nodeType":"Block","src":"8364:62:26","statements":[{"expression":{"arguments":[{"expression":{"id":5638,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5626,"src":"8389:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":5639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8394:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5616,"src":"8389:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":5640,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5628,"src":"8408:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5641,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5630,"src":"8413:5:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":5637,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[5493,5910,6327],"referencedDeclaration":5910,"src":"8381:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint224_$returns$_t_uint224_$_t_uint224_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint224) returns (uint224,uint224)"}},"id":5642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8381:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":5636,"id":5643,"nodeType":"Return","src":"8374:45:26"}]},"documentation":{"id":5623,"nodeType":"StructuredDocumentation","src":"8067:162:26","text":" @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\n Returns previous value and new value."},"id":5645,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"8243:4:26","nodeType":"FunctionDefinition","parameters":{"id":5631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5626,"mutability":"mutable","name":"self","nameLocation":"8274:4:26","nodeType":"VariableDeclaration","scope":5645,"src":"8257:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":5625,"nodeType":"UserDefinedTypeName","pathNode":{"id":5624,"name":"Trace224","nameLocations":["8257:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":5617,"src":"8257:8:26"},"referencedDeclaration":5617,"src":"8257:8:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"},{"constant":false,"id":5628,"mutability":"mutable","name":"key","nameLocation":"8295:3:26","nodeType":"VariableDeclaration","scope":5645,"src":"8288:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5627,"name":"uint32","nodeType":"ElementaryTypeName","src":"8288:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5630,"mutability":"mutable","name":"value","nameLocation":"8316:5:26","nodeType":"VariableDeclaration","scope":5645,"src":"8308:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5629,"name":"uint224","nodeType":"ElementaryTypeName","src":"8308:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"8247:80:26"},"returnParameters":{"id":5636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5633,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5645,"src":"8346:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5632,"name":"uint224","nodeType":"ElementaryTypeName","src":"8346:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":5635,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5645,"src":"8355:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5634,"name":"uint224","nodeType":"ElementaryTypeName","src":"8355:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"8345:18:26"},"scope":6447,"src":"8234:192:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5684,"nodeType":"Block","src":"8664:207:26","statements":[{"assignments":[5657],"declarations":[{"constant":false,"id":5657,"mutability":"mutable","name":"len","nameLocation":"8682:3:26","nodeType":"VariableDeclaration","scope":5684,"src":"8674:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5656,"name":"uint256","nodeType":"ElementaryTypeName","src":"8674:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5661,"initialValue":{"expression":{"expression":{"id":5658,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5649,"src":"8688:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":5659,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8693:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5616,"src":"8688:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":5660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8706:6:26","memberName":"length","nodeType":"MemberAccess","src":"8688:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8674:38:26"},{"assignments":[5663],"declarations":[{"constant":false,"id":5663,"mutability":"mutable","name":"pos","nameLocation":"8730:3:26","nodeType":"VariableDeclaration","scope":5684,"src":"8722:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5662,"name":"uint256","nodeType":"ElementaryTypeName","src":"8722:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5671,"initialValue":{"arguments":[{"expression":{"id":5665,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5649,"src":"8755:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":5666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8760:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5616,"src":"8755:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":5667,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5651,"src":"8774:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":5668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8779:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5669,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5657,"src":"8782:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5664,"name":"_lowerBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5597,6014,6431],"referencedDeclaration":6014,"src":"8736:18:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":5670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8736:50:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8722:64:26"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5672,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5663,"src":"8803:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5673,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5657,"src":"8810:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8803:10:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5677,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5649,"src":"8834:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":5678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8839:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5616,"src":"8834:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":5679,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5663,"src":"8853:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5676,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6029,"src":"8820:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$5622_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":5680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8820:37:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":5681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8858:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5621,"src":"8820:44:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":5682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8803:61:26","trueExpression":{"hexValue":"30","id":5675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8816:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":5655,"id":5683,"nodeType":"Return","src":"8796:68:26"}]},"documentation":{"id":5646,"nodeType":"StructuredDocumentation","src":"8432:139:26","text":" @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none."},"id":5685,"implemented":true,"kind":"function","modifiers":[],"name":"lowerLookup","nameLocation":"8585:11:26","nodeType":"FunctionDefinition","parameters":{"id":5652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5649,"mutability":"mutable","name":"self","nameLocation":"8614:4:26","nodeType":"VariableDeclaration","scope":5685,"src":"8597:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":5648,"nodeType":"UserDefinedTypeName","pathNode":{"id":5647,"name":"Trace224","nameLocations":["8597:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":5617,"src":"8597:8:26"},"referencedDeclaration":5617,"src":"8597:8:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"},{"constant":false,"id":5651,"mutability":"mutable","name":"key","nameLocation":"8627:3:26","nodeType":"VariableDeclaration","scope":5685,"src":"8620:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5650,"name":"uint32","nodeType":"ElementaryTypeName","src":"8620:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8596:35:26"},"returnParameters":{"id":5655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5685,"src":"8655:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5653,"name":"uint224","nodeType":"ElementaryTypeName","src":"8655:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"8654:9:26"},"scope":6447,"src":"8576:295:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5726,"nodeType":"Block","src":"9086:209:26","statements":[{"assignments":[5697],"declarations":[{"constant":false,"id":5697,"mutability":"mutable","name":"len","nameLocation":"9104:3:26","nodeType":"VariableDeclaration","scope":5726,"src":"9096:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5696,"name":"uint256","nodeType":"ElementaryTypeName","src":"9096:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5701,"initialValue":{"expression":{"expression":{"id":5698,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5689,"src":"9110:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":5699,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9115:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5616,"src":"9110:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":5700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9128:6:26","memberName":"length","nodeType":"MemberAccess","src":"9110:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9096:38:26"},{"assignments":[5703],"declarations":[{"constant":false,"id":5703,"mutability":"mutable","name":"pos","nameLocation":"9152:3:26","nodeType":"VariableDeclaration","scope":5726,"src":"9144:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5702,"name":"uint256","nodeType":"ElementaryTypeName","src":"9144:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5711,"initialValue":{"arguments":[{"expression":{"id":5705,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5689,"src":"9177:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":5706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9182:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5616,"src":"9177:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":5707,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5691,"src":"9196:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":5708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9201:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5709,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"9204:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5704,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5545,5962,6379],"referencedDeclaration":5962,"src":"9158:18:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":5710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9158:50:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9144:64:26"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5712,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5703,"src":"9225:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9232:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9225:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5717,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5689,"src":"9254:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":5718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9259:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5616,"src":"9254:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5719,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5703,"src":"9273:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9279:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9273:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5716,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6029,"src":"9240:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$5622_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":5722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9240:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":5723,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9282:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5621,"src":"9240:48:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":5724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9225:63:26","trueExpression":{"hexValue":"30","id":5715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9236:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":5695,"id":5725,"nodeType":"Return","src":"9218:70:26"}]},"documentation":{"id":5686,"nodeType":"StructuredDocumentation","src":"8877:116:26","text":" @dev Returns the value in the most recent checkpoint with key lower or equal than the search key."},"id":5727,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookup","nameLocation":"9007:11:26","nodeType":"FunctionDefinition","parameters":{"id":5692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5689,"mutability":"mutable","name":"self","nameLocation":"9036:4:26","nodeType":"VariableDeclaration","scope":5727,"src":"9019:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":5688,"nodeType":"UserDefinedTypeName","pathNode":{"id":5687,"name":"Trace224","nameLocations":["9019:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":5617,"src":"9019:8:26"},"referencedDeclaration":5617,"src":"9019:8:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"},{"constant":false,"id":5691,"mutability":"mutable","name":"key","nameLocation":"9049:3:26","nodeType":"VariableDeclaration","scope":5727,"src":"9042:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5690,"name":"uint32","nodeType":"ElementaryTypeName","src":"9042:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"9018:35:26"},"returnParameters":{"id":5695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5694,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5727,"src":"9077:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5693,"name":"uint224","nodeType":"ElementaryTypeName","src":"9077:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"9076:9:26"},"scope":6447,"src":"8998:297:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5756,"nodeType":"Block","src":"9486:135:26","statements":[{"assignments":[5737],"declarations":[{"constant":false,"id":5737,"mutability":"mutable","name":"pos","nameLocation":"9504:3:26","nodeType":"VariableDeclaration","scope":5756,"src":"9496:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5736,"name":"uint256","nodeType":"ElementaryTypeName","src":"9496:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5741,"initialValue":{"expression":{"expression":{"id":5738,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5731,"src":"9510:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":5739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9515:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5616,"src":"9510:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":5740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9528:6:26","memberName":"length","nodeType":"MemberAccess","src":"9510:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9496:38:26"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5742,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5737,"src":"9551:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9558:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9551:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":5747,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5731,"src":"9580:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":5748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9585:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5616,"src":"9580:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5749,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5737,"src":"9599:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9605:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9599:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5746,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6029,"src":"9566:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$5622_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":5752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9566:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":5753,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9608:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5621,"src":"9566:48:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":5754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9551:63:26","trueExpression":{"hexValue":"30","id":5745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9562:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":5735,"id":5755,"nodeType":"Return","src":"9544:70:26"}]},"documentation":{"id":5728,"nodeType":"StructuredDocumentation","src":"9301:109:26","text":" @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints."},"id":5757,"implemented":true,"kind":"function","modifiers":[],"name":"latest","nameLocation":"9424:6:26","nodeType":"FunctionDefinition","parameters":{"id":5732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5731,"mutability":"mutable","name":"self","nameLocation":"9448:4:26","nodeType":"VariableDeclaration","scope":5757,"src":"9431:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":5730,"nodeType":"UserDefinedTypeName","pathNode":{"id":5729,"name":"Trace224","nameLocations":["9431:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":5617,"src":"9431:8:26"},"referencedDeclaration":5617,"src":"9431:8:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"}],"src":"9430:23:26"},"returnParameters":{"id":5735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5734,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5757,"src":"9477:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5733,"name":"uint224","nodeType":"ElementaryTypeName","src":"9477:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"9476:9:26"},"scope":6447,"src":"9415:206:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5805,"nodeType":"Block","src":"9988:274:26","statements":[{"assignments":[5771],"declarations":[{"constant":false,"id":5771,"mutability":"mutable","name":"pos","nameLocation":"10006:3:26","nodeType":"VariableDeclaration","scope":5805,"src":"9998:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5770,"name":"uint256","nodeType":"ElementaryTypeName","src":"9998:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5775,"initialValue":{"expression":{"expression":{"id":5772,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5761,"src":"10012:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":5773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10017:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5616,"src":"10012:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":5774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10030:6:26","memberName":"length","nodeType":"MemberAccess","src":"10012:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9998:38:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5776,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5771,"src":"10050:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10057:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10050:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5803,"nodeType":"Block","src":"10111:145:26","statements":[{"assignments":[5787],"declarations":[{"constant":false,"id":5787,"mutability":"mutable","name":"ckpt","nameLocation":"10146:4:26","nodeType":"VariableDeclaration","scope":5803,"src":"10125:25:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"},"typeName":{"id":5786,"nodeType":"UserDefinedTypeName","pathNode":{"id":5785,"name":"Checkpoint224","nameLocations":["10125:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":5622,"src":"10125:13:26"},"referencedDeclaration":5622,"src":"10125:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"visibility":"internal"}],"id":5795,"initialValue":{"arguments":[{"expression":{"id":5789,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5761,"src":"10167:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":5790,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10172:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5616,"src":"10167:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5791,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5771,"src":"10186:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10192:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10186:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5788,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6029,"src":"10153:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$5622_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":5794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10153:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10125:69:26"},{"expression":{"components":[{"hexValue":"74727565","id":5796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10216:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":5797,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5787,"src":"10222:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":5798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10227:4:26","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5619,"src":"10222:9:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":5799,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5787,"src":"10233:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":5800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10238:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5621,"src":"10233:11:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":5801,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10215:30:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$_t_uint224_$","typeString":"tuple(bool,uint32,uint224)"}},"functionReturnParameters":5769,"id":5802,"nodeType":"Return","src":"10208:37:26"}]},"id":5804,"nodeType":"IfStatement","src":"10046:210:26","trueBody":{"id":5784,"nodeType":"Block","src":"10060:45:26","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":5779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10082:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10089:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":5781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10092:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5782,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10081:13:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":5769,"id":5783,"nodeType":"Return","src":"10074:20:26"}]}}]},"documentation":{"id":5758,"nodeType":"StructuredDocumentation","src":"9627:168:26","text":" @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n in the most recent checkpoint."},"id":5806,"implemented":true,"kind":"function","modifiers":[],"name":"latestCheckpoint","nameLocation":"9809:16:26","nodeType":"FunctionDefinition","parameters":{"id":5762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5761,"mutability":"mutable","name":"self","nameLocation":"9843:4:26","nodeType":"VariableDeclaration","scope":5806,"src":"9826:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":5760,"nodeType":"UserDefinedTypeName","pathNode":{"id":5759,"name":"Trace224","nameLocations":["9826:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":5617,"src":"9826:8:26"},"referencedDeclaration":5617,"src":"9826:8:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"}],"src":"9825:23:26"},"returnParameters":{"id":5769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5764,"mutability":"mutable","name":"exists","nameLocation":"9914:6:26","nodeType":"VariableDeclaration","scope":5806,"src":"9909:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5763,"name":"bool","nodeType":"ElementaryTypeName","src":"9909:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5766,"mutability":"mutable","name":"_key","nameLocation":"9941:4:26","nodeType":"VariableDeclaration","scope":5806,"src":"9934:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5765,"name":"uint32","nodeType":"ElementaryTypeName","src":"9934:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5768,"mutability":"mutable","name":"_value","nameLocation":"9967:6:26","nodeType":"VariableDeclaration","scope":5806,"src":"9959:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5767,"name":"uint224","nodeType":"ElementaryTypeName","src":"9959:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"9895:88:26"},"scope":6447,"src":"9800:462:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5819,"nodeType":"Block","src":"10401:48:26","statements":[{"expression":{"expression":{"expression":{"id":5815,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5810,"src":"10418:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":5816,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10423:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":5616,"src":"10418:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":5817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10436:6:26","memberName":"length","nodeType":"MemberAccess","src":"10418:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5814,"id":5818,"nodeType":"Return","src":"10411:31:26"}]},"documentation":{"id":5807,"nodeType":"StructuredDocumentation","src":"10268:57:26","text":" @dev Returns the number of checkpoint."},"id":5820,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"10339:6:26","nodeType":"FunctionDefinition","parameters":{"id":5811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5810,"mutability":"mutable","name":"self","nameLocation":"10363:4:26","nodeType":"VariableDeclaration","scope":5820,"src":"10346:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":5809,"nodeType":"UserDefinedTypeName","pathNode":{"id":5808,"name":"Trace224","nameLocations":["10346:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":5617,"src":"10346:8:26"},"referencedDeclaration":5617,"src":"10346:8:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$5617_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"}],"src":"10345:23:26"},"returnParameters":{"id":5814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5813,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5820,"src":"10392:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5812,"name":"uint256","nodeType":"ElementaryTypeName","src":"10392:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10391:9:26"},"scope":6447,"src":"10330:119:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5909,"nodeType":"Block","src":"10764:720:26","statements":[{"assignments":[5837],"declarations":[{"constant":false,"id":5837,"mutability":"mutable","name":"pos","nameLocation":"10782:3:26","nodeType":"VariableDeclaration","scope":5909,"src":"10774:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5836,"name":"uint256","nodeType":"ElementaryTypeName","src":"10774:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5840,"initialValue":{"expression":{"id":5838,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"10788:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},"id":5839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10793:6:26","memberName":"length","nodeType":"MemberAccess","src":"10788:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10774:25:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5841,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5837,"src":"10814:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10820:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10814:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5907,"nodeType":"Block","src":"11370:108:26","statements":[{"expression":{"arguments":[{"arguments":[{"id":5898,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5827,"src":"11415:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5899,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5829,"src":"11428:5:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":5897,"name":"Checkpoint224","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5622,"src":"11394:13:26","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint224_$5622_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":5900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["11409:4:26","11420:6:26"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"11394:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint224_$5622_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}],"expression":{"id":5894,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"11384:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},"id":5896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11389:4:26","memberName":"push","nodeType":"MemberAccess","src":"11384:9:26","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint224_$5622_storage_$returns$__$attached_to$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint224 storage ref)"}},"id":5901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11384:52:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5902,"nodeType":"ExpressionStatement","src":"11384:52:26"},{"expression":{"components":[{"hexValue":"30","id":5903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11458:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5829,"src":"11461:5:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":5905,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11457:10:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint224_$","typeString":"tuple(int_const 0,uint224)"}},"functionReturnParameters":5835,"id":5906,"nodeType":"Return","src":"11450:17:26"}]},"id":5908,"nodeType":"IfStatement","src":"10810:668:26","trueBody":{"id":5893,"nodeType":"Block","src":"10823:541:26","statements":[{"assignments":[5846],"declarations":[{"constant":false,"id":5846,"mutability":"mutable","name":"last","nameLocation":"10910:4:26","nodeType":"VariableDeclaration","scope":5893,"src":"10889:25:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"},"typeName":{"id":5845,"nodeType":"UserDefinedTypeName","pathNode":{"id":5844,"name":"Checkpoint224","nameLocations":["10889:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":5622,"src":"10889:13:26"},"referencedDeclaration":5622,"src":"10889:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"visibility":"internal"}],"id":5853,"initialValue":{"arguments":[{"id":5848,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"10931:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5849,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5837,"src":"10937:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10943:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10937:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5847,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6029,"src":"10917:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$5622_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":5852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10917:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10889:56:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5855,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5846,"src":"11020:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":5856,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11025:4:26","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5619,"src":"11020:9:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5857,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5827,"src":"11033:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11020:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e743a20696e76616c6964206b6579","id":5859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11038:25:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_b717461289064d78d4f64eae2786bccf758ed88a7bfa28ee6fa5093be89d54df","typeString":"literal_string \"Checkpoint: invalid key\""},"value":"Checkpoint: invalid key"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b717461289064d78d4f64eae2786bccf758ed88a7bfa28ee6fa5093be89d54df","typeString":"literal_string \"Checkpoint: invalid key\""}],"id":5854,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11012:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11012:52:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5861,"nodeType":"ExpressionStatement","src":"11012:52:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5862,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5846,"src":"11128:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":5863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11133:4:26","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5619,"src":"11128:9:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5864,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5827,"src":"11141:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11128:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5886,"nodeType":"Block","src":"11228:85:26","statements":[{"expression":{"arguments":[{"arguments":[{"id":5881,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5827,"src":"11277:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5882,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5829,"src":"11290:5:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":5880,"name":"Checkpoint224","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5622,"src":"11256:13:26","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint224_$5622_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":5883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["11271:4:26","11282:6:26"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"11256:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint224_$5622_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}],"expression":{"id":5877,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"11246:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},"id":5879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11251:4:26","memberName":"push","nodeType":"MemberAccess","src":"11246:9:26","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint224_$5622_storage_$returns$__$attached_to$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint224 storage ref)"}},"id":5884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11246:52:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5885,"nodeType":"ExpressionStatement","src":"11246:52:26"}]},"id":5887,"nodeType":"IfStatement","src":"11124:189:26","trueBody":{"id":5876,"nodeType":"Block","src":"11146:76:26","statements":[{"expression":{"id":5874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":5867,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"11178:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5868,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5837,"src":"11184:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11190:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11184:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5866,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6029,"src":"11164:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$5622_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":5871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11164:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":5872,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11193:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5621,"src":"11164:35:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5873,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5829,"src":"11202:5:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"11164:43:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":5875,"nodeType":"ExpressionStatement","src":"11164:43:26"}]}},{"expression":{"components":[{"expression":{"id":5888,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5846,"src":"11334:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":5889,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11339:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":5621,"src":"11334:11:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":5890,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5829,"src":"11347:5:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":5891,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11333:20:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":5835,"id":5892,"nodeType":"Return","src":"11326:27:26"}]}}]},"documentation":{"id":5821,"nodeType":"StructuredDocumentation","src":"10455:165:26","text":" @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n or by updating the last one."},"id":5910,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"10634:7:26","nodeType":"FunctionDefinition","parameters":{"id":5830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5825,"mutability":"mutable","name":"self","nameLocation":"10675:4:26","nodeType":"VariableDeclaration","scope":5910,"src":"10651:28:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":5823,"nodeType":"UserDefinedTypeName","pathNode":{"id":5822,"name":"Checkpoint224","nameLocations":["10651:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":5622,"src":"10651:13:26"},"referencedDeclaration":5622,"src":"10651:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":5824,"nodeType":"ArrayTypeName","src":"10651:15:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":5827,"mutability":"mutable","name":"key","nameLocation":"10696:3:26","nodeType":"VariableDeclaration","scope":5910,"src":"10689:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5826,"name":"uint32","nodeType":"ElementaryTypeName","src":"10689:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5829,"mutability":"mutable","name":"value","nameLocation":"10717:5:26","nodeType":"VariableDeclaration","scope":5910,"src":"10709:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5828,"name":"uint224","nodeType":"ElementaryTypeName","src":"10709:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"10641:87:26"},"returnParameters":{"id":5835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5832,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5910,"src":"10746:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5831,"name":"uint224","nodeType":"ElementaryTypeName","src":"10746:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":5834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5910,"src":"10755:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5833,"name":"uint224","nodeType":"ElementaryTypeName","src":"10755:7:26","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"10745:18:26"},"scope":6447,"src":"10625:859:26","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5961,"nodeType":"Block","src":"11981:278:26","statements":[{"body":{"id":5957,"nodeType":"Block","src":"12010:222:26","statements":[{"assignments":[5930],"declarations":[{"constant":false,"id":5930,"mutability":"mutable","name":"mid","nameLocation":"12032:3:26","nodeType":"VariableDeclaration","scope":5957,"src":"12024:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5929,"name":"uint256","nodeType":"ElementaryTypeName","src":"12024:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5936,"initialValue":{"arguments":[{"id":5933,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5919,"src":"12062:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5934,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5921,"src":"12067:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5931,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"12038:15:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$8170_$","typeString":"type(library MathUpgradeable)"}},"id":5932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12054:7:26","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":7371,"src":"12038:23:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12038:34:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12024:48:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5938,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"12104:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},{"id":5939,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"12110:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5937,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6029,"src":"12090:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$5622_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":5940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12090:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":5941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12115:4:26","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5619,"src":"12090:29:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5942,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5917,"src":"12122:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"12090:35:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5955,"nodeType":"Block","src":"12176:46:26","statements":[{"expression":{"id":5953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5949,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5919,"src":"12194:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5950,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"12200:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12206:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12200:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12194:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5954,"nodeType":"ExpressionStatement","src":"12194:13:26"}]},"id":5956,"nodeType":"IfStatement","src":"12086:136:26","trueBody":{"id":5948,"nodeType":"Block","src":"12127:43:26","statements":[{"expression":{"id":5946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5944,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5921,"src":"12145:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5945,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"12152:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12145:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5947,"nodeType":"ExpressionStatement","src":"12145:10:26"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5926,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5919,"src":"11998:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5927,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5921,"src":"12004:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11998:10:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5958,"nodeType":"WhileStatement","src":"11991:241:26"},{"expression":{"id":5959,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5921,"src":"12248:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5925,"id":5960,"nodeType":"Return","src":"12241:11:26"}]},"documentation":{"id":5911,"nodeType":"StructuredDocumentation","src":"11490:320:26","text":" @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":5962,"implemented":true,"kind":"function","modifiers":[],"name":"_upperBinaryLookup","nameLocation":"11824:18:26","nodeType":"FunctionDefinition","parameters":{"id":5922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5915,"mutability":"mutable","name":"self","nameLocation":"11876:4:26","nodeType":"VariableDeclaration","scope":5962,"src":"11852:28:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":5913,"nodeType":"UserDefinedTypeName","pathNode":{"id":5912,"name":"Checkpoint224","nameLocations":["11852:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":5622,"src":"11852:13:26"},"referencedDeclaration":5622,"src":"11852:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":5914,"nodeType":"ArrayTypeName","src":"11852:15:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":5917,"mutability":"mutable","name":"key","nameLocation":"11897:3:26","nodeType":"VariableDeclaration","scope":5962,"src":"11890:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5916,"name":"uint32","nodeType":"ElementaryTypeName","src":"11890:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5919,"mutability":"mutable","name":"low","nameLocation":"11918:3:26","nodeType":"VariableDeclaration","scope":5962,"src":"11910:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5918,"name":"uint256","nodeType":"ElementaryTypeName","src":"11910:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5921,"mutability":"mutable","name":"high","nameLocation":"11939:4:26","nodeType":"VariableDeclaration","scope":5962,"src":"11931:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5920,"name":"uint256","nodeType":"ElementaryTypeName","src":"11931:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11842:107:26"},"returnParameters":{"id":5925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5962,"src":"11972:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5923,"name":"uint256","nodeType":"ElementaryTypeName","src":"11972:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11971:9:26"},"scope":6447,"src":"11815:444:26","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6013,"nodeType":"Block","src":"12765:278:26","statements":[{"body":{"id":6009,"nodeType":"Block","src":"12794:222:26","statements":[{"assignments":[5982],"declarations":[{"constant":false,"id":5982,"mutability":"mutable","name":"mid","nameLocation":"12816:3:26","nodeType":"VariableDeclaration","scope":6009,"src":"12808:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5981,"name":"uint256","nodeType":"ElementaryTypeName","src":"12808:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5988,"initialValue":{"arguments":[{"id":5985,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5971,"src":"12846:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5986,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"12851:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5983,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"12822:15:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$8170_$","typeString":"type(library MathUpgradeable)"}},"id":5984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12838:7:26","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":7371,"src":"12822:23:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12822:34:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12808:48:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5990,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"12888:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},{"id":5991,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5982,"src":"12894:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5989,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6029,"src":"12874:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$5622_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":5992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12874:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":5993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12899:4:26","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":5619,"src":"12874:29:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5994,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5969,"src":"12906:3:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"12874:35:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6007,"nodeType":"Block","src":"12963:43:26","statements":[{"expression":{"id":6005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6003,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"12981:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6004,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5982,"src":"12988:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12981:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6006,"nodeType":"ExpressionStatement","src":"12981:10:26"}]},"id":6008,"nodeType":"IfStatement","src":"12870:136:26","trueBody":{"id":6002,"nodeType":"Block","src":"12911:46:26","statements":[{"expression":{"id":6000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5996,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5971,"src":"12929:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5997,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5982,"src":"12935:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12941:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12935:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12929:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6001,"nodeType":"ExpressionStatement","src":"12929:13:26"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5978,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5971,"src":"12782:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5979,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"12788:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12782:10:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6010,"nodeType":"WhileStatement","src":"12775:241:26"},{"expression":{"id":6011,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"13032:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5977,"id":6012,"nodeType":"Return","src":"13025:11:26"}]},"documentation":{"id":5963,"nodeType":"StructuredDocumentation","src":"12265:329:26","text":" @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":6014,"implemented":true,"kind":"function","modifiers":[],"name":"_lowerBinaryLookup","nameLocation":"12608:18:26","nodeType":"FunctionDefinition","parameters":{"id":5974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5967,"mutability":"mutable","name":"self","nameLocation":"12660:4:26","nodeType":"VariableDeclaration","scope":6014,"src":"12636:28:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":5965,"nodeType":"UserDefinedTypeName","pathNode":{"id":5964,"name":"Checkpoint224","nameLocations":["12636:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":5622,"src":"12636:13:26"},"referencedDeclaration":5622,"src":"12636:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":5966,"nodeType":"ArrayTypeName","src":"12636:15:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":5969,"mutability":"mutable","name":"key","nameLocation":"12681:3:26","nodeType":"VariableDeclaration","scope":6014,"src":"12674:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5968,"name":"uint32","nodeType":"ElementaryTypeName","src":"12674:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5971,"mutability":"mutable","name":"low","nameLocation":"12702:3:26","nodeType":"VariableDeclaration","scope":6014,"src":"12694:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5970,"name":"uint256","nodeType":"ElementaryTypeName","src":"12694:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5973,"mutability":"mutable","name":"high","nameLocation":"12723:4:26","nodeType":"VariableDeclaration","scope":6014,"src":"12715:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5972,"name":"uint256","nodeType":"ElementaryTypeName","src":"12715:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12626:107:26"},"returnParameters":{"id":5977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5976,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6014,"src":"12756:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5975,"name":"uint256","nodeType":"ElementaryTypeName","src":"12756:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12755:9:26"},"scope":6447,"src":"12599:444:26","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6028,"nodeType":"Block","src":"13332:125:26","statements":[{"AST":{"nodeType":"YulBlock","src":"13351:100:26","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13372:1:26","type":"","value":"0"},{"name":"self.slot","nodeType":"YulIdentifier","src":"13375:9:26"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13365:6:26"},"nodeType":"YulFunctionCall","src":"13365:20:26"},"nodeType":"YulExpressionStatement","src":"13365:20:26"},{"nodeType":"YulAssignment","src":"13398:43:26","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13427:1:26","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13430:4:26","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"13417:9:26"},"nodeType":"YulFunctionCall","src":"13417:18:26"},{"name":"pos","nodeType":"YulIdentifier","src":"13437:3:26"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13413:3:26"},"nodeType":"YulFunctionCall","src":"13413:28:26"},"variableNames":[{"name":"result.slot","nodeType":"YulIdentifier","src":"13398:11:26"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":6021,"isOffset":false,"isSlot":false,"src":"13437:3:26","valueSize":1},{"declaration":6025,"isOffset":false,"isSlot":true,"src":"13398:11:26","suffix":"slot","valueSize":1},{"declaration":6019,"isOffset":false,"isSlot":true,"src":"13375:9:26","suffix":"slot","valueSize":1}],"id":6027,"nodeType":"InlineAssembly","src":"13342:109:26"}]},"documentation":{"id":6015,"nodeType":"StructuredDocumentation","src":"13049:132:26","text":" @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds."},"id":6029,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeAccess","nameLocation":"13195:13:26","nodeType":"FunctionDefinition","parameters":{"id":6022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6019,"mutability":"mutable","name":"self","nameLocation":"13233:4:26","nodeType":"VariableDeclaration","scope":6029,"src":"13209:28:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":6017,"nodeType":"UserDefinedTypeName","pathNode":{"id":6016,"name":"Checkpoint224","nameLocations":["13209:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":5622,"src":"13209:13:26"},"referencedDeclaration":5622,"src":"13209:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":6018,"nodeType":"ArrayTypeName","src":"13209:15:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$5622_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":6021,"mutability":"mutable","name":"pos","nameLocation":"13247:3:26","nodeType":"VariableDeclaration","scope":6029,"src":"13239:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6020,"name":"uint256","nodeType":"ElementaryTypeName","src":"13239:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13208:43:26"},"returnParameters":{"id":6026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6025,"mutability":"mutable","name":"result","nameLocation":"13320:6:26","nodeType":"VariableDeclaration","scope":6029,"src":"13298:28:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"},"typeName":{"id":6024,"nodeType":"UserDefinedTypeName","pathNode":{"id":6023,"name":"Checkpoint224","nameLocations":["13298:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":5622,"src":"13298:13:26"},"referencedDeclaration":5622,"src":"13298:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$5622_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"visibility":"internal"}],"src":"13297:30:26"},"scope":6447,"src":"13186:271:26","stateMutability":"pure","virtual":false,"visibility":"private"},{"canonicalName":"CheckpointsUpgradeable.Trace160","id":6034,"members":[{"constant":false,"id":6033,"mutability":"mutable","name":"_checkpoints","nameLocation":"13505:12:26","nodeType":"VariableDeclaration","scope":6034,"src":"13489:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":6031,"nodeType":"UserDefinedTypeName","pathNode":{"id":6030,"name":"Checkpoint160","nameLocations":["13489:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":6039,"src":"13489:13:26"},"referencedDeclaration":6039,"src":"13489:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":6032,"nodeType":"ArrayTypeName","src":"13489:15:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"}],"name":"Trace160","nameLocation":"13470:8:26","nodeType":"StructDefinition","scope":6447,"src":"13463:61:26","visibility":"public"},{"canonicalName":"CheckpointsUpgradeable.Checkpoint160","id":6039,"members":[{"constant":false,"id":6036,"mutability":"mutable","name":"_key","nameLocation":"13568:4:26","nodeType":"VariableDeclaration","scope":6039,"src":"13561:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6035,"name":"uint96","nodeType":"ElementaryTypeName","src":"13561:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":6038,"mutability":"mutable","name":"_value","nameLocation":"13590:6:26","nodeType":"VariableDeclaration","scope":6039,"src":"13582:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6037,"name":"uint160","nodeType":"ElementaryTypeName","src":"13582:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"Checkpoint160","nameLocation":"13537:13:26","nodeType":"StructDefinition","scope":6447,"src":"13530:73:26","visibility":"public"},{"body":{"id":6061,"nodeType":"Block","src":"13906:62:26","statements":[{"expression":{"arguments":[{"expression":{"id":6055,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"13931:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":6056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13936:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":6033,"src":"13931:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":6057,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"13950:3:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":6058,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"13955:5:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6054,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[5493,5910,6327],"referencedDeclaration":6327,"src":"13923:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint160_$returns$_t_uint160_$_t_uint160_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint160) returns (uint160,uint160)"}},"id":6059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13923:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"functionReturnParameters":6053,"id":6060,"nodeType":"Return","src":"13916:45:26"}]},"documentation":{"id":6040,"nodeType":"StructuredDocumentation","src":"13609:162:26","text":" @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\n Returns previous value and new value."},"id":6062,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"13785:4:26","nodeType":"FunctionDefinition","parameters":{"id":6048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6043,"mutability":"mutable","name":"self","nameLocation":"13816:4:26","nodeType":"VariableDeclaration","scope":6062,"src":"13799:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":6042,"nodeType":"UserDefinedTypeName","pathNode":{"id":6041,"name":"Trace160","nameLocations":["13799:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6034,"src":"13799:8:26"},"referencedDeclaration":6034,"src":"13799:8:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"},{"constant":false,"id":6045,"mutability":"mutable","name":"key","nameLocation":"13837:3:26","nodeType":"VariableDeclaration","scope":6062,"src":"13830:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6044,"name":"uint96","nodeType":"ElementaryTypeName","src":"13830:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":6047,"mutability":"mutable","name":"value","nameLocation":"13858:5:26","nodeType":"VariableDeclaration","scope":6062,"src":"13850:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6046,"name":"uint160","nodeType":"ElementaryTypeName","src":"13850:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"13789:80:26"},"returnParameters":{"id":6053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6062,"src":"13888:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6049,"name":"uint160","nodeType":"ElementaryTypeName","src":"13888:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6062,"src":"13897:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6051,"name":"uint160","nodeType":"ElementaryTypeName","src":"13897:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"13887:18:26"},"scope":6447,"src":"13776:192:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6101,"nodeType":"Block","src":"14206:207:26","statements":[{"assignments":[6074],"declarations":[{"constant":false,"id":6074,"mutability":"mutable","name":"len","nameLocation":"14224:3:26","nodeType":"VariableDeclaration","scope":6101,"src":"14216:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6073,"name":"uint256","nodeType":"ElementaryTypeName","src":"14216:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6078,"initialValue":{"expression":{"expression":{"id":6075,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6066,"src":"14230:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":6076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14235:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":6033,"src":"14230:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":6077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14248:6:26","memberName":"length","nodeType":"MemberAccess","src":"14230:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14216:38:26"},{"assignments":[6080],"declarations":[{"constant":false,"id":6080,"mutability":"mutable","name":"pos","nameLocation":"14272:3:26","nodeType":"VariableDeclaration","scope":6101,"src":"14264:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6079,"name":"uint256","nodeType":"ElementaryTypeName","src":"14264:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6088,"initialValue":{"arguments":[{"expression":{"id":6082,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6066,"src":"14297:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":6083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14302:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":6033,"src":"14297:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":6084,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6068,"src":"14316:3:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"hexValue":"30","id":6085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14321:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":6086,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"14324:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6081,"name":"_lowerBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5597,6014,6431],"referencedDeclaration":6431,"src":"14278:18:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256) view returns (uint256)"}},"id":6087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14278:50:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14264:64:26"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6089,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6080,"src":"14345:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6090,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"14352:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14345:10:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":6094,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6066,"src":"14376:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":6095,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14381:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":6033,"src":"14376:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":6096,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6080,"src":"14395:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6093,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6446,"src":"14362:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$6039_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":6097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14362:37:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":6098,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14400:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":6038,"src":"14362:44:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14345:61:26","trueExpression":{"hexValue":"30","id":6092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14358:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":6072,"id":6100,"nodeType":"Return","src":"14338:68:26"}]},"documentation":{"id":6063,"nodeType":"StructuredDocumentation","src":"13974:139:26","text":" @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none."},"id":6102,"implemented":true,"kind":"function","modifiers":[],"name":"lowerLookup","nameLocation":"14127:11:26","nodeType":"FunctionDefinition","parameters":{"id":6069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6066,"mutability":"mutable","name":"self","nameLocation":"14156:4:26","nodeType":"VariableDeclaration","scope":6102,"src":"14139:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":6065,"nodeType":"UserDefinedTypeName","pathNode":{"id":6064,"name":"Trace160","nameLocations":["14139:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6034,"src":"14139:8:26"},"referencedDeclaration":6034,"src":"14139:8:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"},{"constant":false,"id":6068,"mutability":"mutable","name":"key","nameLocation":"14169:3:26","nodeType":"VariableDeclaration","scope":6102,"src":"14162:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6067,"name":"uint96","nodeType":"ElementaryTypeName","src":"14162:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"14138:35:26"},"returnParameters":{"id":6072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6071,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6102,"src":"14197:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6070,"name":"uint160","nodeType":"ElementaryTypeName","src":"14197:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"14196:9:26"},"scope":6447,"src":"14118:295:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6143,"nodeType":"Block","src":"14628:209:26","statements":[{"assignments":[6114],"declarations":[{"constant":false,"id":6114,"mutability":"mutable","name":"len","nameLocation":"14646:3:26","nodeType":"VariableDeclaration","scope":6143,"src":"14638:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6113,"name":"uint256","nodeType":"ElementaryTypeName","src":"14638:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6118,"initialValue":{"expression":{"expression":{"id":6115,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6106,"src":"14652:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":6116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14657:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":6033,"src":"14652:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":6117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14670:6:26","memberName":"length","nodeType":"MemberAccess","src":"14652:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14638:38:26"},{"assignments":[6120],"declarations":[{"constant":false,"id":6120,"mutability":"mutable","name":"pos","nameLocation":"14694:3:26","nodeType":"VariableDeclaration","scope":6143,"src":"14686:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6119,"name":"uint256","nodeType":"ElementaryTypeName","src":"14686:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6128,"initialValue":{"arguments":[{"expression":{"id":6122,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6106,"src":"14719:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":6123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14724:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":6033,"src":"14719:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":6124,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6108,"src":"14738:3:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"hexValue":"30","id":6125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14743:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":6126,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6114,"src":"14746:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6121,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[5545,5962,6379],"referencedDeclaration":6379,"src":"14700:18:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256) view returns (uint256)"}},"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14700:50:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14686:64:26"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6129,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6120,"src":"14767:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14774:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14767:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":6134,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6106,"src":"14796:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":6135,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14801:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":6033,"src":"14796:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6136,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6120,"src":"14815:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14821:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14815:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6133,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6446,"src":"14782:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$6039_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":6139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14782:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":6140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14824:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":6038,"src":"14782:48:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14767:63:26","trueExpression":{"hexValue":"30","id":6132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14778:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":6112,"id":6142,"nodeType":"Return","src":"14760:70:26"}]},"documentation":{"id":6103,"nodeType":"StructuredDocumentation","src":"14419:116:26","text":" @dev Returns the value in the most recent checkpoint with key lower or equal than the search key."},"id":6144,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookup","nameLocation":"14549:11:26","nodeType":"FunctionDefinition","parameters":{"id":6109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6106,"mutability":"mutable","name":"self","nameLocation":"14578:4:26","nodeType":"VariableDeclaration","scope":6144,"src":"14561:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":6105,"nodeType":"UserDefinedTypeName","pathNode":{"id":6104,"name":"Trace160","nameLocations":["14561:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6034,"src":"14561:8:26"},"referencedDeclaration":6034,"src":"14561:8:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"},{"constant":false,"id":6108,"mutability":"mutable","name":"key","nameLocation":"14591:3:26","nodeType":"VariableDeclaration","scope":6144,"src":"14584:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6107,"name":"uint96","nodeType":"ElementaryTypeName","src":"14584:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"14560:35:26"},"returnParameters":{"id":6112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6144,"src":"14619:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6110,"name":"uint160","nodeType":"ElementaryTypeName","src":"14619:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"14618:9:26"},"scope":6447,"src":"14540:297:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6173,"nodeType":"Block","src":"15028:135:26","statements":[{"assignments":[6154],"declarations":[{"constant":false,"id":6154,"mutability":"mutable","name":"pos","nameLocation":"15046:3:26","nodeType":"VariableDeclaration","scope":6173,"src":"15038:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6153,"name":"uint256","nodeType":"ElementaryTypeName","src":"15038:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6158,"initialValue":{"expression":{"expression":{"id":6155,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6148,"src":"15052:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":6156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15057:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":6033,"src":"15052:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":6157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15070:6:26","memberName":"length","nodeType":"MemberAccess","src":"15052:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15038:38:26"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6159,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6154,"src":"15093:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15100:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15093:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":6164,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6148,"src":"15122:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":6165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15127:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":6033,"src":"15122:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6166,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6154,"src":"15141:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15147:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15141:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6163,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6446,"src":"15108:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$6039_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":6169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15108:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":6170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15150:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":6038,"src":"15108:48:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15093:63:26","trueExpression":{"hexValue":"30","id":6162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15104:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":6152,"id":6172,"nodeType":"Return","src":"15086:70:26"}]},"documentation":{"id":6145,"nodeType":"StructuredDocumentation","src":"14843:109:26","text":" @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints."},"id":6174,"implemented":true,"kind":"function","modifiers":[],"name":"latest","nameLocation":"14966:6:26","nodeType":"FunctionDefinition","parameters":{"id":6149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6148,"mutability":"mutable","name":"self","nameLocation":"14990:4:26","nodeType":"VariableDeclaration","scope":6174,"src":"14973:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":6147,"nodeType":"UserDefinedTypeName","pathNode":{"id":6146,"name":"Trace160","nameLocations":["14973:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6034,"src":"14973:8:26"},"referencedDeclaration":6034,"src":"14973:8:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"}],"src":"14972:23:26"},"returnParameters":{"id":6152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6174,"src":"15019:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6150,"name":"uint160","nodeType":"ElementaryTypeName","src":"15019:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"15018:9:26"},"scope":6447,"src":"14957:206:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6222,"nodeType":"Block","src":"15530:274:26","statements":[{"assignments":[6188],"declarations":[{"constant":false,"id":6188,"mutability":"mutable","name":"pos","nameLocation":"15548:3:26","nodeType":"VariableDeclaration","scope":6222,"src":"15540:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6187,"name":"uint256","nodeType":"ElementaryTypeName","src":"15540:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6192,"initialValue":{"expression":{"expression":{"id":6189,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6178,"src":"15554:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":6190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15559:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":6033,"src":"15554:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":6191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15572:6:26","memberName":"length","nodeType":"MemberAccess","src":"15554:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15540:38:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6193,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6188,"src":"15592:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15599:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15592:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6220,"nodeType":"Block","src":"15653:145:26","statements":[{"assignments":[6204],"declarations":[{"constant":false,"id":6204,"mutability":"mutable","name":"ckpt","nameLocation":"15688:4:26","nodeType":"VariableDeclaration","scope":6220,"src":"15667:25:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"},"typeName":{"id":6203,"nodeType":"UserDefinedTypeName","pathNode":{"id":6202,"name":"Checkpoint160","nameLocations":["15667:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":6039,"src":"15667:13:26"},"referencedDeclaration":6039,"src":"15667:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"visibility":"internal"}],"id":6212,"initialValue":{"arguments":[{"expression":{"id":6206,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6178,"src":"15709:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":6207,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15714:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":6033,"src":"15709:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6208,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6188,"src":"15728:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15734:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15728:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6205,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6446,"src":"15695:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$6039_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":6211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15695:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15667:69:26"},{"expression":{"components":[{"hexValue":"74727565","id":6213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15758:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":6214,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6204,"src":"15764:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":6215,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15769:4:26","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":6036,"src":"15764:9:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"expression":{"id":6216,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6204,"src":"15775:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":6217,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15780:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":6038,"src":"15775:11:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":6218,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15757:30:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint96_$_t_uint160_$","typeString":"tuple(bool,uint96,uint160)"}},"functionReturnParameters":6186,"id":6219,"nodeType":"Return","src":"15750:37:26"}]},"id":6221,"nodeType":"IfStatement","src":"15588:210:26","trueBody":{"id":6201,"nodeType":"Block","src":"15602:45:26","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":6196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15624:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15631:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":6198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15634:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6199,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15623:13:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":6186,"id":6200,"nodeType":"Return","src":"15616:20:26"}]}}]},"documentation":{"id":6175,"nodeType":"StructuredDocumentation","src":"15169:168:26","text":" @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n in the most recent checkpoint."},"id":6223,"implemented":true,"kind":"function","modifiers":[],"name":"latestCheckpoint","nameLocation":"15351:16:26","nodeType":"FunctionDefinition","parameters":{"id":6179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6178,"mutability":"mutable","name":"self","nameLocation":"15385:4:26","nodeType":"VariableDeclaration","scope":6223,"src":"15368:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":6177,"nodeType":"UserDefinedTypeName","pathNode":{"id":6176,"name":"Trace160","nameLocations":["15368:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6034,"src":"15368:8:26"},"referencedDeclaration":6034,"src":"15368:8:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"}],"src":"15367:23:26"},"returnParameters":{"id":6186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6181,"mutability":"mutable","name":"exists","nameLocation":"15456:6:26","nodeType":"VariableDeclaration","scope":6223,"src":"15451:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6180,"name":"bool","nodeType":"ElementaryTypeName","src":"15451:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6183,"mutability":"mutable","name":"_key","nameLocation":"15483:4:26","nodeType":"VariableDeclaration","scope":6223,"src":"15476:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6182,"name":"uint96","nodeType":"ElementaryTypeName","src":"15476:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":6185,"mutability":"mutable","name":"_value","nameLocation":"15509:6:26","nodeType":"VariableDeclaration","scope":6223,"src":"15501:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6184,"name":"uint160","nodeType":"ElementaryTypeName","src":"15501:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"15437:88:26"},"scope":6447,"src":"15342:462:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6236,"nodeType":"Block","src":"15943:48:26","statements":[{"expression":{"expression":{"expression":{"id":6232,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6227,"src":"15960:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":6233,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15965:12:26","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":6033,"src":"15960:17:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":6234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15978:6:26","memberName":"length","nodeType":"MemberAccess","src":"15960:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6231,"id":6235,"nodeType":"Return","src":"15953:31:26"}]},"documentation":{"id":6224,"nodeType":"StructuredDocumentation","src":"15810:57:26","text":" @dev Returns the number of checkpoint."},"id":6237,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"15881:6:26","nodeType":"FunctionDefinition","parameters":{"id":6228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6227,"mutability":"mutable","name":"self","nameLocation":"15905:4:26","nodeType":"VariableDeclaration","scope":6237,"src":"15888:21:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":6226,"nodeType":"UserDefinedTypeName","pathNode":{"id":6225,"name":"Trace160","nameLocations":["15888:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":6034,"src":"15888:8:26"},"referencedDeclaration":6034,"src":"15888:8:26","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$6034_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"}],"src":"15887:23:26"},"returnParameters":{"id":6231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6237,"src":"15934:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6229,"name":"uint256","nodeType":"ElementaryTypeName","src":"15934:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15933:9:26"},"scope":6447,"src":"15872:119:26","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6326,"nodeType":"Block","src":"16306:720:26","statements":[{"assignments":[6254],"declarations":[{"constant":false,"id":6254,"mutability":"mutable","name":"pos","nameLocation":"16324:3:26","nodeType":"VariableDeclaration","scope":6326,"src":"16316:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6253,"name":"uint256","nodeType":"ElementaryTypeName","src":"16316:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6257,"initialValue":{"expression":{"id":6255,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"16330:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},"id":6256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16335:6:26","memberName":"length","nodeType":"MemberAccess","src":"16330:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16316:25:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6258,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6254,"src":"16356:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16362:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16356:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6324,"nodeType":"Block","src":"16912:108:26","statements":[{"expression":{"arguments":[{"arguments":[{"id":6315,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"16957:3:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":6316,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"16970:5:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6314,"name":"Checkpoint160","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"16936:13:26","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint160_$6039_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":6317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["16951:4:26","16962:6:26"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"16936:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint160_$6039_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}],"expression":{"id":6311,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"16926:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},"id":6313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16931:4:26","memberName":"push","nodeType":"MemberAccess","src":"16926:9:26","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint160_$6039_storage_$returns$__$attached_to$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint160 storage ref)"}},"id":6318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16926:52:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6319,"nodeType":"ExpressionStatement","src":"16926:52:26"},{"expression":{"components":[{"hexValue":"30","id":6320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17000:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":6321,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"17003:5:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":6322,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16999:10:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint160_$","typeString":"tuple(int_const 0,uint160)"}},"functionReturnParameters":6252,"id":6323,"nodeType":"Return","src":"16992:17:26"}]},"id":6325,"nodeType":"IfStatement","src":"16352:668:26","trueBody":{"id":6310,"nodeType":"Block","src":"16365:541:26","statements":[{"assignments":[6263],"declarations":[{"constant":false,"id":6263,"mutability":"mutable","name":"last","nameLocation":"16452:4:26","nodeType":"VariableDeclaration","scope":6310,"src":"16431:25:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"},"typeName":{"id":6262,"nodeType":"UserDefinedTypeName","pathNode":{"id":6261,"name":"Checkpoint160","nameLocations":["16431:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":6039,"src":"16431:13:26"},"referencedDeclaration":6039,"src":"16431:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"visibility":"internal"}],"id":6270,"initialValue":{"arguments":[{"id":6265,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"16473:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6266,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6254,"src":"16479:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16485:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16479:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6264,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6446,"src":"16459:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$6039_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":6269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16459:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16431:56:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":6275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6272,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6263,"src":"16562:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":6273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16567:4:26","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":6036,"src":"16562:9:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6274,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"16575:3:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"16562:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e743a20696e76616c6964206b6579","id":6276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16580:25:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_b717461289064d78d4f64eae2786bccf758ed88a7bfa28ee6fa5093be89d54df","typeString":"literal_string \"Checkpoint: invalid key\""},"value":"Checkpoint: invalid key"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b717461289064d78d4f64eae2786bccf758ed88a7bfa28ee6fa5093be89d54df","typeString":"literal_string \"Checkpoint: invalid key\""}],"id":6271,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16554:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16554:52:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6278,"nodeType":"ExpressionStatement","src":"16554:52:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":6282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6279,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6263,"src":"16670:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":6280,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16675:4:26","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":6036,"src":"16670:9:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6281,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"16683:3:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"16670:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6303,"nodeType":"Block","src":"16770:85:26","statements":[{"expression":{"arguments":[{"arguments":[{"id":6298,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"16819:3:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":6299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"16832:5:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6297,"name":"Checkpoint160","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"16798:13:26","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint160_$6039_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":6300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["16813:4:26","16824:6:26"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"16798:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint160_$6039_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}],"expression":{"id":6294,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"16788:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},"id":6296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16793:4:26","memberName":"push","nodeType":"MemberAccess","src":"16788:9:26","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint160_$6039_storage_$returns$__$attached_to$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint160 storage ref)"}},"id":6301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16788:52:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6302,"nodeType":"ExpressionStatement","src":"16788:52:26"}]},"id":6304,"nodeType":"IfStatement","src":"16666:189:26","trueBody":{"id":6293,"nodeType":"Block","src":"16688:76:26","statements":[{"expression":{"id":6291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":6284,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"16720:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6285,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6254,"src":"16726:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16732:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16726:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6283,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6446,"src":"16706:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$6039_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":6288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16706:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":6289,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16735:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":6038,"src":"16706:35:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6290,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"16744:5:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"16706:43:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":6292,"nodeType":"ExpressionStatement","src":"16706:43:26"}]}},{"expression":{"components":[{"expression":{"id":6305,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6263,"src":"16876:4:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":6306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16881:6:26","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":6038,"src":"16876:11:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":6307,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6246,"src":"16889:5:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":6308,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16875:20:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"functionReturnParameters":6252,"id":6309,"nodeType":"Return","src":"16868:27:26"}]}}]},"documentation":{"id":6238,"nodeType":"StructuredDocumentation","src":"15997:165:26","text":" @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n or by updating the last one."},"id":6327,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"16176:7:26","nodeType":"FunctionDefinition","parameters":{"id":6247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6242,"mutability":"mutable","name":"self","nameLocation":"16217:4:26","nodeType":"VariableDeclaration","scope":6327,"src":"16193:28:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":6240,"nodeType":"UserDefinedTypeName","pathNode":{"id":6239,"name":"Checkpoint160","nameLocations":["16193:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":6039,"src":"16193:13:26"},"referencedDeclaration":6039,"src":"16193:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":6241,"nodeType":"ArrayTypeName","src":"16193:15:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":6244,"mutability":"mutable","name":"key","nameLocation":"16238:3:26","nodeType":"VariableDeclaration","scope":6327,"src":"16231:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6243,"name":"uint96","nodeType":"ElementaryTypeName","src":"16231:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":6246,"mutability":"mutable","name":"value","nameLocation":"16259:5:26","nodeType":"VariableDeclaration","scope":6327,"src":"16251:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6245,"name":"uint160","nodeType":"ElementaryTypeName","src":"16251:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"16183:87:26"},"returnParameters":{"id":6252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6249,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6327,"src":"16288:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6248,"name":"uint160","nodeType":"ElementaryTypeName","src":"16288:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":6251,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6327,"src":"16297:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":6250,"name":"uint160","nodeType":"ElementaryTypeName","src":"16297:7:26","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"16287:18:26"},"scope":6447,"src":"16167:859:26","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6378,"nodeType":"Block","src":"17523:278:26","statements":[{"body":{"id":6374,"nodeType":"Block","src":"17552:222:26","statements":[{"assignments":[6347],"declarations":[{"constant":false,"id":6347,"mutability":"mutable","name":"mid","nameLocation":"17574:3:26","nodeType":"VariableDeclaration","scope":6374,"src":"17566:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6346,"name":"uint256","nodeType":"ElementaryTypeName","src":"17566:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6353,"initialValue":{"arguments":[{"id":6350,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"17604:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6351,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6338,"src":"17609:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6348,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"17580:15:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$8170_$","typeString":"type(library MathUpgradeable)"}},"id":6349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17596:7:26","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":7371,"src":"17580:23:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17580:34:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17566:48:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":6360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6355,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6332,"src":"17646:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},{"id":6356,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6347,"src":"17652:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6354,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6446,"src":"17632:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$6039_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":6357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17632:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":6358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17657:4:26","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":6036,"src":"17632:29:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6359,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6334,"src":"17664:3:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"17632:35:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6372,"nodeType":"Block","src":"17718:46:26","statements":[{"expression":{"id":6370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6366,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"17736:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6367,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6347,"src":"17742:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17748:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17742:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17736:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6371,"nodeType":"ExpressionStatement","src":"17736:13:26"}]},"id":6373,"nodeType":"IfStatement","src":"17628:136:26","trueBody":{"id":6365,"nodeType":"Block","src":"17669:43:26","statements":[{"expression":{"id":6363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6361,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6338,"src":"17687:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6362,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6347,"src":"17694:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17687:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6364,"nodeType":"ExpressionStatement","src":"17687:10:26"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6343,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"17540:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6344,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6338,"src":"17546:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17540:10:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6375,"nodeType":"WhileStatement","src":"17533:241:26"},{"expression":{"id":6376,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6338,"src":"17790:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6342,"id":6377,"nodeType":"Return","src":"17783:11:26"}]},"documentation":{"id":6328,"nodeType":"StructuredDocumentation","src":"17032:320:26","text":" @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":6379,"implemented":true,"kind":"function","modifiers":[],"name":"_upperBinaryLookup","nameLocation":"17366:18:26","nodeType":"FunctionDefinition","parameters":{"id":6339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6332,"mutability":"mutable","name":"self","nameLocation":"17418:4:26","nodeType":"VariableDeclaration","scope":6379,"src":"17394:28:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":6330,"nodeType":"UserDefinedTypeName","pathNode":{"id":6329,"name":"Checkpoint160","nameLocations":["17394:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":6039,"src":"17394:13:26"},"referencedDeclaration":6039,"src":"17394:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":6331,"nodeType":"ArrayTypeName","src":"17394:15:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":6334,"mutability":"mutable","name":"key","nameLocation":"17439:3:26","nodeType":"VariableDeclaration","scope":6379,"src":"17432:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6333,"name":"uint96","nodeType":"ElementaryTypeName","src":"17432:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":6336,"mutability":"mutable","name":"low","nameLocation":"17460:3:26","nodeType":"VariableDeclaration","scope":6379,"src":"17452:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6335,"name":"uint256","nodeType":"ElementaryTypeName","src":"17452:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6338,"mutability":"mutable","name":"high","nameLocation":"17481:4:26","nodeType":"VariableDeclaration","scope":6379,"src":"17473:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6337,"name":"uint256","nodeType":"ElementaryTypeName","src":"17473:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17384:107:26"},"returnParameters":{"id":6342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6341,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6379,"src":"17514:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6340,"name":"uint256","nodeType":"ElementaryTypeName","src":"17514:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17513:9:26"},"scope":6447,"src":"17357:444:26","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6430,"nodeType":"Block","src":"18307:278:26","statements":[{"body":{"id":6426,"nodeType":"Block","src":"18336:222:26","statements":[{"assignments":[6399],"declarations":[{"constant":false,"id":6399,"mutability":"mutable","name":"mid","nameLocation":"18358:3:26","nodeType":"VariableDeclaration","scope":6426,"src":"18350:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6398,"name":"uint256","nodeType":"ElementaryTypeName","src":"18350:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6405,"initialValue":{"arguments":[{"id":6402,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6388,"src":"18388:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6403,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6390,"src":"18393:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6400,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"18364:15:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$8170_$","typeString":"type(library MathUpgradeable)"}},"id":6401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18380:7:26","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":7371,"src":"18364:23:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18364:34:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18350:48:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":6412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6407,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6384,"src":"18430:4:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},{"id":6408,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6399,"src":"18436:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6406,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[5612,6029,6446],"referencedDeclaration":6446,"src":"18416:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$6039_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":6409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18416:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":6410,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18441:4:26","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":6036,"src":"18416:29:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6411,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6386,"src":"18448:3:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"18416:35:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6424,"nodeType":"Block","src":"18505:43:26","statements":[{"expression":{"id":6422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6420,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6390,"src":"18523:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6421,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6399,"src":"18530:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18523:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6423,"nodeType":"ExpressionStatement","src":"18523:10:26"}]},"id":6425,"nodeType":"IfStatement","src":"18412:136:26","trueBody":{"id":6419,"nodeType":"Block","src":"18453:46:26","statements":[{"expression":{"id":6417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6413,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6388,"src":"18471:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6414,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6399,"src":"18477:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18483:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18477:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18471:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6418,"nodeType":"ExpressionStatement","src":"18471:13:26"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6395,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6388,"src":"18324:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6396,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6390,"src":"18330:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18324:10:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6427,"nodeType":"WhileStatement","src":"18317:241:26"},{"expression":{"id":6428,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6390,"src":"18574:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6394,"id":6429,"nodeType":"Return","src":"18567:11:26"}]},"documentation":{"id":6380,"nodeType":"StructuredDocumentation","src":"17807:329:26","text":" @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":6431,"implemented":true,"kind":"function","modifiers":[],"name":"_lowerBinaryLookup","nameLocation":"18150:18:26","nodeType":"FunctionDefinition","parameters":{"id":6391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6384,"mutability":"mutable","name":"self","nameLocation":"18202:4:26","nodeType":"VariableDeclaration","scope":6431,"src":"18178:28:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":6382,"nodeType":"UserDefinedTypeName","pathNode":{"id":6381,"name":"Checkpoint160","nameLocations":["18178:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":6039,"src":"18178:13:26"},"referencedDeclaration":6039,"src":"18178:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":6383,"nodeType":"ArrayTypeName","src":"18178:15:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":6386,"mutability":"mutable","name":"key","nameLocation":"18223:3:26","nodeType":"VariableDeclaration","scope":6431,"src":"18216:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":6385,"name":"uint96","nodeType":"ElementaryTypeName","src":"18216:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":6388,"mutability":"mutable","name":"low","nameLocation":"18244:3:26","nodeType":"VariableDeclaration","scope":6431,"src":"18236:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6387,"name":"uint256","nodeType":"ElementaryTypeName","src":"18236:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6390,"mutability":"mutable","name":"high","nameLocation":"18265:4:26","nodeType":"VariableDeclaration","scope":6431,"src":"18257:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6389,"name":"uint256","nodeType":"ElementaryTypeName","src":"18257:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18168:107:26"},"returnParameters":{"id":6394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6393,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6431,"src":"18298:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6392,"name":"uint256","nodeType":"ElementaryTypeName","src":"18298:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18297:9:26"},"scope":6447,"src":"18141:444:26","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6445,"nodeType":"Block","src":"18874:125:26","statements":[{"AST":{"nodeType":"YulBlock","src":"18893:100:26","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18914:1:26","type":"","value":"0"},{"name":"self.slot","nodeType":"YulIdentifier","src":"18917:9:26"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18907:6:26"},"nodeType":"YulFunctionCall","src":"18907:20:26"},"nodeType":"YulExpressionStatement","src":"18907:20:26"},{"nodeType":"YulAssignment","src":"18940:43:26","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18969:1:26","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18972:4:26","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"18959:9:26"},"nodeType":"YulFunctionCall","src":"18959:18:26"},{"name":"pos","nodeType":"YulIdentifier","src":"18979:3:26"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18955:3:26"},"nodeType":"YulFunctionCall","src":"18955:28:26"},"variableNames":[{"name":"result.slot","nodeType":"YulIdentifier","src":"18940:11:26"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":6438,"isOffset":false,"isSlot":false,"src":"18979:3:26","valueSize":1},{"declaration":6442,"isOffset":false,"isSlot":true,"src":"18940:11:26","suffix":"slot","valueSize":1},{"declaration":6436,"isOffset":false,"isSlot":true,"src":"18917:9:26","suffix":"slot","valueSize":1}],"id":6444,"nodeType":"InlineAssembly","src":"18884:109:26"}]},"documentation":{"id":6432,"nodeType":"StructuredDocumentation","src":"18591:132:26","text":" @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds."},"id":6446,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeAccess","nameLocation":"18737:13:26","nodeType":"FunctionDefinition","parameters":{"id":6439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6436,"mutability":"mutable","name":"self","nameLocation":"18775:4:26","nodeType":"VariableDeclaration","scope":6446,"src":"18751:28:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":6434,"nodeType":"UserDefinedTypeName","pathNode":{"id":6433,"name":"Checkpoint160","nameLocations":["18751:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":6039,"src":"18751:13:26"},"referencedDeclaration":6039,"src":"18751:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":6435,"nodeType":"ArrayTypeName","src":"18751:15:26","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$6039_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":6438,"mutability":"mutable","name":"pos","nameLocation":"18789:3:26","nodeType":"VariableDeclaration","scope":6446,"src":"18781:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6437,"name":"uint256","nodeType":"ElementaryTypeName","src":"18781:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18750:43:26"},"returnParameters":{"id":6443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6442,"mutability":"mutable","name":"result","nameLocation":"18862:6:26","nodeType":"VariableDeclaration","scope":6446,"src":"18840:28:26","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"},"typeName":{"id":6441,"nodeType":"UserDefinedTypeName","pathNode":{"id":6440,"name":"Checkpoint160","nameLocations":["18840:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":6039,"src":"18840:13:26"},"referencedDeclaration":6039,"src":"18840:13:26","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$6039_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"visibility":"internal"}],"src":"18839:30:26"},"scope":6447,"src":"18728:271:26","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":6448,"src":"730:18271:26","usedErrors":[]}],"src":"193:18809:26"},"id":26},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"ContextUpgradeable":[6489],"Initializable":[1466]},"id":6490,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6449,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:27"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":6450,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6490,"sourceUnit":1467,"src":"110:42:27","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6452,"name":"Initializable","nameLocations":["691:13:27"],"nodeType":"IdentifierPath","referencedDeclaration":1466,"src":"691:13:27"},"id":6453,"nodeType":"InheritanceSpecifier","src":"691:13:27"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":6451,"nodeType":"StructuredDocumentation","src":"154:496:27","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":6489,"linearizedBaseContracts":[6489,1466],"name":"ContextUpgradeable","nameLocation":"669:18:27","nodeType":"ContractDefinition","nodes":[{"body":{"id":6458,"nodeType":"Block","src":"763:7:27","statements":[]},"id":6459,"implemented":true,"kind":"function","modifiers":[{"id":6456,"kind":"modifierInvocation","modifierName":{"id":6455,"name":"onlyInitializing","nameLocations":["746:16:27"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"746:16:27"},"nodeType":"ModifierInvocation","src":"746:16:27"}],"name":"__Context_init","nameLocation":"720:14:27","nodeType":"FunctionDefinition","parameters":{"id":6454,"nodeType":"ParameterList","parameters":[],"src":"734:2:27"},"returnParameters":{"id":6457,"nodeType":"ParameterList","parameters":[],"src":"763:0:27"},"scope":6489,"src":"711:59:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6464,"nodeType":"Block","src":"838:7:27","statements":[]},"id":6465,"implemented":true,"kind":"function","modifiers":[{"id":6462,"kind":"modifierInvocation","modifierName":{"id":6461,"name":"onlyInitializing","nameLocations":["821:16:27"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"821:16:27"},"nodeType":"ModifierInvocation","src":"821:16:27"}],"name":"__Context_init_unchained","nameLocation":"785:24:27","nodeType":"FunctionDefinition","parameters":{"id":6460,"nodeType":"ParameterList","parameters":[],"src":"809:2:27"},"returnParameters":{"id":6463,"nodeType":"ParameterList","parameters":[],"src":"838:0:27"},"scope":6489,"src":"776:69:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6473,"nodeType":"Block","src":"912:34:27","statements":[{"expression":{"expression":{"id":6470,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"929:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"933:6:27","memberName":"sender","nodeType":"MemberAccess","src":"929:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6469,"id":6472,"nodeType":"Return","src":"922:17:27"}]},"id":6474,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"859:10:27","nodeType":"FunctionDefinition","parameters":{"id":6466,"nodeType":"ParameterList","parameters":[],"src":"869:2:27"},"returnParameters":{"id":6469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6468,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6474,"src":"903:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6467,"name":"address","nodeType":"ElementaryTypeName","src":"903:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"902:9:27"},"scope":6489,"src":"850:96:27","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":6482,"nodeType":"Block","src":"1019:32:27","statements":[{"expression":{"expression":{"id":6479,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1036:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1040:4:27","memberName":"data","nodeType":"MemberAccess","src":"1036:8:27","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":6478,"id":6481,"nodeType":"Return","src":"1029:15:27"}]},"id":6483,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"961:8:27","nodeType":"FunctionDefinition","parameters":{"id":6475,"nodeType":"ParameterList","parameters":[],"src":"969:2:27"},"returnParameters":{"id":6478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6477,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6483,"src":"1003:14:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6476,"name":"bytes","nodeType":"ElementaryTypeName","src":"1003:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1002:16:27"},"scope":6489,"src":"952:99:27","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":6484,"nodeType":"StructuredDocumentation","src":"1057:254:27","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":6488,"mutability":"mutable","name":"__gap","nameLocation":"1336:5:27","nodeType":"VariableDeclaration","scope":6489,"src":"1316:25:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":6485,"name":"uint256","nodeType":"ElementaryTypeName","src":"1316:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6487,"length":{"hexValue":"3530","id":6486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1324:2:27","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1316:11:27","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":6490,"src":"651:693:27","usedErrors":[]}],"src":"86:1259:27"},"id":27},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","exportedSymbols":{"CountersUpgradeable":[6563]},"id":6564,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6491,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"87:23:28"},{"abstract":false,"baseContracts":[],"canonicalName":"CountersUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":6492,"nodeType":"StructuredDocumentation","src":"112:311:28","text":" @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"},"fullyImplemented":true,"id":6563,"linearizedBaseContracts":[6563],"name":"CountersUpgradeable","nameLocation":"432:19:28","nodeType":"ContractDefinition","nodes":[{"canonicalName":"CountersUpgradeable.Counter","id":6495,"members":[{"constant":false,"id":6494,"mutability":"mutable","name":"_value","nameLocation":"805:6:28","nodeType":"VariableDeclaration","scope":6495,"src":"797:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6493,"name":"uint256","nodeType":"ElementaryTypeName","src":"797:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Counter","nameLocation":"465:7:28","nodeType":"StructDefinition","scope":6563,"src":"458:374:28","visibility":"public"},{"body":{"id":6506,"nodeType":"Block","src":"912:38:28","statements":[{"expression":{"expression":{"id":6503,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6498,"src":"929:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":6504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"937:6:28","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":6494,"src":"929:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6502,"id":6505,"nodeType":"Return","src":"922:21:28"}]},"id":6507,"implemented":true,"kind":"function","modifiers":[],"name":"current","nameLocation":"847:7:28","nodeType":"FunctionDefinition","parameters":{"id":6499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6498,"mutability":"mutable","name":"counter","nameLocation":"871:7:28","nodeType":"VariableDeclaration","scope":6507,"src":"855:23:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":6497,"nodeType":"UserDefinedTypeName","pathNode":{"id":6496,"name":"Counter","nameLocations":["855:7:28"],"nodeType":"IdentifierPath","referencedDeclaration":6495,"src":"855:7:28"},"referencedDeclaration":6495,"src":"855:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"854:25:28"},"returnParameters":{"id":6502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6501,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6507,"src":"903:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6500,"name":"uint256","nodeType":"ElementaryTypeName","src":"903:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"902:9:28"},"scope":6563,"src":"838:112:28","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6520,"nodeType":"Block","src":"1009:70:28","statements":[{"id":6519,"nodeType":"UncheckedBlock","src":"1019:54:28","statements":[{"expression":{"id":6517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6513,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6510,"src":"1043:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":6515,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1051:6:28","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":6494,"src":"1043:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":6516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1061:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1043:19:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6518,"nodeType":"ExpressionStatement","src":"1043:19:28"}]}]},"id":6521,"implemented":true,"kind":"function","modifiers":[],"name":"increment","nameLocation":"965:9:28","nodeType":"FunctionDefinition","parameters":{"id":6511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6510,"mutability":"mutable","name":"counter","nameLocation":"991:7:28","nodeType":"VariableDeclaration","scope":6521,"src":"975:23:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":6509,"nodeType":"UserDefinedTypeName","pathNode":{"id":6508,"name":"Counter","nameLocations":["975:7:28"],"nodeType":"IdentifierPath","referencedDeclaration":6495,"src":"975:7:28"},"referencedDeclaration":6495,"src":"975:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"974:25:28"},"returnParameters":{"id":6512,"nodeType":"ParameterList","parameters":[],"src":"1009:0:28"},"scope":6563,"src":"956:123:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6548,"nodeType":"Block","src":"1138:176:28","statements":[{"assignments":[6528],"declarations":[{"constant":false,"id":6528,"mutability":"mutable","name":"value","nameLocation":"1156:5:28","nodeType":"VariableDeclaration","scope":6548,"src":"1148:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6527,"name":"uint256","nodeType":"ElementaryTypeName","src":"1148:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6531,"initialValue":{"expression":{"id":6529,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6524,"src":"1164:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":6530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1172:6:28","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":6494,"src":"1164:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1148:30:28"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6533,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"1196:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1204:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1196:9:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436f756e7465723a2064656372656d656e74206f766572666c6f77","id":6536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1207:29:28","typeDescriptions":{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""},"value":"Counter: decrement overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""}],"id":6532,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1188:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:49:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6538,"nodeType":"ExpressionStatement","src":"1188:49:28"},{"id":6547,"nodeType":"UncheckedBlock","src":"1247:61:28","statements":[{"expression":{"id":6545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6539,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6524,"src":"1271:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":6541,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1279:6:28","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":6494,"src":"1271:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6542,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"1288:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1296:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1288:9:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1271:26:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6546,"nodeType":"ExpressionStatement","src":"1271:26:28"}]}]},"id":6549,"implemented":true,"kind":"function","modifiers":[],"name":"decrement","nameLocation":"1094:9:28","nodeType":"FunctionDefinition","parameters":{"id":6525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6524,"mutability":"mutable","name":"counter","nameLocation":"1120:7:28","nodeType":"VariableDeclaration","scope":6549,"src":"1104:23:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":6523,"nodeType":"UserDefinedTypeName","pathNode":{"id":6522,"name":"Counter","nameLocations":["1104:7:28"],"nodeType":"IdentifierPath","referencedDeclaration":6495,"src":"1104:7:28"},"referencedDeclaration":6495,"src":"1104:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"1103:25:28"},"returnParameters":{"id":6526,"nodeType":"ParameterList","parameters":[],"src":"1138:0:28"},"scope":6563,"src":"1085:229:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6561,"nodeType":"Block","src":"1369:35:28","statements":[{"expression":{"id":6559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":6555,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6552,"src":"1379:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":6557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1387:6:28","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":6494,"src":"1379:14:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":6558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1396:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1379:18:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6560,"nodeType":"ExpressionStatement","src":"1379:18:28"}]},"id":6562,"implemented":true,"kind":"function","modifiers":[],"name":"reset","nameLocation":"1329:5:28","nodeType":"FunctionDefinition","parameters":{"id":6553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6552,"mutability":"mutable","name":"counter","nameLocation":"1351:7:28","nodeType":"VariableDeclaration","scope":6562,"src":"1335:23:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":6551,"nodeType":"UserDefinedTypeName","pathNode":{"id":6550,"name":"Counter","nameLocations":["1335:7:28"],"nodeType":"IdentifierPath","referencedDeclaration":6495,"src":"1335:7:28"},"referencedDeclaration":6495,"src":"1335:7:28","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$6495_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"1334:25:28"},"returnParameters":{"id":6554,"nodeType":"ParameterList","parameters":[],"src":"1369:0:28"},"scope":6563,"src":"1320:84:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":6564,"src":"424:982:28","usedErrors":[]}],"src":"87:1320:28"},"id":28},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol","exportedSymbols":{"MathUpgradeable":[8170],"StringsUpgradeable":[6738]},"id":6739,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6565,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:29"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","file":"./math/MathUpgradeable.sol","id":6566,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6739,"sourceUnit":8171,"src":"126:36:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"StringsUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":6567,"nodeType":"StructuredDocumentation","src":"164:34:29","text":" @dev String operations."},"fullyImplemented":true,"id":6738,"linearizedBaseContracts":[6738],"name":"StringsUpgradeable","nameLocation":"207:18:29","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6570,"mutability":"constant","name":"_SYMBOLS","nameLocation":"257:8:29","nodeType":"VariableDeclaration","scope":6738,"src":"232:54:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":6568,"name":"bytes16","nodeType":"ElementaryTypeName","src":"232:7:29","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":6569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"268:18:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":6573,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"315:15:29","nodeType":"VariableDeclaration","scope":6738,"src":"292:43:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6571,"name":"uint8","nodeType":"ElementaryTypeName","src":"292:5:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":6572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"333:2:29","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":6620,"nodeType":"Block","src":"508:636:29","statements":[{"id":6619,"nodeType":"UncheckedBlock","src":"518:620:29","statements":[{"assignments":[6582],"declarations":[{"constant":false,"id":6582,"mutability":"mutable","name":"length","nameLocation":"550:6:29","nodeType":"VariableDeclaration","scope":6619,"src":"542:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6581,"name":"uint256","nodeType":"ElementaryTypeName","src":"542:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6589,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6585,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6576,"src":"581:5:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6583,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"559:15:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$8170_$","typeString":"type(library MathUpgradeable)"}},"id":6584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"575:5:29","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":8007,"src":"559:21:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":6586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"559:28:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"590:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"559:32:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"542:49:29"},{"assignments":[6591],"declarations":[{"constant":false,"id":6591,"mutability":"mutable","name":"buffer","nameLocation":"619:6:29","nodeType":"VariableDeclaration","scope":6619,"src":"605:20:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6590,"name":"string","nodeType":"ElementaryTypeName","src":"605:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":6596,"initialValue":{"arguments":[{"id":6594,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6582,"src":"639:6:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6593,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"628:10:29","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":6592,"name":"string","nodeType":"ElementaryTypeName","src":"632:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":6595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"628:18:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"605:41:29"},{"assignments":[6598],"declarations":[{"constant":false,"id":6598,"mutability":"mutable","name":"ptr","nameLocation":"668:3:29","nodeType":"VariableDeclaration","scope":6619,"src":"660:11:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6597,"name":"uint256","nodeType":"ElementaryTypeName","src":"660:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6599,"nodeType":"VariableDeclarationStatement","src":"660:11:29"},{"AST":{"nodeType":"YulBlock","src":"741:67:29","statements":[{"nodeType":"YulAssignment","src":"759:35:29","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"770:6:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"782:2:29","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"786:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"778:3:29"},"nodeType":"YulFunctionCall","src":"778:15:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"766:3:29"},"nodeType":"YulFunctionCall","src":"766:28:29"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"759:3:29"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":6591,"isOffset":false,"isSlot":false,"src":"770:6:29","valueSize":1},{"declaration":6582,"isOffset":false,"isSlot":false,"src":"786:6:29","valueSize":1},{"declaration":6598,"isOffset":false,"isSlot":false,"src":"759:3:29","valueSize":1}],"id":6600,"nodeType":"InlineAssembly","src":"732:76:29"},{"body":{"id":6615,"nodeType":"Block","src":"834:267:29","statements":[{"expression":{"id":6603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"852:5:29","subExpression":{"id":6602,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6598,"src":"852:3:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6604,"nodeType":"ExpressionStatement","src":"852:5:29"},{"AST":{"nodeType":"YulBlock","src":"935:84:29","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"965:3:29"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"979:5:29"},{"kind":"number","nodeType":"YulLiteral","src":"986:2:29","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"975:3:29"},"nodeType":"YulFunctionCall","src":"975:14:29"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"991:8:29"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"970:4:29"},"nodeType":"YulFunctionCall","src":"970:30:29"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"957:7:29"},"nodeType":"YulFunctionCall","src":"957:44:29"},"nodeType":"YulExpressionStatement","src":"957:44:29"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":6570,"isOffset":false,"isSlot":false,"src":"991:8:29","valueSize":1},{"declaration":6598,"isOffset":false,"isSlot":false,"src":"965:3:29","valueSize":1},{"declaration":6576,"isOffset":false,"isSlot":false,"src":"979:5:29","valueSize":1}],"id":6605,"nodeType":"InlineAssembly","src":"926:93:29"},{"expression":{"id":6608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6606,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6576,"src":"1036:5:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":6607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1045:2:29","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1036:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6609,"nodeType":"ExpressionStatement","src":"1036:11:29"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6610,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6576,"src":"1069:5:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1078:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1069:10:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6614,"nodeType":"IfStatement","src":"1065:21:29","trueBody":{"id":6613,"nodeType":"Break","src":"1081:5:29"}}]},"condition":{"hexValue":"74727565","id":6601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"828:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":6616,"nodeType":"WhileStatement","src":"821:280:29"},{"expression":{"id":6617,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6591,"src":"1121:6:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6580,"id":6618,"nodeType":"Return","src":"1114:13:29"}]}]},"documentation":{"id":6574,"nodeType":"StructuredDocumentation","src":"342:90:29","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":6621,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"446:8:29","nodeType":"FunctionDefinition","parameters":{"id":6577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6576,"mutability":"mutable","name":"value","nameLocation":"463:5:29","nodeType":"VariableDeclaration","scope":6621,"src":"455:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6575,"name":"uint256","nodeType":"ElementaryTypeName","src":"455:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"454:15:29"},"returnParameters":{"id":6580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6621,"src":"493:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6578,"name":"string","nodeType":"ElementaryTypeName","src":"493:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"492:15:29"},"scope":6738,"src":"437:707:29","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6640,"nodeType":"Block","src":"1323:111:29","statements":[{"id":6639,"nodeType":"UncheckedBlock","src":"1333:95:29","statements":[{"expression":{"arguments":[{"id":6630,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6624,"src":"1376:5:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6633,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6624,"src":"1406:5:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6631,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"1383:15:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$8170_$","typeString":"type(library MathUpgradeable)"}},"id":6632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1399:6:29","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":8130,"src":"1383:22:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":6634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1383:29:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1415:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1383:33:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6629,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[6641,6717,6737],"referencedDeclaration":6717,"src":"1364:11:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":6637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1364:53:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6628,"id":6638,"nodeType":"Return","src":"1357:60:29"}]}]},"documentation":{"id":6622,"nodeType":"StructuredDocumentation","src":"1150:94:29","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":6641,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1258:11:29","nodeType":"FunctionDefinition","parameters":{"id":6625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6624,"mutability":"mutable","name":"value","nameLocation":"1278:5:29","nodeType":"VariableDeclaration","scope":6641,"src":"1270:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6623,"name":"uint256","nodeType":"ElementaryTypeName","src":"1270:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1269:15:29"},"returnParameters":{"id":6628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6641,"src":"1308:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6626,"name":"string","nodeType":"ElementaryTypeName","src":"1308:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1307:15:29"},"scope":6738,"src":"1249:185:29","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6716,"nodeType":"Block","src":"1647:347:29","statements":[{"assignments":[6652],"declarations":[{"constant":false,"id":6652,"mutability":"mutable","name":"buffer","nameLocation":"1670:6:29","nodeType":"VariableDeclaration","scope":6716,"src":"1657:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6651,"name":"bytes","nodeType":"ElementaryTypeName","src":"1657:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6661,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1689:1:29","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6656,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6646,"src":"1693:6:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1689:10:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":6658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1702:1:29","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1689:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1679:9:29","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":6653,"name":"bytes","nodeType":"ElementaryTypeName","src":"1683:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":6660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1679:25:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1657:47:29"},{"expression":{"id":6666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6662,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6652,"src":"1714:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6664,"indexExpression":{"hexValue":"30","id":6663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1721:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1714:9:29","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":6665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1726:3:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1714:15:29","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":6667,"nodeType":"ExpressionStatement","src":"1714:15:29"},{"expression":{"id":6672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6668,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6652,"src":"1739:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6670,"indexExpression":{"hexValue":"31","id":6669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1746:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1739:9:29","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":6671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1751:3:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"1739:15:29","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":6673,"nodeType":"ExpressionStatement","src":"1739:15:29"},{"body":{"id":6702,"nodeType":"Block","src":"1809:83:29","statements":[{"expression":{"id":6696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6688,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6652,"src":"1823:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6690,"indexExpression":{"id":6689,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6675,"src":"1830:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1823:9:29","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":6691,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6570,"src":"1835:8:29","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":6695,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6692,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6644,"src":"1844:5:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":6693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1852:3:29","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"1844:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1835:21:29","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1823:33:29","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":6697,"nodeType":"ExpressionStatement","src":"1823:33:29"},{"expression":{"id":6700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6698,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6644,"src":"1870:5:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":6699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1880:1:29","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1870:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6701,"nodeType":"ExpressionStatement","src":"1870:11:29"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6682,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6675,"src":"1797:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":6683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1801:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1797:5:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6703,"initializationExpression":{"assignments":[6675],"declarations":[{"constant":false,"id":6675,"mutability":"mutable","name":"i","nameLocation":"1777:1:29","nodeType":"VariableDeclaration","scope":6703,"src":"1769:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6674,"name":"uint256","nodeType":"ElementaryTypeName","src":"1769:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6681,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1781:1:29","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6677,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6646,"src":"1785:6:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1781:10:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1794:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1781:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1769:26:29"},"loopExpression":{"expression":{"id":6686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"1804:3:29","subExpression":{"id":6685,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6675,"src":"1806:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6687,"nodeType":"ExpressionStatement","src":"1804:3:29"},"nodeType":"ForStatement","src":"1764:128:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6705,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6644,"src":"1909:5:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1918:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1909:10:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":6708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1921:34:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":6704,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1901:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:55:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6710,"nodeType":"ExpressionStatement","src":"1901:55:29"},{"expression":{"arguments":[{"id":6713,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6652,"src":"1980:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1973:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":6711,"name":"string","nodeType":"ElementaryTypeName","src":"1973:6:29","typeDescriptions":{}}},"id":6714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1973:14:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6650,"id":6715,"nodeType":"Return","src":"1966:21:29"}]},"documentation":{"id":6642,"nodeType":"StructuredDocumentation","src":"1440:112:29","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":6717,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1566:11:29","nodeType":"FunctionDefinition","parameters":{"id":6647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6644,"mutability":"mutable","name":"value","nameLocation":"1586:5:29","nodeType":"VariableDeclaration","scope":6717,"src":"1578:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6643,"name":"uint256","nodeType":"ElementaryTypeName","src":"1578:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6646,"mutability":"mutable","name":"length","nameLocation":"1601:6:29","nodeType":"VariableDeclaration","scope":6717,"src":"1593:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6645,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1577:31:29"},"returnParameters":{"id":6650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6717,"src":"1632:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6648,"name":"string","nodeType":"ElementaryTypeName","src":"1632:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1631:15:29"},"scope":6738,"src":"1557:437:29","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6736,"nodeType":"Block","src":"2219:76:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":6730,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6720,"src":"2264:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2256:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6728,"name":"uint160","nodeType":"ElementaryTypeName","src":"2256:7:29","typeDescriptions":{}}},"id":6731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2256:13:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2248:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6726,"name":"uint256","nodeType":"ElementaryTypeName","src":"2248:7:29","typeDescriptions":{}}},"id":6732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2248:22:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6733,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6573,"src":"2272:15:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6725,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[6641,6717,6737],"referencedDeclaration":6717,"src":"2236:11:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":6734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2236:52:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6724,"id":6735,"nodeType":"Return","src":"2229:59:29"}]},"documentation":{"id":6718,"nodeType":"StructuredDocumentation","src":"2000:141:29","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":6737,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2155:11:29","nodeType":"FunctionDefinition","parameters":{"id":6721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6720,"mutability":"mutable","name":"addr","nameLocation":"2175:4:29","nodeType":"VariableDeclaration","scope":6737,"src":"2167:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6719,"name":"address","nodeType":"ElementaryTypeName","src":"2167:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2166:14:29"},"returnParameters":{"id":6724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6723,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6737,"src":"2204:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6722,"name":"string","nodeType":"ElementaryTypeName","src":"2204:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2203:15:29"},"scope":6738,"src":"2146:149:29","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6739,"src":"199:2098:29","usedErrors":[]}],"src":"101:2197:29"},"id":29},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","exportedSymbols":{"ECDSAUpgradeable":[7099],"MathUpgradeable":[8170],"StringsUpgradeable":[6738]},"id":7100,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6740,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:30"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol","file":"../StringsUpgradeable.sol","id":6741,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7100,"sourceUnit":6739,"src":"137:35:30","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSAUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":6742,"nodeType":"StructuredDocumentation","src":"174:205:30","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":7099,"linearizedBaseContracts":[7099],"name":"ECDSAUpgradeable","nameLocation":"388:16:30","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ECDSAUpgradeable.RecoverError","id":6748,"members":[{"id":6743,"name":"NoError","nameLocation":"439:7:30","nodeType":"EnumValue","src":"439:7:30"},{"id":6744,"name":"InvalidSignature","nameLocation":"456:16:30","nodeType":"EnumValue","src":"456:16:30"},{"id":6745,"name":"InvalidSignatureLength","nameLocation":"482:22:30","nodeType":"EnumValue","src":"482:22:30"},{"id":6746,"name":"InvalidSignatureS","nameLocation":"514:17:30","nodeType":"EnumValue","src":"514:17:30"},{"id":6747,"name":"InvalidSignatureV","nameLocation":"541:17:30","nodeType":"EnumValue","src":"541:17:30"}],"name":"RecoverError","nameLocation":"416:12:30","nodeType":"EnumDefinition","src":"411:175:30"},{"body":{"id":6791,"nodeType":"Block","src":"646:457:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":6757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6754,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6751,"src":"660:5:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6755,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6748,"src":"669:12:30","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$6748_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":6756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"682:7:30","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":6743,"src":"669:20:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"660:29:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":6763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6760,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6751,"src":"756:5:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6761,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6748,"src":"765:12:30","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$6748_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":6762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"778:16:30","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":6744,"src":"765:29:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"756:38:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":6772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6769,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6751,"src":"865:5:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6770,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6748,"src":"874:12:30","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$6748_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":6771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"887:22:30","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":6745,"src":"874:35:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"865:44:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":6781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6778,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6751,"src":"987:5:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6779,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6748,"src":"996:12:30","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$6748_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":6780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1009:17:30","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":6746,"src":"996:30:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"987:39:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6787,"nodeType":"IfStatement","src":"983:114:30","trueBody":{"id":6786,"nodeType":"Block","src":"1028:69:30","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265202773272076616c7565","id":6783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1049:36:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""},"value":"ECDSA: invalid signature 's' value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""}],"id":6782,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1042:6:30","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1042:44:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6785,"nodeType":"ExpressionStatement","src":"1042:44:30"}]}},"id":6788,"nodeType":"IfStatement","src":"861:236:30","trueBody":{"id":6777,"nodeType":"Block","src":"911:66:30","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265206c656e677468","id":6774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"932:33:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""},"value":"ECDSA: invalid signature length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""}],"id":6773,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"925:6:30","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"925:41:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6776,"nodeType":"ExpressionStatement","src":"925:41:30"}]}},"id":6789,"nodeType":"IfStatement","src":"752:345:30","trueBody":{"id":6768,"nodeType":"Block","src":"796:59:30","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265","id":6765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"817:26:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""},"value":"ECDSA: invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""}],"id":6764,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"810:6:30","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"810:34:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6767,"nodeType":"ExpressionStatement","src":"810:34:30"}]}},"id":6790,"nodeType":"IfStatement","src":"656:441:30","trueBody":{"id":6759,"nodeType":"Block","src":"691:55:30","statements":[{"functionReturnParameters":6753,"id":6758,"nodeType":"Return","src":"705:7:30"}]}}]},"id":6792,"implemented":true,"kind":"function","modifiers":[],"name":"_throwError","nameLocation":"601:11:30","nodeType":"FunctionDefinition","parameters":{"id":6752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6751,"mutability":"mutable","name":"error","nameLocation":"626:5:30","nodeType":"VariableDeclaration","scope":6792,"src":"613:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":6750,"nodeType":"UserDefinedTypeName","pathNode":{"id":6749,"name":"RecoverError","nameLocations":["613:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":6748,"src":"613:12:30"},"referencedDeclaration":6748,"src":"613:12:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"612:20:30"},"returnParameters":{"id":6753,"nodeType":"ParameterList","parameters":[],"src":"646:0:30"},"scope":7099,"src":"592:511:30","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":6837,"nodeType":"Block","src":"2271:626:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6805,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6797,"src":"2285:9:30","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2295:6:30","memberName":"length","nodeType":"MemberAccess","src":"2285:16:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":6807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2305:2:30","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"2285:22:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6835,"nodeType":"Block","src":"2810:81:30","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":6829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2840:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2832:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6827,"name":"address","nodeType":"ElementaryTypeName","src":"2832:7:30","typeDescriptions":{}}},"id":6830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2832:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6831,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6748,"src":"2844:12:30","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$6748_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":6832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2857:22:30","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":6745,"src":"2844:35:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":6833,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2831:49:30","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":6804,"id":6834,"nodeType":"Return","src":"2824:56:30"}]},"id":6836,"nodeType":"IfStatement","src":"2281:610:30","trueBody":{"id":6826,"nodeType":"Block","src":"2309:495:30","statements":[{"assignments":[6810],"declarations":[{"constant":false,"id":6810,"mutability":"mutable","name":"r","nameLocation":"2331:1:30","nodeType":"VariableDeclaration","scope":6826,"src":"2323:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6809,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2323:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6811,"nodeType":"VariableDeclarationStatement","src":"2323:9:30"},{"assignments":[6813],"declarations":[{"constant":false,"id":6813,"mutability":"mutable","name":"s","nameLocation":"2354:1:30","nodeType":"VariableDeclaration","scope":6826,"src":"2346:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6812,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2346:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6814,"nodeType":"VariableDeclarationStatement","src":"2346:9:30"},{"assignments":[6816],"declarations":[{"constant":false,"id":6816,"mutability":"mutable","name":"v","nameLocation":"2375:1:30","nodeType":"VariableDeclaration","scope":6826,"src":"2369:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6815,"name":"uint8","nodeType":"ElementaryTypeName","src":"2369:5:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":6817,"nodeType":"VariableDeclarationStatement","src":"2369:7:30"},{"AST":{"nodeType":"YulBlock","src":"2577:171:30","statements":[{"nodeType":"YulAssignment","src":"2595:32:30","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2610:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"2621:4:30","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2606:3:30"},"nodeType":"YulFunctionCall","src":"2606:20:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2600:5:30"},"nodeType":"YulFunctionCall","src":"2600:27:30"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"2595:1:30"}]},{"nodeType":"YulAssignment","src":"2644:32:30","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2659:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"2670:4:30","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2655:3:30"},"nodeType":"YulFunctionCall","src":"2655:20:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2649:5:30"},"nodeType":"YulFunctionCall","src":"2649:27:30"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"2644:1:30"}]},{"nodeType":"YulAssignment","src":"2693:41:30","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2703:1:30","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2716:9:30"},{"kind":"number","nodeType":"YulLiteral","src":"2727:4:30","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2712:3:30"},"nodeType":"YulFunctionCall","src":"2712:20:30"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2706:5:30"},"nodeType":"YulFunctionCall","src":"2706:27:30"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"2698:4:30"},"nodeType":"YulFunctionCall","src":"2698:36:30"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"2693:1:30"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":6810,"isOffset":false,"isSlot":false,"src":"2595:1:30","valueSize":1},{"declaration":6813,"isOffset":false,"isSlot":false,"src":"2644:1:30","valueSize":1},{"declaration":6797,"isOffset":false,"isSlot":false,"src":"2610:9:30","valueSize":1},{"declaration":6797,"isOffset":false,"isSlot":false,"src":"2659:9:30","valueSize":1},{"declaration":6797,"isOffset":false,"isSlot":false,"src":"2716:9:30","valueSize":1},{"declaration":6816,"isOffset":false,"isSlot":false,"src":"2693:1:30","valueSize":1}],"id":6818,"nodeType":"InlineAssembly","src":"2568:180:30"},{"expression":{"arguments":[{"id":6820,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6795,"src":"2779:4:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6821,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6816,"src":"2785:1:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":6822,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6810,"src":"2788:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6823,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6813,"src":"2791:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6819,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[6838,6912,7006],"referencedDeclaration":7006,"src":"2768:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":6824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2768:25:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":6804,"id":6825,"nodeType":"Return","src":"2761:32:30"}]}}]},"documentation":{"id":6793,"nodeType":"StructuredDocumentation","src":"1109:1053:30","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature` or error string. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n _Available since v4.3._"},"id":6838,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"2176:10:30","nodeType":"FunctionDefinition","parameters":{"id":6798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6795,"mutability":"mutable","name":"hash","nameLocation":"2195:4:30","nodeType":"VariableDeclaration","scope":6838,"src":"2187:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6794,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2187:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6797,"mutability":"mutable","name":"signature","nameLocation":"2214:9:30","nodeType":"VariableDeclaration","scope":6838,"src":"2201:22:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6796,"name":"bytes","nodeType":"ElementaryTypeName","src":"2201:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2186:38:30"},"returnParameters":{"id":6804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6800,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6838,"src":"2248:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6799,"name":"address","nodeType":"ElementaryTypeName","src":"2248:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6803,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6838,"src":"2257:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":6802,"nodeType":"UserDefinedTypeName","pathNode":{"id":6801,"name":"RecoverError","nameLocations":["2257:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":6748,"src":"2257:12:30"},"referencedDeclaration":6748,"src":"2257:12:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"2247:23:30"},"scope":7099,"src":"2167:730:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6864,"nodeType":"Block","src":"3770:140:30","statements":[{"assignments":[6849,6852],"declarations":[{"constant":false,"id":6849,"mutability":"mutable","name":"recovered","nameLocation":"3789:9:30","nodeType":"VariableDeclaration","scope":6864,"src":"3781:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6848,"name":"address","nodeType":"ElementaryTypeName","src":"3781:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6852,"mutability":"mutable","name":"error","nameLocation":"3813:5:30","nodeType":"VariableDeclaration","scope":6864,"src":"3800:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":6851,"nodeType":"UserDefinedTypeName","pathNode":{"id":6850,"name":"RecoverError","nameLocations":["3800:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":6748,"src":"3800:12:30"},"referencedDeclaration":6748,"src":"3800:12:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":6857,"initialValue":{"arguments":[{"id":6854,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6841,"src":"3833:4:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6855,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6843,"src":"3839:9:30","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6853,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[6838,6912,7006],"referencedDeclaration":6838,"src":"3822:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":6856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3822:27:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"3780:69:30"},{"expression":{"arguments":[{"id":6859,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6852,"src":"3871:5:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":6858,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6792,"src":"3859:11:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$6748_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":6860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:18:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6861,"nodeType":"ExpressionStatement","src":"3859:18:30"},{"expression":{"id":6862,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6849,"src":"3894:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6847,"id":6863,"nodeType":"Return","src":"3887:16:30"}]},"documentation":{"id":6839,"nodeType":"StructuredDocumentation","src":"2903:775:30","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it."},"id":6865,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3692:7:30","nodeType":"FunctionDefinition","parameters":{"id":6844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6841,"mutability":"mutable","name":"hash","nameLocation":"3708:4:30","nodeType":"VariableDeclaration","scope":6865,"src":"3700:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6840,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3700:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6843,"mutability":"mutable","name":"signature","nameLocation":"3727:9:30","nodeType":"VariableDeclaration","scope":6865,"src":"3714:22:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6842,"name":"bytes","nodeType":"ElementaryTypeName","src":"3714:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3699:38:30"},"returnParameters":{"id":6847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6865,"src":"3761:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6845,"name":"address","nodeType":"ElementaryTypeName","src":"3761:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3760:9:30"},"scope":7099,"src":"3683:227:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6911,"nodeType":"Block","src":"4297:203:30","statements":[{"assignments":[6881],"declarations":[{"constant":false,"id":6881,"mutability":"mutable","name":"s","nameLocation":"4315:1:30","nodeType":"VariableDeclaration","scope":6911,"src":"4307:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6880,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4307:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6888,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":6887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6882,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6872,"src":"4319:2:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":6885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4332:66:30","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}],"id":6884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4324:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6883,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4324:7:30","typeDescriptions":{}}},"id":6886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4324:75:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4319:80:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4307:92:30"},{"assignments":[6890],"declarations":[{"constant":false,"id":6890,"mutability":"mutable","name":"v","nameLocation":"4415:1:30","nodeType":"VariableDeclaration","scope":6911,"src":"4409:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6889,"name":"uint8","nodeType":"ElementaryTypeName","src":"4409:5:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":6903,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6895,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6872,"src":"4434:2:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4426:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6893,"name":"uint256","nodeType":"ElementaryTypeName","src":"4426:7:30","typeDescriptions":{}}},"id":6896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4426:11:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":6897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4441:3:30","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4426:18:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6899,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4425:20:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":6900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4448:2:30","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"4425:25:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4419:5:30","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6891,"name":"uint8","nodeType":"ElementaryTypeName","src":"4419:5:30","typeDescriptions":{}}},"id":6902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4419:32:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4409:42:30"},{"expression":{"arguments":[{"id":6905,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6868,"src":"4479:4:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6906,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"4485:1:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":6907,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6870,"src":"4488:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6908,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6881,"src":"4491:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6904,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[6838,6912,7006],"referencedDeclaration":7006,"src":"4468:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":6909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4468:25:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":6879,"id":6910,"nodeType":"Return","src":"4461:32:30"}]},"documentation":{"id":6866,"nodeType":"StructuredDocumentation","src":"3916:243:30","text":" @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n _Available since v4.3._"},"id":6912,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"4173:10:30","nodeType":"FunctionDefinition","parameters":{"id":6873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6868,"mutability":"mutable","name":"hash","nameLocation":"4201:4:30","nodeType":"VariableDeclaration","scope":6912,"src":"4193:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6867,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4193:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6870,"mutability":"mutable","name":"r","nameLocation":"4223:1:30","nodeType":"VariableDeclaration","scope":6912,"src":"4215:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6869,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4215:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6872,"mutability":"mutable","name":"vs","nameLocation":"4242:2:30","nodeType":"VariableDeclaration","scope":6912,"src":"4234:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6871,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4234:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4183:67:30"},"returnParameters":{"id":6879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6912,"src":"4274:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6874,"name":"address","nodeType":"ElementaryTypeName","src":"4274:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6878,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6912,"src":"4283:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":6877,"nodeType":"UserDefinedTypeName","pathNode":{"id":6876,"name":"RecoverError","nameLocations":["4283:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":6748,"src":"4283:12:30"},"referencedDeclaration":6748,"src":"4283:12:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"4273:23:30"},"scope":7099,"src":"4164:336:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6941,"nodeType":"Block","src":"4781:136:30","statements":[{"assignments":[6925,6928],"declarations":[{"constant":false,"id":6925,"mutability":"mutable","name":"recovered","nameLocation":"4800:9:30","nodeType":"VariableDeclaration","scope":6941,"src":"4792:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6924,"name":"address","nodeType":"ElementaryTypeName","src":"4792:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6928,"mutability":"mutable","name":"error","nameLocation":"4824:5:30","nodeType":"VariableDeclaration","scope":6941,"src":"4811:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":6927,"nodeType":"UserDefinedTypeName","pathNode":{"id":6926,"name":"RecoverError","nameLocations":["4811:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":6748,"src":"4811:12:30"},"referencedDeclaration":6748,"src":"4811:12:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":6934,"initialValue":{"arguments":[{"id":6930,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6915,"src":"4844:4:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6931,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"4850:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6932,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6919,"src":"4853:2:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6929,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[6838,6912,7006],"referencedDeclaration":6912,"src":"4833:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":6933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4833:23:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"4791:65:30"},{"expression":{"arguments":[{"id":6936,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6928,"src":"4878:5:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":6935,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6792,"src":"4866:11:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$6748_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":6937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4866:18:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6938,"nodeType":"ExpressionStatement","src":"4866:18:30"},{"expression":{"id":6939,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6925,"src":"4901:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6923,"id":6940,"nodeType":"Return","src":"4894:16:30"}]},"documentation":{"id":6913,"nodeType":"StructuredDocumentation","src":"4506:154:30","text":" @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n _Available since v4.2._"},"id":6942,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"4674:7:30","nodeType":"FunctionDefinition","parameters":{"id":6920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6915,"mutability":"mutable","name":"hash","nameLocation":"4699:4:30","nodeType":"VariableDeclaration","scope":6942,"src":"4691:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6914,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4691:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6917,"mutability":"mutable","name":"r","nameLocation":"4721:1:30","nodeType":"VariableDeclaration","scope":6942,"src":"4713:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6916,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4713:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6919,"mutability":"mutable","name":"vs","nameLocation":"4740:2:30","nodeType":"VariableDeclaration","scope":6942,"src":"4732:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4732:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4681:67:30"},"returnParameters":{"id":6923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6922,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6942,"src":"4772:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6921,"name":"address","nodeType":"ElementaryTypeName","src":"4772:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4771:9:30"},"scope":7099,"src":"4665:252:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7005,"nodeType":"Block","src":"5240:1345:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6961,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6951,"src":"6136:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6128:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6959,"name":"uint256","nodeType":"ElementaryTypeName","src":"6128:7:30","typeDescriptions":{}}},"id":6962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6128:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":6963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6141:66:30","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"6128:79:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6974,"nodeType":"IfStatement","src":"6124:161:30","trueBody":{"id":6973,"nodeType":"Block","src":"6209:76:30","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":6967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6239:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6231:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6965,"name":"address","nodeType":"ElementaryTypeName","src":"6231:7:30","typeDescriptions":{}}},"id":6968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6231:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6969,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6748,"src":"6243:12:30","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$6748_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":6970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6256:17:30","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":6746,"src":"6243:30:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":6971,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6230:44:30","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":6958,"id":6972,"nodeType":"Return","src":"6223:51:30"}]}},{"assignments":[6976],"declarations":[{"constant":false,"id":6976,"mutability":"mutable","name":"signer","nameLocation":"6387:6:30","nodeType":"VariableDeclaration","scope":7005,"src":"6379:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6975,"name":"address","nodeType":"ElementaryTypeName","src":"6379:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6983,"initialValue":{"arguments":[{"id":6978,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"6406:4:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6979,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"6412:1:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":6980,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"6415:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6981,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6951,"src":"6418:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6977,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"6396:9:30","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":6982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6396:24:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6379:41:30"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6984,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6976,"src":"6434:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6452:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6444:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6985,"name":"address","nodeType":"ElementaryTypeName","src":"6444:7:30","typeDescriptions":{}}},"id":6988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6444:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6434:20:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6999,"nodeType":"IfStatement","src":"6430:101:30","trueBody":{"id":6998,"nodeType":"Block","src":"6456:75:30","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":6992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6486:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6478:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6990,"name":"address","nodeType":"ElementaryTypeName","src":"6478:7:30","typeDescriptions":{}}},"id":6993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6478:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6994,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6748,"src":"6490:12:30","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$6748_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":6995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6503:16:30","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":6744,"src":"6490:29:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":6996,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6477:43:30","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":6958,"id":6997,"nodeType":"Return","src":"6470:50:30"}]}},{"expression":{"components":[{"id":7000,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6976,"src":"6549:6:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7001,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6748,"src":"6557:12:30","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$6748_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":7002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6570:7:30","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":6743,"src":"6557:20:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":7003,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6548:30:30","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":6958,"id":7004,"nodeType":"Return","src":"6541:37:30"}]},"documentation":{"id":6943,"nodeType":"StructuredDocumentation","src":"4923:163:30","text":" @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately.\n _Available since v4.3._"},"id":7006,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"5100:10:30","nodeType":"FunctionDefinition","parameters":{"id":6952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6945,"mutability":"mutable","name":"hash","nameLocation":"5128:4:30","nodeType":"VariableDeclaration","scope":7006,"src":"5120:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6944,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5120:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6947,"mutability":"mutable","name":"v","nameLocation":"5148:1:30","nodeType":"VariableDeclaration","scope":7006,"src":"5142:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6946,"name":"uint8","nodeType":"ElementaryTypeName","src":"5142:5:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6949,"mutability":"mutable","name":"r","nameLocation":"5167:1:30","nodeType":"VariableDeclaration","scope":7006,"src":"5159:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6948,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5159:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6951,"mutability":"mutable","name":"s","nameLocation":"5186:1:30","nodeType":"VariableDeclaration","scope":7006,"src":"5178:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6950,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5178:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5110:83:30"},"returnParameters":{"id":6958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7006,"src":"5217:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6953,"name":"address","nodeType":"ElementaryTypeName","src":"5217:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6957,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7006,"src":"5226:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":6956,"nodeType":"UserDefinedTypeName","pathNode":{"id":6955,"name":"RecoverError","nameLocations":["5226:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":6748,"src":"5226:12:30"},"referencedDeclaration":6748,"src":"5226:12:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"5216:23:30"},"scope":7099,"src":"5091:1494:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7038,"nodeType":"Block","src":"6850:138:30","statements":[{"assignments":[7021,7024],"declarations":[{"constant":false,"id":7021,"mutability":"mutable","name":"recovered","nameLocation":"6869:9:30","nodeType":"VariableDeclaration","scope":7038,"src":"6861:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7020,"name":"address","nodeType":"ElementaryTypeName","src":"6861:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7024,"mutability":"mutable","name":"error","nameLocation":"6893:5:30","nodeType":"VariableDeclaration","scope":7038,"src":"6880:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":7023,"nodeType":"UserDefinedTypeName","pathNode":{"id":7022,"name":"RecoverError","nameLocations":["6880:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":6748,"src":"6880:12:30"},"referencedDeclaration":6748,"src":"6880:12:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":7031,"initialValue":{"arguments":[{"id":7026,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7009,"src":"6913:4:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7027,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7011,"src":"6919:1:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":7028,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7013,"src":"6922:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7029,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"6925:1:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7025,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[6838,6912,7006],"referencedDeclaration":7006,"src":"6902:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":7030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6902:25:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$6748_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"6860:67:30"},{"expression":{"arguments":[{"id":7033,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7024,"src":"6949:5:30","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$6748","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":7032,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6792,"src":"6937:11:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$6748_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":7034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6937:18:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7035,"nodeType":"ExpressionStatement","src":"6937:18:30"},{"expression":{"id":7036,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7021,"src":"6972:9:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7019,"id":7037,"nodeType":"Return","src":"6965:16:30"}]},"documentation":{"id":7007,"nodeType":"StructuredDocumentation","src":"6591:122:30","text":" @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":7039,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6727:7:30","nodeType":"FunctionDefinition","parameters":{"id":7016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7009,"mutability":"mutable","name":"hash","nameLocation":"6752:4:30","nodeType":"VariableDeclaration","scope":7039,"src":"6744:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7008,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6744:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7011,"mutability":"mutable","name":"v","nameLocation":"6772:1:30","nodeType":"VariableDeclaration","scope":7039,"src":"6766:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7010,"name":"uint8","nodeType":"ElementaryTypeName","src":"6766:5:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7013,"mutability":"mutable","name":"r","nameLocation":"6791:1:30","nodeType":"VariableDeclaration","scope":7039,"src":"6783:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7012,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6783:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7015,"mutability":"mutable","name":"s","nameLocation":"6810:1:30","nodeType":"VariableDeclaration","scope":7039,"src":"6802:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7014,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6802:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6734:83:30"},"returnParameters":{"id":7019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7018,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7039,"src":"6841:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7017,"name":"address","nodeType":"ElementaryTypeName","src":"6841:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6840:9:30"},"scope":7099,"src":"6718:270:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7055,"nodeType":"Block","src":"7356:187:30","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","id":7050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7494:34:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""},"value":"\u0019Ethereum Signed Message:\n32"},{"id":7051,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7042,"src":"7530:4:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7048,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7477:3:30","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7481:12:30","memberName":"encodePacked","nodeType":"MemberAccess","src":"7477:16:30","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7477:58:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7047,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7467:9:30","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7467:69:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7046,"id":7054,"nodeType":"Return","src":"7460:76:30"}]},"documentation":{"id":7040,"nodeType":"StructuredDocumentation","src":"6994:279:30","text":" @dev Returns an Ethereum Signed Message, created from a `hash`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."},"id":7056,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"7287:22:30","nodeType":"FunctionDefinition","parameters":{"id":7043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7042,"mutability":"mutable","name":"hash","nameLocation":"7318:4:30","nodeType":"VariableDeclaration","scope":7056,"src":"7310:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7041,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7310:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7309:14:30"},"returnParameters":{"id":7046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7045,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7056,"src":"7347:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7044,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7347:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7346:9:30"},"scope":7099,"src":"7278:265:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7077,"nodeType":"Block","src":"7908:127:30","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","id":7067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7952:32:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},"value":"\u0019Ethereum Signed Message:\n"},{"arguments":[{"expression":{"id":7070,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7059,"src":"8014:1:30","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8016:6:30","memberName":"length","nodeType":"MemberAccess","src":"8014:8:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7068,"name":"StringsUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6738,"src":"7986:18:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StringsUpgradeable_$6738_$","typeString":"type(library StringsUpgradeable)"}},"id":7069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8005:8:30","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":6621,"src":"7986:27:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":7072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7986:37:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7073,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7059,"src":"8025:1:30","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7065,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7935:3:30","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7939:12:30","memberName":"encodePacked","nodeType":"MemberAccess","src":"7935:16:30","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7935:92:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7064,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7925:9:30","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7925:103:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7063,"id":7076,"nodeType":"Return","src":"7918:110:30"}]},"documentation":{"id":7057,"nodeType":"StructuredDocumentation","src":"7549:274:30","text":" @dev Returns an Ethereum Signed Message, created from `s`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."},"id":7078,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"7837:22:30","nodeType":"FunctionDefinition","parameters":{"id":7060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7059,"mutability":"mutable","name":"s","nameLocation":"7873:1:30","nodeType":"VariableDeclaration","scope":7078,"src":"7860:14:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7058,"name":"bytes","nodeType":"ElementaryTypeName","src":"7860:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7859:16:30"},"returnParameters":{"id":7063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7062,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7078,"src":"7899:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7061,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7899:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7898:9:30"},"scope":7099,"src":"7828:207:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7097,"nodeType":"Block","src":"8476:92:30","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":7091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8520:10:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"id":7092,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7081,"src":"8532:15:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7093,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7083,"src":"8549:10:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7089,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8503:3:30","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8507:12:30","memberName":"encodePacked","nodeType":"MemberAccess","src":"8503:16:30","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8503:57:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7088,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8493:9:30","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8493:68:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7087,"id":7096,"nodeType":"Return","src":"8486:75:30"}]},"documentation":{"id":7079,"nodeType":"StructuredDocumentation","src":"8041:328:30","text":" @dev Returns an Ethereum Signed Typed Data, created from a\n `domainSeparator` and a `structHash`. This produces hash corresponding\n to the one signed with the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n JSON-RPC method as part of EIP-712.\n See {recover}."},"id":7098,"implemented":true,"kind":"function","modifiers":[],"name":"toTypedDataHash","nameLocation":"8383:15:30","nodeType":"FunctionDefinition","parameters":{"id":7084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7081,"mutability":"mutable","name":"domainSeparator","nameLocation":"8407:15:30","nodeType":"VariableDeclaration","scope":7098,"src":"8399:23:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7080,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8399:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7083,"mutability":"mutable","name":"structHash","nameLocation":"8432:10:30","nodeType":"VariableDeclaration","scope":7098,"src":"8424:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7082,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8424:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8398:45:30"},"returnParameters":{"id":7087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7086,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7098,"src":"8467:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7085,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8467:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8466:9:30"},"scope":7099,"src":"8374:194:30","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7100,"src":"380:8190:30","usedErrors":[]}],"src":"112:8459:30"},"id":30},"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"ECDSAUpgradeable":[7099],"EIP712Upgradeable":[7249],"Initializable":[1466],"MathUpgradeable":[8170],"StringsUpgradeable":[6738]},"id":7250,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7101,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"113:23:31"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","file":"./ECDSAUpgradeable.sol","id":7102,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7250,"sourceUnit":7100,"src":"138:32:31","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":7103,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7250,"sourceUnit":1467,"src":"171:45:31","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":7105,"name":"Initializable","nameLocations":["1430:13:31"],"nodeType":"IdentifierPath","referencedDeclaration":1466,"src":"1430:13:31"},"id":7106,"nodeType":"InheritanceSpecifier","src":"1430:13:31"}],"canonicalName":"EIP712Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":7104,"nodeType":"StructuredDocumentation","src":"218:1172:31","text":" @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n they need in their contracts using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n _Available since v3.4._\n @custom:storage-size 52"},"fullyImplemented":true,"id":7249,"linearizedBaseContracts":[7249,1466],"name":"EIP712Upgradeable","nameLocation":"1409:17:31","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7108,"mutability":"mutable","name":"_HASHED_NAME","nameLocation":"1511:12:31","nodeType":"VariableDeclaration","scope":7249,"src":"1495:28:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7107,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1495:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":7110,"mutability":"mutable","name":"_HASHED_VERSION","nameLocation":"1545:15:31","nodeType":"VariableDeclaration","scope":7249,"src":"1529:31:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1529:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":7115,"mutability":"constant","name":"_TYPE_HASH","nameLocation":"1591:10:31","nodeType":"VariableDeclaration","scope":7249,"src":"1566:133:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7111,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1566:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":7113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1614:84:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":7112,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1604:9:31","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1604:95:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":7130,"nodeType":"Block","src":"2407:55:31","statements":[{"expression":{"arguments":[{"id":7126,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7118,"src":"2441:4:31","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7127,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7120,"src":"2447:7:31","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7125,"name":"__EIP712_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7167,"src":"2417:23:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":7128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2417:38:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7129,"nodeType":"ExpressionStatement","src":"2417:38:31"}]},"documentation":{"id":7116,"nodeType":"StructuredDocumentation","src":"1751:559:31","text":" @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."},"id":7131,"implemented":true,"kind":"function","modifiers":[{"id":7123,"kind":"modifierInvocation","modifierName":{"id":7122,"name":"onlyInitializing","nameLocations":["2390:16:31"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"2390:16:31"},"nodeType":"ModifierInvocation","src":"2390:16:31"}],"name":"__EIP712_init","nameLocation":"2324:13:31","nodeType":"FunctionDefinition","parameters":{"id":7121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7118,"mutability":"mutable","name":"name","nameLocation":"2352:4:31","nodeType":"VariableDeclaration","scope":7131,"src":"2338:18:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7117,"name":"string","nodeType":"ElementaryTypeName","src":"2338:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7120,"mutability":"mutable","name":"version","nameLocation":"2372:7:31","nodeType":"VariableDeclaration","scope":7131,"src":"2358:21:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7119,"name":"string","nodeType":"ElementaryTypeName","src":"2358:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2337:43:31"},"returnParameters":{"id":7124,"nodeType":"ParameterList","parameters":[],"src":"2407:0:31"},"scope":7249,"src":"2315:147:31","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7166,"nodeType":"Block","src":"2570:195:31","statements":[{"assignments":[7141],"declarations":[{"constant":false,"id":7141,"mutability":"mutable","name":"hashedName","nameLocation":"2588:10:31","nodeType":"VariableDeclaration","scope":7166,"src":"2580:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7140,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2580:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7148,"initialValue":{"arguments":[{"arguments":[{"id":7145,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7133,"src":"2617:4:31","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2611:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7143,"name":"bytes","nodeType":"ElementaryTypeName","src":"2611:5:31","typeDescriptions":{}}},"id":7146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2611:11:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7142,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2601:9:31","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2601:22:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2580:43:31"},{"assignments":[7150],"declarations":[{"constant":false,"id":7150,"mutability":"mutable","name":"hashedVersion","nameLocation":"2641:13:31","nodeType":"VariableDeclaration","scope":7166,"src":"2633:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7149,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2633:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7157,"initialValue":{"arguments":[{"arguments":[{"id":7154,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"2673:7:31","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2667:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7152,"name":"bytes","nodeType":"ElementaryTypeName","src":"2667:5:31","typeDescriptions":{}}},"id":7155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2667:14:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7151,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2657:9:31","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2657:25:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2633:49:31"},{"expression":{"id":7160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7158,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7108,"src":"2692:12:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7159,"name":"hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"2707:10:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2692:25:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7161,"nodeType":"ExpressionStatement","src":"2692:25:31"},{"expression":{"id":7164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7162,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7110,"src":"2727:15:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7163,"name":"hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7150,"src":"2745:13:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2727:31:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7165,"nodeType":"ExpressionStatement","src":"2727:31:31"}]},"id":7167,"implemented":true,"kind":"function","modifiers":[{"id":7138,"kind":"modifierInvocation","modifierName":{"id":7137,"name":"onlyInitializing","nameLocations":["2553:16:31"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"2553:16:31"},"nodeType":"ModifierInvocation","src":"2553:16:31"}],"name":"__EIP712_init_unchained","nameLocation":"2477:23:31","nodeType":"FunctionDefinition","parameters":{"id":7136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7133,"mutability":"mutable","name":"name","nameLocation":"2515:4:31","nodeType":"VariableDeclaration","scope":7167,"src":"2501:18:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7132,"name":"string","nodeType":"ElementaryTypeName","src":"2501:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7135,"mutability":"mutable","name":"version","nameLocation":"2535:7:31","nodeType":"VariableDeclaration","scope":7167,"src":"2521:21:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7134,"name":"string","nodeType":"ElementaryTypeName","src":"2521:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2500:43:31"},"returnParameters":{"id":7139,"nodeType":"ParameterList","parameters":[],"src":"2570:0:31"},"scope":7249,"src":"2468:297:31","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7181,"nodeType":"Block","src":"2913:98:31","statements":[{"expression":{"arguments":[{"id":7174,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7115,"src":"2952:10:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7175,"name":"_EIP712NameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7234,"src":"2964:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":7176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2964:17:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7177,"name":"_EIP712VersionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7243,"src":"2983:18:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":7178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2983:20:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7173,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7209,"src":"2930:21:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32) view returns (bytes32)"}},"id":7179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2930:74:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7172,"id":7180,"nodeType":"Return","src":"2923:81:31"}]},"documentation":{"id":7168,"nodeType":"StructuredDocumentation","src":"2771:75:31","text":" @dev Returns the domain separator for the current chain."},"id":7182,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparatorV4","nameLocation":"2860:18:31","nodeType":"FunctionDefinition","parameters":{"id":7169,"nodeType":"ParameterList","parameters":[],"src":"2878:2:31"},"returnParameters":{"id":7172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7171,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7182,"src":"2904:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7170,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2904:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2903:9:31"},"scope":7249,"src":"2851:160:31","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7208,"nodeType":"Block","src":"3166:108:31","statements":[{"expression":{"arguments":[{"arguments":[{"id":7196,"name":"typeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7184,"src":"3204:8:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7197,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7186,"src":"3214:8:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7198,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7188,"src":"3224:11:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":7199,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3237:5:31","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3243:7:31","memberName":"chainid","nodeType":"MemberAccess","src":"3237:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7203,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3260:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712Upgradeable_$7249","typeString":"contract EIP712Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712Upgradeable_$7249","typeString":"contract EIP712Upgradeable"}],"id":7202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3252:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7201,"name":"address","nodeType":"ElementaryTypeName","src":"3252:7:31","typeDescriptions":{}}},"id":7204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3252:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7194,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3193:3:31","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3197:6:31","memberName":"encode","nodeType":"MemberAccess","src":"3193:10:31","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3193:73:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7193,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3183:9:31","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3183:84:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7192,"id":7207,"nodeType":"Return","src":"3176:91:31"}]},"id":7209,"implemented":true,"kind":"function","modifiers":[],"name":"_buildDomainSeparator","nameLocation":"3026:21:31","nodeType":"FunctionDefinition","parameters":{"id":7189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7184,"mutability":"mutable","name":"typeHash","nameLocation":"3065:8:31","nodeType":"VariableDeclaration","scope":7209,"src":"3057:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7183,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3057:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7186,"mutability":"mutable","name":"nameHash","nameLocation":"3091:8:31","nodeType":"VariableDeclaration","scope":7209,"src":"3083:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7185,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3083:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7188,"mutability":"mutable","name":"versionHash","nameLocation":"3117:11:31","nodeType":"VariableDeclaration","scope":7209,"src":"3109:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7187,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3109:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3047:87:31"},"returnParameters":{"id":7192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7191,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7209,"src":"3157:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7190,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3157:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3156:9:31"},"scope":7249,"src":"3017:257:31","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":7224,"nodeType":"Block","src":"3985:90:31","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":7219,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7182,"src":"4035:18:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":7220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4035:20:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7221,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7212,"src":"4057:10:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7217,"name":"ECDSAUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"4002:16:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSAUpgradeable_$7099_$","typeString":"type(library ECDSAUpgradeable)"}},"id":7218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4019:15:31","memberName":"toTypedDataHash","nodeType":"MemberAccess","referencedDeclaration":7098,"src":"4002:32:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":7222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4002:66:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7216,"id":7223,"nodeType":"Return","src":"3995:73:31"}]},"documentation":{"id":7210,"nodeType":"StructuredDocumentation","src":"3280:614:31","text":" @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n keccak256(\"Mail(address to,string contents)\"),\n mailTo,\n keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"},"id":7225,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedDataV4","nameLocation":"3908:16:31","nodeType":"FunctionDefinition","parameters":{"id":7213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7212,"mutability":"mutable","name":"structHash","nameLocation":"3933:10:31","nodeType":"VariableDeclaration","scope":7225,"src":"3925:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7211,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3925:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3924:20:31"},"returnParameters":{"id":7216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7215,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7225,"src":"3976:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7214,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3976:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3975:9:31"},"scope":7249,"src":"3899:176:31","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":7233,"nodeType":"Block","src":"4378:36:31","statements":[{"expression":{"id":7231,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7108,"src":"4395:12:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7230,"id":7232,"nodeType":"Return","src":"4388:19:31"}]},"documentation":{"id":7226,"nodeType":"StructuredDocumentation","src":"4081:225:31","text":" @dev The hash of the name parameter for the EIP712 domain.\n NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\n are a concern."},"id":7234,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712NameHash","nameLocation":"4320:15:31","nodeType":"FunctionDefinition","parameters":{"id":7227,"nodeType":"ParameterList","parameters":[],"src":"4335:2:31"},"returnParameters":{"id":7230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7229,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7234,"src":"4369:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7228,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4369:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4368:9:31"},"scope":7249,"src":"4311:103:31","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":7242,"nodeType":"Block","src":"4723:39:31","statements":[{"expression":{"id":7240,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7110,"src":"4740:15:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7239,"id":7241,"nodeType":"Return","src":"4733:22:31"}]},"documentation":{"id":7235,"nodeType":"StructuredDocumentation","src":"4420:228:31","text":" @dev The hash of the version parameter for the EIP712 domain.\n NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\n are a concern."},"id":7243,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712VersionHash","nameLocation":"4662:18:31","nodeType":"FunctionDefinition","parameters":{"id":7236,"nodeType":"ParameterList","parameters":[],"src":"4680:2:31"},"returnParameters":{"id":7239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7238,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7243,"src":"4714:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7237,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4714:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4713:9:31"},"scope":7249,"src":"4653:109:31","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":7244,"nodeType":"StructuredDocumentation","src":"4768:254:31","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":7248,"mutability":"mutable","name":"__gap","nameLocation":"5047:5:31","nodeType":"VariableDeclaration","scope":7249,"src":"5027:25:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":7245,"name":"uint256","nodeType":"ElementaryTypeName","src":"5027:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7247,"length":{"hexValue":"3530","id":7246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5035:2:31","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"5027:11:31","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":7250,"src":"1391:3664:31","usedErrors":[]}],"src":"113:4943:31"},"id":31},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"ERC165Upgradeable":[7293],"IERC165Upgradeable":[7305],"Initializable":[1466]},"id":7294,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7251,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:32"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","file":"./IERC165Upgradeable.sol","id":7252,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7294,"sourceUnit":7306,"src":"124:34:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":7253,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7294,"sourceUnit":1467,"src":"159:45:32","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":7255,"name":"Initializable","nameLocations":["822:13:32"],"nodeType":"IdentifierPath","referencedDeclaration":1466,"src":"822:13:32"},"id":7256,"nodeType":"InheritanceSpecifier","src":"822:13:32"},{"baseName":{"id":7257,"name":"IERC165Upgradeable","nameLocations":["837:18:32"],"nodeType":"IdentifierPath","referencedDeclaration":7305,"src":"837:18:32"},"id":7258,"nodeType":"InheritanceSpecifier","src":"837:18:32"}],"canonicalName":"ERC165Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":7254,"nodeType":"StructuredDocumentation","src":"206:576:32","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":7293,"linearizedBaseContracts":[7293,7305,1466],"name":"ERC165Upgradeable","nameLocation":"801:17:32","nodeType":"ContractDefinition","nodes":[{"body":{"id":7263,"nodeType":"Block","src":"913:7:32","statements":[]},"id":7264,"implemented":true,"kind":"function","modifiers":[{"id":7261,"kind":"modifierInvocation","modifierName":{"id":7260,"name":"onlyInitializing","nameLocations":["896:16:32"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"896:16:32"},"nodeType":"ModifierInvocation","src":"896:16:32"}],"name":"__ERC165_init","nameLocation":"871:13:32","nodeType":"FunctionDefinition","parameters":{"id":7259,"nodeType":"ParameterList","parameters":[],"src":"884:2:32"},"returnParameters":{"id":7262,"nodeType":"ParameterList","parameters":[],"src":"913:0:32"},"scope":7293,"src":"862:58:32","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7269,"nodeType":"Block","src":"987:7:32","statements":[]},"id":7270,"implemented":true,"kind":"function","modifiers":[{"id":7267,"kind":"modifierInvocation","modifierName":{"id":7266,"name":"onlyInitializing","nameLocations":["970:16:32"],"nodeType":"IdentifierPath","referencedDeclaration":1411,"src":"970:16:32"},"nodeType":"ModifierInvocation","src":"970:16:32"}],"name":"__ERC165_init_unchained","nameLocation":"935:23:32","nodeType":"FunctionDefinition","parameters":{"id":7265,"nodeType":"ParameterList","parameters":[],"src":"958:2:32"},"returnParameters":{"id":7268,"nodeType":"ParameterList","parameters":[],"src":"987:0:32"},"scope":7293,"src":"926:68:32","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[7304],"body":{"id":7286,"nodeType":"Block","src":"1151:75:32","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7279,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7273,"src":"1168:11:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":7281,"name":"IERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7305,"src":"1188:18:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165Upgradeable_$7305_$","typeString":"type(contract IERC165Upgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165Upgradeable_$7305_$","typeString":"type(contract IERC165Upgradeable)"}],"id":7280,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1183:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1183:24:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165Upgradeable_$7305","typeString":"type(contract IERC165Upgradeable)"}},"id":7283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1208:11:32","memberName":"interfaceId","nodeType":"MemberAccess","src":"1183:36:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1168:51:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7278,"id":7285,"nodeType":"Return","src":"1161:58:32"}]},"documentation":{"id":7271,"nodeType":"StructuredDocumentation","src":"999:56:32","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":7287,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1069:17:32","nodeType":"FunctionDefinition","overrides":{"id":7275,"nodeType":"OverrideSpecifier","overrides":[],"src":"1127:8:32"},"parameters":{"id":7274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7273,"mutability":"mutable","name":"interfaceId","nameLocation":"1094:11:32","nodeType":"VariableDeclaration","scope":7287,"src":"1087:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7272,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1087:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1086:20:32"},"returnParameters":{"id":7278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7277,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7287,"src":"1145:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7276,"name":"bool","nodeType":"ElementaryTypeName","src":"1145:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1144:6:32"},"scope":7293,"src":"1060:166:32","stateMutability":"view","virtual":true,"visibility":"public"},{"constant":false,"documentation":{"id":7288,"nodeType":"StructuredDocumentation","src":"1232:254:32","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":7292,"mutability":"mutable","name":"__gap","nameLocation":"1511:5:32","nodeType":"VariableDeclaration","scope":7293,"src":"1491:25:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":7289,"name":"uint256","nodeType":"ElementaryTypeName","src":"1491:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7291,"length":{"hexValue":"3530","id":7290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1499:2:32","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1491:11:32","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":7294,"src":"783:736:32","usedErrors":[]}],"src":"99:1421:32"},"id":32},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","exportedSymbols":{"IERC165Upgradeable":[7305]},"id":7306,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7295,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:33"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":7296,"nodeType":"StructuredDocumentation","src":"125:279:33","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":7305,"linearizedBaseContracts":[7305],"name":"IERC165Upgradeable","nameLocation":"415:18:33","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7297,"nodeType":"StructuredDocumentation","src":"440:340:33","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":7304,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"794:17:33","nodeType":"FunctionDefinition","parameters":{"id":7300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7299,"mutability":"mutable","name":"interfaceId","nameLocation":"819:11:33","nodeType":"VariableDeclaration","scope":7304,"src":"812:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7298,"name":"bytes4","nodeType":"ElementaryTypeName","src":"812:6:33","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"811:20:33"},"returnParameters":{"id":7303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7304,"src":"855:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7301,"name":"bool","nodeType":"ElementaryTypeName","src":"855:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"854:6:33"},"scope":7305,"src":"785:76:33","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7306,"src":"405:458:33","usedErrors":[]}],"src":"100:764:33"},"id":33},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","exportedSymbols":{"MathUpgradeable":[8170]},"id":8171,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7307,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:34"},{"abstract":false,"baseContracts":[],"canonicalName":"MathUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":7308,"nodeType":"StructuredDocumentation","src":"128:73:34","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":8170,"linearizedBaseContracts":[8170],"name":"MathUpgradeable","nameLocation":"210:15:34","nodeType":"ContractDefinition","nodes":[{"canonicalName":"MathUpgradeable.Rounding","id":7312,"members":[{"id":7309,"name":"Down","nameLocation":"256:4:34","nodeType":"EnumValue","src":"256:4:34"},{"id":7310,"name":"Up","nameLocation":"298:2:34","nodeType":"EnumValue","src":"298:2:34"},{"id":7311,"name":"Zero","nameLocation":"329:4:34","nodeType":"EnumValue","src":"329:4:34"}],"name":"Rounding","nameLocation":"237:8:34","nodeType":"EnumDefinition","src":"232:122:34"},{"body":{"id":7329,"nodeType":"Block","src":"491:37:34","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7322,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7315,"src":"508:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7323,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"512:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"508:5:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":7326,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"520:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"508:13:34","trueExpression":{"id":7325,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7315,"src":"516:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7321,"id":7328,"nodeType":"Return","src":"501:20:34"}]},"documentation":{"id":7313,"nodeType":"StructuredDocumentation","src":"360:59:34","text":" @dev Returns the largest of two numbers."},"id":7330,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"433:3:34","nodeType":"FunctionDefinition","parameters":{"id":7318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7315,"mutability":"mutable","name":"a","nameLocation":"445:1:34","nodeType":"VariableDeclaration","scope":7330,"src":"437:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7314,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7317,"mutability":"mutable","name":"b","nameLocation":"456:1:34","nodeType":"VariableDeclaration","scope":7330,"src":"448:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7316,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"436:22:34"},"returnParameters":{"id":7321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7330,"src":"482:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7319,"name":"uint256","nodeType":"ElementaryTypeName","src":"482:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"481:9:34"},"scope":8170,"src":"424:104:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7347,"nodeType":"Block","src":"666:37:34","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7340,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7333,"src":"683:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7341,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7335,"src":"687:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"683:5:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":7344,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7335,"src":"695:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"683:13:34","trueExpression":{"id":7343,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7333,"src":"691:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7339,"id":7346,"nodeType":"Return","src":"676:20:34"}]},"documentation":{"id":7331,"nodeType":"StructuredDocumentation","src":"534:60:34","text":" @dev Returns the smallest of two numbers."},"id":7348,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"608:3:34","nodeType":"FunctionDefinition","parameters":{"id":7336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7333,"mutability":"mutable","name":"a","nameLocation":"620:1:34","nodeType":"VariableDeclaration","scope":7348,"src":"612:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7332,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7335,"mutability":"mutable","name":"b","nameLocation":"631:1:34","nodeType":"VariableDeclaration","scope":7348,"src":"623:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7334,"name":"uint256","nodeType":"ElementaryTypeName","src":"623:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"611:22:34"},"returnParameters":{"id":7339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7338,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7348,"src":"657:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7337,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"656:9:34"},"scope":8170,"src":"599:104:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7370,"nodeType":"Block","src":"887:82:34","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7358,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7351,"src":"942:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":7359,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7353,"src":"946:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"942:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7361,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"941:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7362,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7351,"src":"952:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":7363,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7353,"src":"956:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7365,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"951:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":7366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"961:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"951:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7357,"id":7369,"nodeType":"Return","src":"934:28:34"}]},"documentation":{"id":7349,"nodeType":"StructuredDocumentation","src":"709:102:34","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":7371,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"825:7:34","nodeType":"FunctionDefinition","parameters":{"id":7354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7351,"mutability":"mutable","name":"a","nameLocation":"841:1:34","nodeType":"VariableDeclaration","scope":7371,"src":"833:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7350,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7353,"mutability":"mutable","name":"b","nameLocation":"852:1:34","nodeType":"VariableDeclaration","scope":7371,"src":"844:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7352,"name":"uint256","nodeType":"ElementaryTypeName","src":"844:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"832:22:34"},"returnParameters":{"id":7357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7356,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7371,"src":"878:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7355,"name":"uint256","nodeType":"ElementaryTypeName","src":"878:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"877:9:34"},"scope":8170,"src":"816:153:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7395,"nodeType":"Block","src":"1239:123:34","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7381,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7374,"src":"1327:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1332:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1327:6:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7385,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7374,"src":"1341:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1345:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1341:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7388,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1340:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7389,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7376,"src":"1350:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1340:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1354:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1340:15:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1327:28:34","trueExpression":{"hexValue":"30","id":7384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1336:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7380,"id":7394,"nodeType":"Return","src":"1320:35:34"}]},"documentation":{"id":7372,"nodeType":"StructuredDocumentation","src":"975:188:34","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":7396,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1177:7:34","nodeType":"FunctionDefinition","parameters":{"id":7377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7374,"mutability":"mutable","name":"a","nameLocation":"1193:1:34","nodeType":"VariableDeclaration","scope":7396,"src":"1185:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7373,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7376,"mutability":"mutable","name":"b","nameLocation":"1204:1:34","nodeType":"VariableDeclaration","scope":7396,"src":"1196:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7375,"name":"uint256","nodeType":"ElementaryTypeName","src":"1196:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1184:22:34"},"returnParameters":{"id":7380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7379,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7396,"src":"1230:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7378,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1229:9:34"},"scope":8170,"src":"1168:194:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7517,"nodeType":"Block","src":"1806:3797:34","statements":[{"id":7516,"nodeType":"UncheckedBlock","src":"1816:3781:34","statements":[{"assignments":[7409],"declarations":[{"constant":false,"id":7409,"mutability":"mutable","name":"prod0","nameLocation":"2145:5:34","nodeType":"VariableDeclaration","scope":7516,"src":"2137:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7408,"name":"uint256","nodeType":"ElementaryTypeName","src":"2137:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7410,"nodeType":"VariableDeclarationStatement","src":"2137:13:34"},{"assignments":[7412],"declarations":[{"constant":false,"id":7412,"mutability":"mutable","name":"prod1","nameLocation":"2217:5:34","nodeType":"VariableDeclaration","scope":7516,"src":"2209:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7411,"name":"uint256","nodeType":"ElementaryTypeName","src":"2209:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7413,"nodeType":"VariableDeclarationStatement","src":"2209:13:34"},{"AST":{"nodeType":"YulBlock","src":"2289:157:34","statements":[{"nodeType":"YulVariableDeclaration","src":"2307:30:34","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2324:1:34"},{"name":"y","nodeType":"YulIdentifier","src":"2327:1:34"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2334:1:34","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2330:3:34"},"nodeType":"YulFunctionCall","src":"2330:6:34"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2317:6:34"},"nodeType":"YulFunctionCall","src":"2317:20:34"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2311:2:34","type":""}]},{"nodeType":"YulAssignment","src":"2354:18:34","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2367:1:34"},{"name":"y","nodeType":"YulIdentifier","src":"2370:1:34"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2363:3:34"},"nodeType":"YulFunctionCall","src":"2363:9:34"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2354:5:34"}]},{"nodeType":"YulAssignment","src":"2389:43:34","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2406:2:34"},{"name":"prod0","nodeType":"YulIdentifier","src":"2410:5:34"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2402:3:34"},"nodeType":"YulFunctionCall","src":"2402:14:34"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2421:2:34"},{"name":"prod0","nodeType":"YulIdentifier","src":"2425:5:34"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2418:2:34"},"nodeType":"YulFunctionCall","src":"2418:13:34"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2398:3:34"},"nodeType":"YulFunctionCall","src":"2398:34:34"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2389:5:34"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":7409,"isOffset":false,"isSlot":false,"src":"2354:5:34","valueSize":1},{"declaration":7409,"isOffset":false,"isSlot":false,"src":"2410:5:34","valueSize":1},{"declaration":7409,"isOffset":false,"isSlot":false,"src":"2425:5:34","valueSize":1},{"declaration":7412,"isOffset":false,"isSlot":false,"src":"2389:5:34","valueSize":1},{"declaration":7399,"isOffset":false,"isSlot":false,"src":"2324:1:34","valueSize":1},{"declaration":7399,"isOffset":false,"isSlot":false,"src":"2367:1:34","valueSize":1},{"declaration":7401,"isOffset":false,"isSlot":false,"src":"2327:1:34","valueSize":1},{"declaration":7401,"isOffset":false,"isSlot":false,"src":"2370:1:34","valueSize":1}],"id":7414,"nodeType":"InlineAssembly","src":"2280:166:34"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7415,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7412,"src":"2527:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2536:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2527:10:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7423,"nodeType":"IfStatement","src":"2523:75:34","trueBody":{"id":7422,"nodeType":"Block","src":"2539:59:34","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7418,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7409,"src":"2564:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7419,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7403,"src":"2572:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2564:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7407,"id":7421,"nodeType":"Return","src":"2557:26:34"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7425,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7403,"src":"2708:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7426,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7412,"src":"2722:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2708:19:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7424,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2700:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":7428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2700:28:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7429,"nodeType":"ExpressionStatement","src":"2700:28:34"},{"assignments":[7431],"declarations":[{"constant":false,"id":7431,"mutability":"mutable","name":"remainder","nameLocation":"2992:9:34","nodeType":"VariableDeclaration","scope":7516,"src":"2984:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7430,"name":"uint256","nodeType":"ElementaryTypeName","src":"2984:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7432,"nodeType":"VariableDeclarationStatement","src":"2984:17:34"},{"AST":{"nodeType":"YulBlock","src":"3024:291:34","statements":[{"nodeType":"YulAssignment","src":"3093:38:34","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3113:1:34"},{"name":"y","nodeType":"YulIdentifier","src":"3116:1:34"},{"name":"denominator","nodeType":"YulIdentifier","src":"3119:11:34"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3106:6:34"},"nodeType":"YulFunctionCall","src":"3106:25:34"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3093:9:34"}]},{"nodeType":"YulAssignment","src":"3213:41:34","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3226:5:34"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3236:9:34"},{"name":"prod0","nodeType":"YulIdentifier","src":"3247:5:34"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3233:2:34"},"nodeType":"YulFunctionCall","src":"3233:20:34"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3222:3:34"},"nodeType":"YulFunctionCall","src":"3222:32:34"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3213:5:34"}]},{"nodeType":"YulAssignment","src":"3271:30:34","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3284:5:34"},{"name":"remainder","nodeType":"YulIdentifier","src":"3291:9:34"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3280:3:34"},"nodeType":"YulFunctionCall","src":"3280:21:34"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3271:5:34"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":7403,"isOffset":false,"isSlot":false,"src":"3119:11:34","valueSize":1},{"declaration":7409,"isOffset":false,"isSlot":false,"src":"3247:5:34","valueSize":1},{"declaration":7409,"isOffset":false,"isSlot":false,"src":"3271:5:34","valueSize":1},{"declaration":7409,"isOffset":false,"isSlot":false,"src":"3284:5:34","valueSize":1},{"declaration":7412,"isOffset":false,"isSlot":false,"src":"3213:5:34","valueSize":1},{"declaration":7412,"isOffset":false,"isSlot":false,"src":"3226:5:34","valueSize":1},{"declaration":7431,"isOffset":false,"isSlot":false,"src":"3093:9:34","valueSize":1},{"declaration":7431,"isOffset":false,"isSlot":false,"src":"3236:9:34","valueSize":1},{"declaration":7431,"isOffset":false,"isSlot":false,"src":"3291:9:34","valueSize":1},{"declaration":7399,"isOffset":false,"isSlot":false,"src":"3113:1:34","valueSize":1},{"declaration":7401,"isOffset":false,"isSlot":false,"src":"3116:1:34","valueSize":1}],"id":7433,"nodeType":"InlineAssembly","src":"3015:300:34"},{"assignments":[7435],"declarations":[{"constant":false,"id":7435,"mutability":"mutable","name":"twos","nameLocation":"3630:4:34","nodeType":"VariableDeclaration","scope":7516,"src":"3622:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7434,"name":"uint256","nodeType":"ElementaryTypeName","src":"3622:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7443,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7436,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7403,"src":"3637:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3652:12:34","subExpression":{"id":7437,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7403,"src":"3653:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3667:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3652:16:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7441,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3651:18:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3637:32:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3622:47:34"},{"AST":{"nodeType":"YulBlock","src":"3692:362:34","statements":[{"nodeType":"YulAssignment","src":"3757:37:34","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"3776:11:34"},{"name":"twos","nodeType":"YulIdentifier","src":"3789:4:34"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3772:3:34"},"nodeType":"YulFunctionCall","src":"3772:22:34"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"3757:11:34"}]},{"nodeType":"YulAssignment","src":"3861:25:34","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3874:5:34"},{"name":"twos","nodeType":"YulIdentifier","src":"3881:4:34"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3870:3:34"},"nodeType":"YulFunctionCall","src":"3870:16:34"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3861:5:34"}]},{"nodeType":"YulAssignment","src":"4001:39:34","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4021:1:34","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4024:4:34"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4017:3:34"},"nodeType":"YulFunctionCall","src":"4017:12:34"},{"name":"twos","nodeType":"YulIdentifier","src":"4031:4:34"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4013:3:34"},"nodeType":"YulFunctionCall","src":"4013:23:34"},{"kind":"number","nodeType":"YulLiteral","src":"4038:1:34","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4009:3:34"},"nodeType":"YulFunctionCall","src":"4009:31:34"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4001:4:34"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":7403,"isOffset":false,"isSlot":false,"src":"3757:11:34","valueSize":1},{"declaration":7403,"isOffset":false,"isSlot":false,"src":"3776:11:34","valueSize":1},{"declaration":7409,"isOffset":false,"isSlot":false,"src":"3861:5:34","valueSize":1},{"declaration":7409,"isOffset":false,"isSlot":false,"src":"3874:5:34","valueSize":1},{"declaration":7435,"isOffset":false,"isSlot":false,"src":"3789:4:34","valueSize":1},{"declaration":7435,"isOffset":false,"isSlot":false,"src":"3881:4:34","valueSize":1},{"declaration":7435,"isOffset":false,"isSlot":false,"src":"4001:4:34","valueSize":1},{"declaration":7435,"isOffset":false,"isSlot":false,"src":"4024:4:34","valueSize":1},{"declaration":7435,"isOffset":false,"isSlot":false,"src":"4031:4:34","valueSize":1}],"id":7444,"nodeType":"InlineAssembly","src":"3683:371:34"},{"expression":{"id":7449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7445,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7409,"src":"4120:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7446,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7412,"src":"4129:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7447,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7435,"src":"4137:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4129:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4120:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7450,"nodeType":"ExpressionStatement","src":"4120:21:34"},{"assignments":[7452],"declarations":[{"constant":false,"id":7452,"mutability":"mutable","name":"inverse","nameLocation":"4467:7:34","nodeType":"VariableDeclaration","scope":7516,"src":"4459:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7451,"name":"uint256","nodeType":"ElementaryTypeName","src":"4459:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7459,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":7453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4478:1:34","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7454,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7403,"src":"4482:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4478:15:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7456,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4477:17:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":7457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4497:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4477:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4459:39:34"},{"expression":{"id":7466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7460,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"4715:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4726:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7462,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7403,"src":"4730:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7463,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"4744:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4730:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4726:25:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4715:36:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7467,"nodeType":"ExpressionStatement","src":"4715:36:34"},{"expression":{"id":7474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7468,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"4784:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4795:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7470,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7403,"src":"4799:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7471,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"4813:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4799:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4795:25:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4784:36:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7475,"nodeType":"ExpressionStatement","src":"4784:36:34"},{"expression":{"id":7482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7476,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"4854:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4865:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7478,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7403,"src":"4869:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7479,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"4883:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4869:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4865:25:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4854:36:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7483,"nodeType":"ExpressionStatement","src":"4854:36:34"},{"expression":{"id":7490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7484,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"4924:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4935:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7486,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7403,"src":"4939:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7487,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"4953:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4939:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4935:25:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4924:36:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7491,"nodeType":"ExpressionStatement","src":"4924:36:34"},{"expression":{"id":7498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7492,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"4994:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5005:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7494,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7403,"src":"5009:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7495,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"5023:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5009:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5005:25:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4994:36:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7499,"nodeType":"ExpressionStatement","src":"4994:36:34"},{"expression":{"id":7506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7500,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"5065:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5076:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7502,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7403,"src":"5080:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7503,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"5094:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5080:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5076:25:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5065:36:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7507,"nodeType":"ExpressionStatement","src":"5065:36:34"},{"expression":{"id":7512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7508,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7406,"src":"5535:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7509,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7409,"src":"5544:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7510,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"5552:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5544:15:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5535:24:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7513,"nodeType":"ExpressionStatement","src":"5535:24:34"},{"expression":{"id":7514,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7406,"src":"5580:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7407,"id":7515,"nodeType":"Return","src":"5573:13:34"}]}]},"documentation":{"id":7397,"nodeType":"StructuredDocumentation","src":"1368:305:34","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":7518,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1687:6:34","nodeType":"FunctionDefinition","parameters":{"id":7404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7399,"mutability":"mutable","name":"x","nameLocation":"1711:1:34","nodeType":"VariableDeclaration","scope":7518,"src":"1703:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7398,"name":"uint256","nodeType":"ElementaryTypeName","src":"1703:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7401,"mutability":"mutable","name":"y","nameLocation":"1730:1:34","nodeType":"VariableDeclaration","scope":7518,"src":"1722:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7400,"name":"uint256","nodeType":"ElementaryTypeName","src":"1722:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7403,"mutability":"mutable","name":"denominator","nameLocation":"1749:11:34","nodeType":"VariableDeclaration","scope":7518,"src":"1741:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7402,"name":"uint256","nodeType":"ElementaryTypeName","src":"1741:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1693:73:34"},"returnParameters":{"id":7407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7406,"mutability":"mutable","name":"result","nameLocation":"1798:6:34","nodeType":"VariableDeclaration","scope":7518,"src":"1790:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7405,"name":"uint256","nodeType":"ElementaryTypeName","src":"1790:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1789:16:34"},"scope":8170,"src":"1678:3925:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7561,"nodeType":"Block","src":"5883:189:34","statements":[{"assignments":[7534],"declarations":[{"constant":false,"id":7534,"mutability":"mutable","name":"result","nameLocation":"5901:6:34","nodeType":"VariableDeclaration","scope":7561,"src":"5893:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7533,"name":"uint256","nodeType":"ElementaryTypeName","src":"5893:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7540,"initialValue":{"arguments":[{"id":7536,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7521,"src":"5917:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7537,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7523,"src":"5920:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7538,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7525,"src":"5923:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7535,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[7518,7562],"referencedDeclaration":7518,"src":"5910:6:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5910:25:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5893:42:34"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"},"id":7544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7541,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7528,"src":"5949:8:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":7542,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7312,"src":"5961:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$7312_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":7543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5970:2:34","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":7310,"src":"5961:11:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"src":"5949:23:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7546,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7521,"src":"5983:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7547,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7523,"src":"5986:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7548,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7525,"src":"5989:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7545,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"5976:6:34","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5976:25:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6004:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5976:29:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5949:56:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7558,"nodeType":"IfStatement","src":"5945:98:34","trueBody":{"id":7557,"nodeType":"Block","src":"6007:36:34","statements":[{"expression":{"id":7555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7553,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7534,"src":"6021:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":7554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6031:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6021:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7556,"nodeType":"ExpressionStatement","src":"6021:11:34"}]}},{"expression":{"id":7559,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7534,"src":"6059:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7532,"id":7560,"nodeType":"Return","src":"6052:13:34"}]},"documentation":{"id":7519,"nodeType":"StructuredDocumentation","src":"5609:121:34","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":7562,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"5744:6:34","nodeType":"FunctionDefinition","parameters":{"id":7529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7521,"mutability":"mutable","name":"x","nameLocation":"5768:1:34","nodeType":"VariableDeclaration","scope":7562,"src":"5760:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7520,"name":"uint256","nodeType":"ElementaryTypeName","src":"5760:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7523,"mutability":"mutable","name":"y","nameLocation":"5787:1:34","nodeType":"VariableDeclaration","scope":7562,"src":"5779:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7522,"name":"uint256","nodeType":"ElementaryTypeName","src":"5779:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7525,"mutability":"mutable","name":"denominator","nameLocation":"5806:11:34","nodeType":"VariableDeclaration","scope":7562,"src":"5798:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7524,"name":"uint256","nodeType":"ElementaryTypeName","src":"5798:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7528,"mutability":"mutable","name":"rounding","nameLocation":"5836:8:34","nodeType":"VariableDeclaration","scope":7562,"src":"5827:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":7527,"nodeType":"UserDefinedTypeName","pathNode":{"id":7526,"name":"Rounding","nameLocations":["5827:8:34"],"nodeType":"IdentifierPath","referencedDeclaration":7312,"src":"5827:8:34"},"referencedDeclaration":7312,"src":"5827:8:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"5750:100:34"},"returnParameters":{"id":7532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7531,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7562,"src":"5874:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7530,"name":"uint256","nodeType":"ElementaryTypeName","src":"5874:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5873:9:34"},"scope":8170,"src":"5735:337:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7673,"nodeType":"Block","src":"6348:1585:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7570,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"6362:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6367:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6362:6:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7576,"nodeType":"IfStatement","src":"6358:45:34","trueBody":{"id":7575,"nodeType":"Block","src":"6370:33:34","statements":[{"expression":{"hexValue":"30","id":7573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6391:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":7569,"id":7574,"nodeType":"Return","src":"6384:8:34"}]}},{"assignments":[7578],"declarations":[{"constant":false,"id":7578,"mutability":"mutable","name":"result","nameLocation":"7090:6:34","nodeType":"VariableDeclaration","scope":7673,"src":"7082:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7577,"name":"uint256","nodeType":"ElementaryTypeName","src":"7082:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7587,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7099:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7581,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"7110:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7580,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[7842,7878],"referencedDeclaration":7842,"src":"7105:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7105:7:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7116:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7105:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7585,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7104:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7099:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7082:36:34"},{"id":7672,"nodeType":"UncheckedBlock","src":"7519:408:34","statements":[{"expression":{"id":7597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7588,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7543:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7589,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7553:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7590,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"7562:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7591,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7566:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7562:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7553:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7594,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7552:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7577:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7552:26:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7543:35:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7598,"nodeType":"ExpressionStatement","src":"7543:35:34"},{"expression":{"id":7608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7599,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7592:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7600,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7602:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7601,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"7611:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7602,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7615:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7611:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7602:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7605,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7601:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7626:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7601:26:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7592:35:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7609,"nodeType":"ExpressionStatement","src":"7592:35:34"},{"expression":{"id":7619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7610,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7641:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7611,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7651:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7612,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"7660:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7613,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7664:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7660:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7651:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7616,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7650:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7675:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7650:26:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7641:35:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7620,"nodeType":"ExpressionStatement","src":"7641:35:34"},{"expression":{"id":7630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7621,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7690:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7622,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7700:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7623,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"7709:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7624,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7713:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7709:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7700:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7627,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7699:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7724:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7699:26:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7690:35:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7631,"nodeType":"ExpressionStatement","src":"7690:35:34"},{"expression":{"id":7641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7632,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7739:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7633,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7749:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7634,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"7758:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7635,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7762:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7758:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7749:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7638,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7748:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7773:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7748:26:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7739:35:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7642,"nodeType":"ExpressionStatement","src":"7739:35:34"},{"expression":{"id":7652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7643,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7788:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7644,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7798:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7645,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"7807:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7646,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7811:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7807:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7798:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7649,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7797:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7822:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7797:26:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7788:35:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7653,"nodeType":"ExpressionStatement","src":"7788:35:34"},{"expression":{"id":7663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7654,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7837:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7655,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7847:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7656,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"7856:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7657,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7860:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7856:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7847:19:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7660,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7846:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7871:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7846:26:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7837:35:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7664,"nodeType":"ExpressionStatement","src":"7837:35:34"},{"expression":{"arguments":[{"id":7666,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7897:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7667,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"7905:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7668,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"7909:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7905:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7665,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7348,"src":"7893:3:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7893:23:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7569,"id":7671,"nodeType":"Return","src":"7886:30:34"}]}]},"documentation":{"id":7563,"nodeType":"StructuredDocumentation","src":"6078:208:34","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":7674,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6300:4:34","nodeType":"FunctionDefinition","parameters":{"id":7566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7565,"mutability":"mutable","name":"a","nameLocation":"6313:1:34","nodeType":"VariableDeclaration","scope":7674,"src":"6305:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7564,"name":"uint256","nodeType":"ElementaryTypeName","src":"6305:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6304:11:34"},"returnParameters":{"id":7569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7568,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7674,"src":"6339:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7567,"name":"uint256","nodeType":"ElementaryTypeName","src":"6339:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6338:9:34"},"scope":8170,"src":"6291:1642:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7709,"nodeType":"Block","src":"8109:161:34","statements":[{"id":7708,"nodeType":"UncheckedBlock","src":"8119:145:34","statements":[{"assignments":[7686],"declarations":[{"constant":false,"id":7686,"mutability":"mutable","name":"result","nameLocation":"8151:6:34","nodeType":"VariableDeclaration","scope":7708,"src":"8143:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7685,"name":"uint256","nodeType":"ElementaryTypeName","src":"8143:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7690,"initialValue":{"arguments":[{"id":7688,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"8165:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7687,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[7674,7710],"referencedDeclaration":7674,"src":"8160:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8160:7:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8143:24:34"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7691,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7686,"src":"8188:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"},"id":7695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7692,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7680,"src":"8198:8:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":7693,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7312,"src":"8210:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$7312_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":7694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8219:2:34","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":7310,"src":"8210:11:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"src":"8198:23:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7686,"src":"8225:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7686,"src":"8234:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8225:15:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7699,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"8243:1:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8225:19:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8198:46:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":7703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8251:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":7704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8198:54:34","trueExpression":{"hexValue":"31","id":7702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8247:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":7705,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8197:56:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8188:65:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7684,"id":7707,"nodeType":"Return","src":"8181:72:34"}]}]},"documentation":{"id":7675,"nodeType":"StructuredDocumentation","src":"7939:89:34","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":7710,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8042:4:34","nodeType":"FunctionDefinition","parameters":{"id":7681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7677,"mutability":"mutable","name":"a","nameLocation":"8055:1:34","nodeType":"VariableDeclaration","scope":7710,"src":"8047:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7676,"name":"uint256","nodeType":"ElementaryTypeName","src":"8047:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7680,"mutability":"mutable","name":"rounding","nameLocation":"8067:8:34","nodeType":"VariableDeclaration","scope":7710,"src":"8058:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":7679,"nodeType":"UserDefinedTypeName","pathNode":{"id":7678,"name":"Rounding","nameLocations":["8058:8:34"],"nodeType":"IdentifierPath","referencedDeclaration":7312,"src":"8058:8:34"},"referencedDeclaration":7312,"src":"8058:8:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"8046:30:34"},"returnParameters":{"id":7684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7683,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7710,"src":"8100:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7682,"name":"uint256","nodeType":"ElementaryTypeName","src":"8100:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8099:9:34"},"scope":8170,"src":"8033:237:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7841,"nodeType":"Block","src":"8455:922:34","statements":[{"assignments":[7719],"declarations":[{"constant":false,"id":7719,"mutability":"mutable","name":"result","nameLocation":"8473:6:34","nodeType":"VariableDeclaration","scope":7841,"src":"8465:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7718,"name":"uint256","nodeType":"ElementaryTypeName","src":"8465:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7721,"initialValue":{"hexValue":"30","id":7720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8482:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8465:18:34"},{"id":7838,"nodeType":"UncheckedBlock","src":"8493:855:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7722,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"8521:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8530:3:34","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8521:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8536:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8521:16:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7736,"nodeType":"IfStatement","src":"8517:99:34","trueBody":{"id":7735,"nodeType":"Block","src":"8539:77:34","statements":[{"expression":{"id":7729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7727,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"8557:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":7728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8567:3:34","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8557:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7730,"nodeType":"ExpressionStatement","src":"8557:13:34"},{"expression":{"id":7733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7731,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"8588:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":7732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8598:3:34","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8588:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7734,"nodeType":"ExpressionStatement","src":"8588:13:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7737,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"8633:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":7738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8642:2:34","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8633:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8647:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8633:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7751,"nodeType":"IfStatement","src":"8629:96:34","trueBody":{"id":7750,"nodeType":"Block","src":"8650:75:34","statements":[{"expression":{"id":7744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7742,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"8668:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":7743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8678:2:34","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8668:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7745,"nodeType":"ExpressionStatement","src":"8668:12:34"},{"expression":{"id":7748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7746,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"8698:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":7747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8708:2:34","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8698:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7749,"nodeType":"ExpressionStatement","src":"8698:12:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"8742:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":7753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8751:2:34","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8742:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8756:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8742:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7766,"nodeType":"IfStatement","src":"8738:96:34","trueBody":{"id":7765,"nodeType":"Block","src":"8759:75:34","statements":[{"expression":{"id":7759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7757,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"8777:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":7758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8787:2:34","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8777:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7760,"nodeType":"ExpressionStatement","src":"8777:12:34"},{"expression":{"id":7763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7761,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"8807:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":7762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8817:2:34","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8807:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7764,"nodeType":"ExpressionStatement","src":"8807:12:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7767,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"8851:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":7768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8860:2:34","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"8851:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8865:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8851:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7781,"nodeType":"IfStatement","src":"8847:96:34","trueBody":{"id":7780,"nodeType":"Block","src":"8868:75:34","statements":[{"expression":{"id":7774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7772,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"8886:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":7773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8896:2:34","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"8886:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7775,"nodeType":"ExpressionStatement","src":"8886:12:34"},{"expression":{"id":7778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7776,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"8916:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":7777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8926:2:34","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"8916:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7779,"nodeType":"ExpressionStatement","src":"8916:12:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7782,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"8960:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":7783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8969:1:34","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"8960:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8973:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8960:14:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7796,"nodeType":"IfStatement","src":"8956:93:34","trueBody":{"id":7795,"nodeType":"Block","src":"8976:73:34","statements":[{"expression":{"id":7789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7787,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"8994:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":7788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9004:1:34","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"8994:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7790,"nodeType":"ExpressionStatement","src":"8994:11:34"},{"expression":{"id":7793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7791,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"9023:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":7792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9033:1:34","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9023:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7794,"nodeType":"ExpressionStatement","src":"9023:11:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7797,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"9066:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":7798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9075:1:34","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9066:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9079:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9066:14:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7811,"nodeType":"IfStatement","src":"9062:93:34","trueBody":{"id":7810,"nodeType":"Block","src":"9082:73:34","statements":[{"expression":{"id":7804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7802,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"9100:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":7803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9110:1:34","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9100:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7805,"nodeType":"ExpressionStatement","src":"9100:11:34"},{"expression":{"id":7808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7806,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"9129:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":7807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9139:1:34","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9129:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7809,"nodeType":"ExpressionStatement","src":"9129:11:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7812,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"9172:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":7813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9181:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9172:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9185:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9172:14:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7826,"nodeType":"IfStatement","src":"9168:93:34","trueBody":{"id":7825,"nodeType":"Block","src":"9188:73:34","statements":[{"expression":{"id":7819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7817,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"9206:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":7818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9216:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9206:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7820,"nodeType":"ExpressionStatement","src":"9206:11:34"},{"expression":{"id":7823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7821,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"9235:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":7822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9245:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9235:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7824,"nodeType":"ExpressionStatement","src":"9235:11:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7827,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"9278:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9287:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9278:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9291:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9278:14:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7837,"nodeType":"IfStatement","src":"9274:64:34","trueBody":{"id":7836,"nodeType":"Block","src":"9294:44:34","statements":[{"expression":{"id":7834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7832,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"9312:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":7833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9322:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9312:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7835,"nodeType":"ExpressionStatement","src":"9312:11:34"}]}}]},{"expression":{"id":7839,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"9364:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7717,"id":7840,"nodeType":"Return","src":"9357:13:34"}]},"documentation":{"id":7711,"nodeType":"StructuredDocumentation","src":"8276:113:34","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":7842,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8403:4:34","nodeType":"FunctionDefinition","parameters":{"id":7714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7713,"mutability":"mutable","name":"value","nameLocation":"8416:5:34","nodeType":"VariableDeclaration","scope":7842,"src":"8408:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7712,"name":"uint256","nodeType":"ElementaryTypeName","src":"8408:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8407:15:34"},"returnParameters":{"id":7717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7842,"src":"8446:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7715,"name":"uint256","nodeType":"ElementaryTypeName","src":"8446:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8445:9:34"},"scope":8170,"src":"8394:983:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7877,"nodeType":"Block","src":"9610:165:34","statements":[{"id":7876,"nodeType":"UncheckedBlock","src":"9620:149:34","statements":[{"assignments":[7854],"declarations":[{"constant":false,"id":7854,"mutability":"mutable","name":"result","nameLocation":"9652:6:34","nodeType":"VariableDeclaration","scope":7876,"src":"9644:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7853,"name":"uint256","nodeType":"ElementaryTypeName","src":"9644:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7858,"initialValue":{"arguments":[{"id":7856,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7845,"src":"9666:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7855,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[7842,7878],"referencedDeclaration":7842,"src":"9661:4:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9661:11:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9644:28:34"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7859,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7854,"src":"9693:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"},"id":7863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7860,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7848,"src":"9703:8:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":7861,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7312,"src":"9715:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$7312_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":7862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9724:2:34","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":7310,"src":"9715:11:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"src":"9703:23:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9730:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":7865,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7854,"src":"9735:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9730:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7867,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7845,"src":"9744:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9730:19:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9703:46:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":7871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9756:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":7872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9703:54:34","trueExpression":{"hexValue":"31","id":7870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9752:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":7873,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9702:56:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9693:65:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7852,"id":7875,"nodeType":"Return","src":"9686:72:34"}]}]},"documentation":{"id":7843,"nodeType":"StructuredDocumentation","src":"9383:142:34","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":7878,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9539:4:34","nodeType":"FunctionDefinition","parameters":{"id":7849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7845,"mutability":"mutable","name":"value","nameLocation":"9552:5:34","nodeType":"VariableDeclaration","scope":7878,"src":"9544:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7844,"name":"uint256","nodeType":"ElementaryTypeName","src":"9544:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7848,"mutability":"mutable","name":"rounding","nameLocation":"9568:8:34","nodeType":"VariableDeclaration","scope":7878,"src":"9559:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":7847,"nodeType":"UserDefinedTypeName","pathNode":{"id":7846,"name":"Rounding","nameLocations":["9559:8:34"],"nodeType":"IdentifierPath","referencedDeclaration":7312,"src":"9559:8:34"},"referencedDeclaration":7312,"src":"9559:8:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"9543:34:34"},"returnParameters":{"id":7852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7878,"src":"9601:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7850,"name":"uint256","nodeType":"ElementaryTypeName","src":"9601:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9600:9:34"},"scope":8170,"src":"9530:245:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8006,"nodeType":"Block","src":"9962:828:34","statements":[{"assignments":[7887],"declarations":[{"constant":false,"id":7887,"mutability":"mutable","name":"result","nameLocation":"9980:6:34","nodeType":"VariableDeclaration","scope":8006,"src":"9972:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7886,"name":"uint256","nodeType":"ElementaryTypeName","src":"9972:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7889,"initialValue":{"hexValue":"30","id":7888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9989:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9972:18:34"},{"id":8003,"nodeType":"UncheckedBlock","src":"10000:761:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7890,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10028:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":7893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10037:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":7892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10041:2:34","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10037:6:34","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10028:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7906,"nodeType":"IfStatement","src":"10024:99:34","trueBody":{"id":7905,"nodeType":"Block","src":"10045:78:34","statements":[{"expression":{"id":7899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7895,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10063:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":7898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10072:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":7897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10076:2:34","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10072:6:34","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10063:15:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7900,"nodeType":"ExpressionStatement","src":"10063:15:34"},{"expression":{"id":7903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7901,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7887,"src":"10096:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":7902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10106:2:34","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10096:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7904,"nodeType":"ExpressionStatement","src":"10096:12:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7907,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10140:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":7910,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10149:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":7909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10153:2:34","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10149:6:34","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10140:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7923,"nodeType":"IfStatement","src":"10136:99:34","trueBody":{"id":7922,"nodeType":"Block","src":"10157:78:34","statements":[{"expression":{"id":7916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7912,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10175:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":7915,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10184:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":7914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10188:2:34","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10184:6:34","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10175:15:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7917,"nodeType":"ExpressionStatement","src":"10175:15:34"},{"expression":{"id":7920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7918,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7887,"src":"10208:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":7919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10218:2:34","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10208:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7921,"nodeType":"ExpressionStatement","src":"10208:12:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10252:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":7927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10261:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":7926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10265:2:34","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10261:6:34","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10252:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7940,"nodeType":"IfStatement","src":"10248:99:34","trueBody":{"id":7939,"nodeType":"Block","src":"10269:78:34","statements":[{"expression":{"id":7933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7929,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10287:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":7932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10296:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":7931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10300:2:34","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10296:6:34","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10287:15:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7934,"nodeType":"ExpressionStatement","src":"10287:15:34"},{"expression":{"id":7937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7935,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7887,"src":"10320:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":7936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10330:2:34","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10320:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7938,"nodeType":"ExpressionStatement","src":"10320:12:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7941,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10364:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":7944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10373:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":7943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10377:1:34","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10373:5:34","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10364:14:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7957,"nodeType":"IfStatement","src":"10360:96:34","trueBody":{"id":7956,"nodeType":"Block","src":"10380:76:34","statements":[{"expression":{"id":7950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7946,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10398:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":7949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10407:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":7948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10411:1:34","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10407:5:34","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10398:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7951,"nodeType":"ExpressionStatement","src":"10398:14:34"},{"expression":{"id":7954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7952,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7887,"src":"10430:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":7953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10440:1:34","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10430:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7955,"nodeType":"ExpressionStatement","src":"10430:11:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7958,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10473:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":7961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10482:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":7960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10486:1:34","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10482:5:34","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10473:14:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7974,"nodeType":"IfStatement","src":"10469:96:34","trueBody":{"id":7973,"nodeType":"Block","src":"10489:76:34","statements":[{"expression":{"id":7967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10507:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":7966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10516:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":7965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10520:1:34","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10516:5:34","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10507:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7968,"nodeType":"ExpressionStatement","src":"10507:14:34"},{"expression":{"id":7971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7969,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7887,"src":"10539:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":7970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10549:1:34","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10539:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7972,"nodeType":"ExpressionStatement","src":"10539:11:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7975,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10582:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":7978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10591:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":7977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10595:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10591:5:34","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10582:14:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7991,"nodeType":"IfStatement","src":"10578:96:34","trueBody":{"id":7990,"nodeType":"Block","src":"10598:76:34","statements":[{"expression":{"id":7984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7980,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10616:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":7983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10625:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":7982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10629:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10625:5:34","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10616:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7985,"nodeType":"ExpressionStatement","src":"10616:14:34"},{"expression":{"id":7988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7986,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7887,"src":"10648:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":7987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10658:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10648:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7989,"nodeType":"ExpressionStatement","src":"10648:11:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7992,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"10691:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":7995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10700:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":7994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10704:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10700:5:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10691:14:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8002,"nodeType":"IfStatement","src":"10687:64:34","trueBody":{"id":8001,"nodeType":"Block","src":"10707:44:34","statements":[{"expression":{"id":7999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7997,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7887,"src":"10725:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":7998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10735:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10725:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8000,"nodeType":"ExpressionStatement","src":"10725:11:34"}]}}]},{"expression":{"id":8004,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7887,"src":"10777:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7885,"id":8005,"nodeType":"Return","src":"10770:13:34"}]},"documentation":{"id":7879,"nodeType":"StructuredDocumentation","src":"9781:114:34","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":8007,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"9909:5:34","nodeType":"FunctionDefinition","parameters":{"id":7882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7881,"mutability":"mutable","name":"value","nameLocation":"9923:5:34","nodeType":"VariableDeclaration","scope":8007,"src":"9915:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7880,"name":"uint256","nodeType":"ElementaryTypeName","src":"9915:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9914:15:34"},"returnParameters":{"id":7885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7884,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8007,"src":"9953:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7883,"name":"uint256","nodeType":"ElementaryTypeName","src":"9953:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9952:9:34"},"scope":8170,"src":"9900:890:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8042,"nodeType":"Block","src":"11025:165:34","statements":[{"id":8041,"nodeType":"UncheckedBlock","src":"11035:149:34","statements":[{"assignments":[8019],"declarations":[{"constant":false,"id":8019,"mutability":"mutable","name":"result","nameLocation":"11067:6:34","nodeType":"VariableDeclaration","scope":8041,"src":"11059:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8018,"name":"uint256","nodeType":"ElementaryTypeName","src":"11059:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8023,"initialValue":{"arguments":[{"id":8021,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8010,"src":"11082:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8020,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[8007,8043],"referencedDeclaration":8007,"src":"11076:5:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":8022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11076:12:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11059:29:34"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8019,"src":"11109:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"},"id":8028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8025,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8013,"src":"11119:8:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8026,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7312,"src":"11131:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$7312_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":8027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11140:2:34","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":7310,"src":"11131:11:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"src":"11119:23:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":8029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11146:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":8030,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8019,"src":"11150:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11146:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8032,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8010,"src":"11159:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11146:18:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11119:45:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":8036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11171:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":8037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11119:53:34","trueExpression":{"hexValue":"31","id":8035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11167:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":8038,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11118:55:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11109:64:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8017,"id":8040,"nodeType":"Return","src":"11102:71:34"}]}]},"documentation":{"id":8008,"nodeType":"StructuredDocumentation","src":"10796:143:34","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":8043,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10953:5:34","nodeType":"FunctionDefinition","parameters":{"id":8014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8010,"mutability":"mutable","name":"value","nameLocation":"10967:5:34","nodeType":"VariableDeclaration","scope":8043,"src":"10959:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8009,"name":"uint256","nodeType":"ElementaryTypeName","src":"10959:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8013,"mutability":"mutable","name":"rounding","nameLocation":"10983:8:34","nodeType":"VariableDeclaration","scope":8043,"src":"10974:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":8012,"nodeType":"UserDefinedTypeName","pathNode":{"id":8011,"name":"Rounding","nameLocations":["10974:8:34"],"nodeType":"IdentifierPath","referencedDeclaration":7312,"src":"10974:8:34"},"referencedDeclaration":7312,"src":"10974:8:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"10958:34:34"},"returnParameters":{"id":8017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8016,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8043,"src":"11016:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8015,"name":"uint256","nodeType":"ElementaryTypeName","src":"11016:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11015:9:34"},"scope":8170,"src":"10944:246:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8129,"nodeType":"Block","src":"11504:600:34","statements":[{"assignments":[8052],"declarations":[{"constant":false,"id":8052,"mutability":"mutable","name":"result","nameLocation":"11522:6:34","nodeType":"VariableDeclaration","scope":8129,"src":"11514:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8051,"name":"uint256","nodeType":"ElementaryTypeName","src":"11514:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8054,"initialValue":{"hexValue":"30","id":8053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11531:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11514:18:34"},{"id":8126,"nodeType":"UncheckedBlock","src":"11542:533:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8055,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8046,"src":"11570:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":8056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11579:3:34","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11570:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11585:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11570:16:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8069,"nodeType":"IfStatement","src":"11566:98:34","trueBody":{"id":8068,"nodeType":"Block","src":"11588:76:34","statements":[{"expression":{"id":8062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8060,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8046,"src":"11606:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":8061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11616:3:34","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11606:13:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8063,"nodeType":"ExpressionStatement","src":"11606:13:34"},{"expression":{"id":8066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8064,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8052,"src":"11637:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":8065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11647:2:34","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11637:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8067,"nodeType":"ExpressionStatement","src":"11637:12:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8070,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8046,"src":"11681:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":8071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11690:2:34","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11681:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11695:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11681:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8084,"nodeType":"IfStatement","src":"11677:95:34","trueBody":{"id":8083,"nodeType":"Block","src":"11698:74:34","statements":[{"expression":{"id":8077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8075,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8046,"src":"11716:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":8076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11726:2:34","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11716:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8078,"nodeType":"ExpressionStatement","src":"11716:12:34"},{"expression":{"id":8081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8079,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8052,"src":"11746:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":8080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11756:1:34","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11746:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8082,"nodeType":"ExpressionStatement","src":"11746:11:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8085,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8046,"src":"11789:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":8086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11798:2:34","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11789:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11803:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11789:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8099,"nodeType":"IfStatement","src":"11785:95:34","trueBody":{"id":8098,"nodeType":"Block","src":"11806:74:34","statements":[{"expression":{"id":8092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8090,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8046,"src":"11824:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":8091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11834:2:34","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11824:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8093,"nodeType":"ExpressionStatement","src":"11824:12:34"},{"expression":{"id":8096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8094,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8052,"src":"11854:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":8095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11864:1:34","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11854:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8097,"nodeType":"ExpressionStatement","src":"11854:11:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8100,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8046,"src":"11897:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":8101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11906:2:34","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11897:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11911:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11897:15:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8114,"nodeType":"IfStatement","src":"11893:95:34","trueBody":{"id":8113,"nodeType":"Block","src":"11914:74:34","statements":[{"expression":{"id":8107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8105,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8046,"src":"11932:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":8106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11942:2:34","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11932:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8108,"nodeType":"ExpressionStatement","src":"11932:12:34"},{"expression":{"id":8111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8109,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8052,"src":"11962:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":8110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11972:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11962:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8112,"nodeType":"ExpressionStatement","src":"11962:11:34"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8115,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8046,"src":"12005:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":8116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12014:1:34","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12005:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12018:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12005:14:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8125,"nodeType":"IfStatement","src":"12001:64:34","trueBody":{"id":8124,"nodeType":"Block","src":"12021:44:34","statements":[{"expression":{"id":8122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8120,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8052,"src":"12039:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":8121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12049:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12039:11:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8123,"nodeType":"ExpressionStatement","src":"12039:11:34"}]}}]},{"expression":{"id":8127,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8052,"src":"12091:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8050,"id":8128,"nodeType":"Return","src":"12084:13:34"}]},"documentation":{"id":8044,"nodeType":"StructuredDocumentation","src":"11196:240:34","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":8130,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11450:6:34","nodeType":"FunctionDefinition","parameters":{"id":8047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8046,"mutability":"mutable","name":"value","nameLocation":"11465:5:34","nodeType":"VariableDeclaration","scope":8130,"src":"11457:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8045,"name":"uint256","nodeType":"ElementaryTypeName","src":"11457:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11456:15:34"},"returnParameters":{"id":8050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8049,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8130,"src":"11495:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8048,"name":"uint256","nodeType":"ElementaryTypeName","src":"11495:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11494:9:34"},"scope":8170,"src":"11441:663:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8168,"nodeType":"Block","src":"12340:173:34","statements":[{"id":8167,"nodeType":"UncheckedBlock","src":"12350:157:34","statements":[{"assignments":[8142],"declarations":[{"constant":false,"id":8142,"mutability":"mutable","name":"result","nameLocation":"12382:6:34","nodeType":"VariableDeclaration","scope":8167,"src":"12374:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8141,"name":"uint256","nodeType":"ElementaryTypeName","src":"12374:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8146,"initialValue":{"arguments":[{"id":8144,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8133,"src":"12398:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8143,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[8130,8169],"referencedDeclaration":8130,"src":"12391:6:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":8145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12391:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12374:30:34"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8147,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"12425:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"},"id":8151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8148,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8136,"src":"12435:8:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8149,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7312,"src":"12447:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$7312_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":8150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12456:2:34","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":7310,"src":"12447:11:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"src":"12435:23:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":8152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12462:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8153,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"12468:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":8154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12477:1:34","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12468:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8156,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12467:12:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12462:17:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8158,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8133,"src":"12482:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12462:25:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12435:52:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":8162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12494:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":8163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12435:60:34","trueExpression":{"hexValue":"31","id":8161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12490:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":8164,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12434:62:34","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12425:71:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8140,"id":8166,"nodeType":"Return","src":"12418:78:34"}]}]},"documentation":{"id":8131,"nodeType":"StructuredDocumentation","src":"12110:143:34","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":8169,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12267:6:34","nodeType":"FunctionDefinition","parameters":{"id":8137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8133,"mutability":"mutable","name":"value","nameLocation":"12282:5:34","nodeType":"VariableDeclaration","scope":8169,"src":"12274:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8132,"name":"uint256","nodeType":"ElementaryTypeName","src":"12274:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8136,"mutability":"mutable","name":"rounding","nameLocation":"12298:8:34","nodeType":"VariableDeclaration","scope":8169,"src":"12289:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":8135,"nodeType":"UserDefinedTypeName","pathNode":{"id":8134,"name":"Rounding","nameLocations":["12289:8:34"],"nodeType":"IdentifierPath","referencedDeclaration":7312,"src":"12289:8:34"},"referencedDeclaration":7312,"src":"12289:8:34","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$7312","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"12273:34:34"},"returnParameters":{"id":8140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8169,"src":"12331:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8138,"name":"uint256","nodeType":"ElementaryTypeName","src":"12331:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12330:9:34"},"scope":8170,"src":"12258:255:34","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8171,"src":"202:12313:34","usedErrors":[]}],"src":"103:12413:34"},"id":34},"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol","exportedSymbols":{"SafeCastUpgradeable":[9711]},"id":9712,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8172,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"192:23:35"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCastUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":8173,"nodeType":"StructuredDocumentation","src":"217:709:35","text":" @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always.\n Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n all math on `uint256` and `int256` and then downcasting."},"fullyImplemented":true,"id":9711,"linearizedBaseContracts":[9711],"name":"SafeCastUpgradeable","nameLocation":"935:19:35","nodeType":"ContractDefinition","nodes":[{"body":{"id":8197,"nodeType":"Block","src":"1350:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8182,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8176,"src":"1368:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1382:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":8184,"name":"uint248","nodeType":"ElementaryTypeName","src":"1382:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":8183,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1377:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1377:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":8187,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1391:3:35","memberName":"max","nodeType":"MemberAccess","src":"1377:17:35","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1368:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203234382062697473","id":8189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1396:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_6ac19bba4607c9b45ff35f54fbc4ca64c29c7457109a16fa180ea77cdbda8593","typeString":"literal_string \"SafeCast: value doesn't fit in 248 bits\""},"value":"SafeCast: value doesn't fit in 248 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6ac19bba4607c9b45ff35f54fbc4ca64c29c7457109a16fa180ea77cdbda8593","typeString":"literal_string \"SafeCast: value doesn't fit in 248 bits\""}],"id":8181,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1360:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1360:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8191,"nodeType":"ExpressionStatement","src":"1360:78:35"},{"expression":{"arguments":[{"id":8194,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8176,"src":"1463:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1455:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":8192,"name":"uint248","nodeType":"ElementaryTypeName","src":"1455:7:35","typeDescriptions":{}}},"id":8195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1455:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":8180,"id":8196,"nodeType":"Return","src":"1448:21:35"}]},"documentation":{"id":8174,"nodeType":"StructuredDocumentation","src":"961:318:35","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits\n _Available since v4.7._"},"id":8198,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1293:9:35","nodeType":"FunctionDefinition","parameters":{"id":8177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8176,"mutability":"mutable","name":"value","nameLocation":"1311:5:35","nodeType":"VariableDeclaration","scope":8198,"src":"1303:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8175,"name":"uint256","nodeType":"ElementaryTypeName","src":"1303:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1302:15:35"},"returnParameters":{"id":8180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8179,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8198,"src":"1341:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":8178,"name":"uint248","nodeType":"ElementaryTypeName","src":"1341:7:35","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1340:9:35"},"scope":9711,"src":"1284:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8222,"nodeType":"Block","src":"1871:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8207,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8201,"src":"1889:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1903:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":8209,"name":"uint240","nodeType":"ElementaryTypeName","src":"1903:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":8208,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1898:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1898:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":8212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1912:3:35","memberName":"max","nodeType":"MemberAccess","src":"1898:17:35","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"1889:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203234302062697473","id":8214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1917:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_375fa0f6cb9fb5845d214c630920cedf4424913ed6dc32c297d430efa3d61a87","typeString":"literal_string \"SafeCast: value doesn't fit in 240 bits\""},"value":"SafeCast: value doesn't fit in 240 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_375fa0f6cb9fb5845d214c630920cedf4424913ed6dc32c297d430efa3d61a87","typeString":"literal_string \"SafeCast: value doesn't fit in 240 bits\""}],"id":8206,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1881:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1881:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8216,"nodeType":"ExpressionStatement","src":"1881:78:35"},{"expression":{"arguments":[{"id":8219,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8201,"src":"1984:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1976:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":8217,"name":"uint240","nodeType":"ElementaryTypeName","src":"1976:7:35","typeDescriptions":{}}},"id":8220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1976:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":8205,"id":8221,"nodeType":"Return","src":"1969:21:35"}]},"documentation":{"id":8199,"nodeType":"StructuredDocumentation","src":"1482:318:35","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits\n _Available since v4.7._"},"id":8223,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"1814:9:35","nodeType":"FunctionDefinition","parameters":{"id":8202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8201,"mutability":"mutable","name":"value","nameLocation":"1832:5:35","nodeType":"VariableDeclaration","scope":8223,"src":"1824:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8200,"name":"uint256","nodeType":"ElementaryTypeName","src":"1824:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1823:15:35"},"returnParameters":{"id":8205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8204,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8223,"src":"1862:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":8203,"name":"uint240","nodeType":"ElementaryTypeName","src":"1862:7:35","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"1861:9:35"},"scope":9711,"src":"1805:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8247,"nodeType":"Block","src":"2392:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8232,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8226,"src":"2410:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2424:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":8234,"name":"uint232","nodeType":"ElementaryTypeName","src":"2424:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":8233,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2419:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2419:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":8237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2433:3:35","memberName":"max","nodeType":"MemberAccess","src":"2419:17:35","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2410:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203233322062697473","id":8239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2438:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_5797fb2c4589bd6a92752ce0eacaac67341e37ab28c96c2284ab897e7ac77957","typeString":"literal_string \"SafeCast: value doesn't fit in 232 bits\""},"value":"SafeCast: value doesn't fit in 232 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5797fb2c4589bd6a92752ce0eacaac67341e37ab28c96c2284ab897e7ac77957","typeString":"literal_string \"SafeCast: value doesn't fit in 232 bits\""}],"id":8231,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2402:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2402:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8241,"nodeType":"ExpressionStatement","src":"2402:78:35"},{"expression":{"arguments":[{"id":8244,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8226,"src":"2505:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2497:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":8242,"name":"uint232","nodeType":"ElementaryTypeName","src":"2497:7:35","typeDescriptions":{}}},"id":8245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2497:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":8230,"id":8246,"nodeType":"Return","src":"2490:21:35"}]},"documentation":{"id":8224,"nodeType":"StructuredDocumentation","src":"2003:318:35","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits\n _Available since v4.7._"},"id":8248,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2335:9:35","nodeType":"FunctionDefinition","parameters":{"id":8227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8226,"mutability":"mutable","name":"value","nameLocation":"2353:5:35","nodeType":"VariableDeclaration","scope":8248,"src":"2345:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8225,"name":"uint256","nodeType":"ElementaryTypeName","src":"2345:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2344:15:35"},"returnParameters":{"id":8230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8229,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8248,"src":"2383:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":8228,"name":"uint232","nodeType":"ElementaryTypeName","src":"2383:7:35","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2382:9:35"},"scope":9711,"src":"2326:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8272,"nodeType":"Block","src":"2913:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8257,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8251,"src":"2931:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2945:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":8259,"name":"uint224","nodeType":"ElementaryTypeName","src":"2945:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":8258,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2940:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2940:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":8262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2954:3:35","memberName":"max","nodeType":"MemberAccess","src":"2940:17:35","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"2931:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203232342062697473","id":8264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2959:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79","typeString":"literal_string \"SafeCast: value doesn't fit in 224 bits\""},"value":"SafeCast: value doesn't fit in 224 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79","typeString":"literal_string \"SafeCast: value doesn't fit in 224 bits\""}],"id":8256,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2923:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2923:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8266,"nodeType":"ExpressionStatement","src":"2923:78:35"},{"expression":{"arguments":[{"id":8269,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8251,"src":"3026:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3018:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":8267,"name":"uint224","nodeType":"ElementaryTypeName","src":"3018:7:35","typeDescriptions":{}}},"id":8270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3018:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":8255,"id":8271,"nodeType":"Return","src":"3011:21:35"}]},"documentation":{"id":8249,"nodeType":"StructuredDocumentation","src":"2524:318:35","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits\n _Available since v4.2._"},"id":8273,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"2856:9:35","nodeType":"FunctionDefinition","parameters":{"id":8252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8251,"mutability":"mutable","name":"value","nameLocation":"2874:5:35","nodeType":"VariableDeclaration","scope":8273,"src":"2866:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8250,"name":"uint256","nodeType":"ElementaryTypeName","src":"2866:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2865:15:35"},"returnParameters":{"id":8255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8254,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8273,"src":"2904:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":8253,"name":"uint224","nodeType":"ElementaryTypeName","src":"2904:7:35","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"2903:9:35"},"scope":9711,"src":"2847:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8297,"nodeType":"Block","src":"3434:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8282,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8276,"src":"3452:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3466:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":8284,"name":"uint216","nodeType":"ElementaryTypeName","src":"3466:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":8283,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3461:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3461:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":8287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3475:3:35","memberName":"max","nodeType":"MemberAccess","src":"3461:17:35","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3452:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203231362062697473","id":8289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3480:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_8966adc0aad8dc91b207c69c3eb4937e498af8cc706cfe7edd55f3a6ea53488d","typeString":"literal_string \"SafeCast: value doesn't fit in 216 bits\""},"value":"SafeCast: value doesn't fit in 216 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8966adc0aad8dc91b207c69c3eb4937e498af8cc706cfe7edd55f3a6ea53488d","typeString":"literal_string \"SafeCast: value doesn't fit in 216 bits\""}],"id":8281,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3444:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3444:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8291,"nodeType":"ExpressionStatement","src":"3444:78:35"},{"expression":{"arguments":[{"id":8294,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8276,"src":"3547:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3539:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":8292,"name":"uint216","nodeType":"ElementaryTypeName","src":"3539:7:35","typeDescriptions":{}}},"id":8295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3539:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":8280,"id":8296,"nodeType":"Return","src":"3532:21:35"}]},"documentation":{"id":8274,"nodeType":"StructuredDocumentation","src":"3045:318:35","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits\n _Available since v4.7._"},"id":8298,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3377:9:35","nodeType":"FunctionDefinition","parameters":{"id":8277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8276,"mutability":"mutable","name":"value","nameLocation":"3395:5:35","nodeType":"VariableDeclaration","scope":8298,"src":"3387:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8275,"name":"uint256","nodeType":"ElementaryTypeName","src":"3387:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3386:15:35"},"returnParameters":{"id":8280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8279,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8298,"src":"3425:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":8278,"name":"uint216","nodeType":"ElementaryTypeName","src":"3425:7:35","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3424:9:35"},"scope":9711,"src":"3368:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8322,"nodeType":"Block","src":"3955:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8307,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8301,"src":"3973:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3987:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":8309,"name":"uint208","nodeType":"ElementaryTypeName","src":"3987:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":8308,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3982:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3982:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":8312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3996:3:35","memberName":"max","nodeType":"MemberAccess","src":"3982:17:35","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"3973:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203230382062697473","id":8314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4001:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_43d81217fa633fa1c6e88855de94fb990f5831ac266b0a90afa660e986ab5e23","typeString":"literal_string \"SafeCast: value doesn't fit in 208 bits\""},"value":"SafeCast: value doesn't fit in 208 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_43d81217fa633fa1c6e88855de94fb990f5831ac266b0a90afa660e986ab5e23","typeString":"literal_string \"SafeCast: value doesn't fit in 208 bits\""}],"id":8306,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3965:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3965:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8316,"nodeType":"ExpressionStatement","src":"3965:78:35"},{"expression":{"arguments":[{"id":8319,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8301,"src":"4068:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4060:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":8317,"name":"uint208","nodeType":"ElementaryTypeName","src":"4060:7:35","typeDescriptions":{}}},"id":8320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4060:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":8305,"id":8321,"nodeType":"Return","src":"4053:21:35"}]},"documentation":{"id":8299,"nodeType":"StructuredDocumentation","src":"3566:318:35","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits\n _Available since v4.7._"},"id":8323,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"3898:9:35","nodeType":"FunctionDefinition","parameters":{"id":8302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8301,"mutability":"mutable","name":"value","nameLocation":"3916:5:35","nodeType":"VariableDeclaration","scope":8323,"src":"3908:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8300,"name":"uint256","nodeType":"ElementaryTypeName","src":"3908:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3907:15:35"},"returnParameters":{"id":8305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8323,"src":"3946:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":8303,"name":"uint208","nodeType":"ElementaryTypeName","src":"3946:7:35","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"3945:9:35"},"scope":9711,"src":"3889:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8347,"nodeType":"Block","src":"4476:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8332,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8326,"src":"4494:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4508:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":8334,"name":"uint200","nodeType":"ElementaryTypeName","src":"4508:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":8333,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4503:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4503:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":8337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4517:3:35","memberName":"max","nodeType":"MemberAccess","src":"4503:17:35","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4494:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203230302062697473","id":8339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4522:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_df8130f294fe2698967ea9ead82c4da9454490567d976d00551e0174e655314c","typeString":"literal_string \"SafeCast: value doesn't fit in 200 bits\""},"value":"SafeCast: value doesn't fit in 200 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df8130f294fe2698967ea9ead82c4da9454490567d976d00551e0174e655314c","typeString":"literal_string \"SafeCast: value doesn't fit in 200 bits\""}],"id":8331,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4486:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4486:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8341,"nodeType":"ExpressionStatement","src":"4486:78:35"},{"expression":{"arguments":[{"id":8344,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8326,"src":"4589:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8343,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4581:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":8342,"name":"uint200","nodeType":"ElementaryTypeName","src":"4581:7:35","typeDescriptions":{}}},"id":8345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4581:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":8330,"id":8346,"nodeType":"Return","src":"4574:21:35"}]},"documentation":{"id":8324,"nodeType":"StructuredDocumentation","src":"4087:318:35","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits\n _Available since v4.7._"},"id":8348,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4419:9:35","nodeType":"FunctionDefinition","parameters":{"id":8327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8326,"mutability":"mutable","name":"value","nameLocation":"4437:5:35","nodeType":"VariableDeclaration","scope":8348,"src":"4429:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8325,"name":"uint256","nodeType":"ElementaryTypeName","src":"4429:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4428:15:35"},"returnParameters":{"id":8330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8329,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8348,"src":"4467:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":8328,"name":"uint200","nodeType":"ElementaryTypeName","src":"4467:7:35","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4466:9:35"},"scope":9711,"src":"4410:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8372,"nodeType":"Block","src":"4997:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8357,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8351,"src":"5015:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5029:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":8359,"name":"uint192","nodeType":"ElementaryTypeName","src":"5029:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":8358,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5024:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5024:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":8362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5038:3:35","memberName":"max","nodeType":"MemberAccess","src":"5024:17:35","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5015:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203139322062697473","id":8364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5043:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_112978800f12a1c4f1eab82789f7b6defd49dc1c17ba270a84ffc28392fb05ae","typeString":"literal_string \"SafeCast: value doesn't fit in 192 bits\""},"value":"SafeCast: value doesn't fit in 192 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_112978800f12a1c4f1eab82789f7b6defd49dc1c17ba270a84ffc28392fb05ae","typeString":"literal_string \"SafeCast: value doesn't fit in 192 bits\""}],"id":8356,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5007:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5007:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8366,"nodeType":"ExpressionStatement","src":"5007:78:35"},{"expression":{"arguments":[{"id":8369,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8351,"src":"5110:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5102:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":8367,"name":"uint192","nodeType":"ElementaryTypeName","src":"5102:7:35","typeDescriptions":{}}},"id":8370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5102:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":8355,"id":8371,"nodeType":"Return","src":"5095:21:35"}]},"documentation":{"id":8349,"nodeType":"StructuredDocumentation","src":"4608:318:35","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits\n _Available since v4.7._"},"id":8373,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"4940:9:35","nodeType":"FunctionDefinition","parameters":{"id":8352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8351,"mutability":"mutable","name":"value","nameLocation":"4958:5:35","nodeType":"VariableDeclaration","scope":8373,"src":"4950:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8350,"name":"uint256","nodeType":"ElementaryTypeName","src":"4950:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4949:15:35"},"returnParameters":{"id":8355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8354,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8373,"src":"4988:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":8353,"name":"uint192","nodeType":"ElementaryTypeName","src":"4988:7:35","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"4987:9:35"},"scope":9711,"src":"4931:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8397,"nodeType":"Block","src":"5518:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8382,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8376,"src":"5536:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5550:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":8384,"name":"uint184","nodeType":"ElementaryTypeName","src":"5550:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":8383,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5545:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5545:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":8387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5559:3:35","memberName":"max","nodeType":"MemberAccess","src":"5545:17:35","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5536:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203138342062697473","id":8389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5564:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_86c53d89b1944d561ecfa42e859033241d1df6ea8d42a57ae02f79d45de4aa75","typeString":"literal_string \"SafeCast: value doesn't fit in 184 bits\""},"value":"SafeCast: value doesn't fit in 184 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86c53d89b1944d561ecfa42e859033241d1df6ea8d42a57ae02f79d45de4aa75","typeString":"literal_string \"SafeCast: value doesn't fit in 184 bits\""}],"id":8381,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5528:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5528:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8391,"nodeType":"ExpressionStatement","src":"5528:78:35"},{"expression":{"arguments":[{"id":8394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8376,"src":"5631:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5623:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":8392,"name":"uint184","nodeType":"ElementaryTypeName","src":"5623:7:35","typeDescriptions":{}}},"id":8395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5623:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":8380,"id":8396,"nodeType":"Return","src":"5616:21:35"}]},"documentation":{"id":8374,"nodeType":"StructuredDocumentation","src":"5129:318:35","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits\n _Available since v4.7._"},"id":8398,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5461:9:35","nodeType":"FunctionDefinition","parameters":{"id":8377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8376,"mutability":"mutable","name":"value","nameLocation":"5479:5:35","nodeType":"VariableDeclaration","scope":8398,"src":"5471:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8375,"name":"uint256","nodeType":"ElementaryTypeName","src":"5471:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5470:15:35"},"returnParameters":{"id":8380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8379,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8398,"src":"5509:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":8378,"name":"uint184","nodeType":"ElementaryTypeName","src":"5509:7:35","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5508:9:35"},"scope":9711,"src":"5452:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8422,"nodeType":"Block","src":"6039:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8407,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8401,"src":"6057:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6071:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":8409,"name":"uint176","nodeType":"ElementaryTypeName","src":"6071:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":8408,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6066:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6066:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":8412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6080:3:35","memberName":"max","nodeType":"MemberAccess","src":"6066:17:35","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6057:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203137362062697473","id":8414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6085:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_4069e970f734339c7841e84a1b26f503bff22b76884c1168dc24e2e6af9b1e30","typeString":"literal_string \"SafeCast: value doesn't fit in 176 bits\""},"value":"SafeCast: value doesn't fit in 176 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4069e970f734339c7841e84a1b26f503bff22b76884c1168dc24e2e6af9b1e30","typeString":"literal_string \"SafeCast: value doesn't fit in 176 bits\""}],"id":8406,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6049:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6049:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8416,"nodeType":"ExpressionStatement","src":"6049:78:35"},{"expression":{"arguments":[{"id":8419,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8401,"src":"6152:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6144:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":8417,"name":"uint176","nodeType":"ElementaryTypeName","src":"6144:7:35","typeDescriptions":{}}},"id":8420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6144:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":8405,"id":8421,"nodeType":"Return","src":"6137:21:35"}]},"documentation":{"id":8399,"nodeType":"StructuredDocumentation","src":"5650:318:35","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits\n _Available since v4.7._"},"id":8423,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"5982:9:35","nodeType":"FunctionDefinition","parameters":{"id":8402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8401,"mutability":"mutable","name":"value","nameLocation":"6000:5:35","nodeType":"VariableDeclaration","scope":8423,"src":"5992:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8400,"name":"uint256","nodeType":"ElementaryTypeName","src":"5992:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5991:15:35"},"returnParameters":{"id":8405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8404,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8423,"src":"6030:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":8403,"name":"uint176","nodeType":"ElementaryTypeName","src":"6030:7:35","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6029:9:35"},"scope":9711,"src":"5973:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8447,"nodeType":"Block","src":"6560:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8432,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8426,"src":"6578:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6592:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":8434,"name":"uint168","nodeType":"ElementaryTypeName","src":"6592:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":8433,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6587:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6587:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":8437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6601:3:35","memberName":"max","nodeType":"MemberAccess","src":"6587:17:35","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6578:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203136382062697473","id":8439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6606:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_67ef32a3cbe7b34392347d335b0a7ae95c74a34ca40e4efb58f6c9a3154e85a1","typeString":"literal_string \"SafeCast: value doesn't fit in 168 bits\""},"value":"SafeCast: value doesn't fit in 168 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67ef32a3cbe7b34392347d335b0a7ae95c74a34ca40e4efb58f6c9a3154e85a1","typeString":"literal_string \"SafeCast: value doesn't fit in 168 bits\""}],"id":8431,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6570:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6570:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8441,"nodeType":"ExpressionStatement","src":"6570:78:35"},{"expression":{"arguments":[{"id":8444,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8426,"src":"6673:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6665:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":8442,"name":"uint168","nodeType":"ElementaryTypeName","src":"6665:7:35","typeDescriptions":{}}},"id":8445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6665:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":8430,"id":8446,"nodeType":"Return","src":"6658:21:35"}]},"documentation":{"id":8424,"nodeType":"StructuredDocumentation","src":"6171:318:35","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits\n _Available since v4.7._"},"id":8448,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6503:9:35","nodeType":"FunctionDefinition","parameters":{"id":8427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8426,"mutability":"mutable","name":"value","nameLocation":"6521:5:35","nodeType":"VariableDeclaration","scope":8448,"src":"6513:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8425,"name":"uint256","nodeType":"ElementaryTypeName","src":"6513:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6512:15:35"},"returnParameters":{"id":8430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8429,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8448,"src":"6551:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":8428,"name":"uint168","nodeType":"ElementaryTypeName","src":"6551:7:35","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6550:9:35"},"scope":9711,"src":"6494:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8472,"nodeType":"Block","src":"7081:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8457,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"7099:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7113:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":8459,"name":"uint160","nodeType":"ElementaryTypeName","src":"7113:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":8458,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7108:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7108:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":8462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7122:3:35","memberName":"max","nodeType":"MemberAccess","src":"7108:17:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7099:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203136302062697473","id":8464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7127:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_976ecce9083debfe29d3a99b955facf24b8725f1b964d1a5bb4197ffcd60ab9d","typeString":"literal_string \"SafeCast: value doesn't fit in 160 bits\""},"value":"SafeCast: value doesn't fit in 160 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_976ecce9083debfe29d3a99b955facf24b8725f1b964d1a5bb4197ffcd60ab9d","typeString":"literal_string \"SafeCast: value doesn't fit in 160 bits\""}],"id":8456,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7091:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7091:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8466,"nodeType":"ExpressionStatement","src":"7091:78:35"},{"expression":{"arguments":[{"id":8469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"7194:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7186:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":8467,"name":"uint160","nodeType":"ElementaryTypeName","src":"7186:7:35","typeDescriptions":{}}},"id":8470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7186:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":8455,"id":8471,"nodeType":"Return","src":"7179:21:35"}]},"documentation":{"id":8449,"nodeType":"StructuredDocumentation","src":"6692:318:35","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits\n _Available since v4.7._"},"id":8473,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7024:9:35","nodeType":"FunctionDefinition","parameters":{"id":8452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8451,"mutability":"mutable","name":"value","nameLocation":"7042:5:35","nodeType":"VariableDeclaration","scope":8473,"src":"7034:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8450,"name":"uint256","nodeType":"ElementaryTypeName","src":"7034:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7033:15:35"},"returnParameters":{"id":8455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8454,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8473,"src":"7072:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":8453,"name":"uint160","nodeType":"ElementaryTypeName","src":"7072:7:35","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7071:9:35"},"scope":9711,"src":"7015:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8497,"nodeType":"Block","src":"7602:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8482,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8476,"src":"7620:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7634:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":8484,"name":"uint152","nodeType":"ElementaryTypeName","src":"7634:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":8483,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7629:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7629:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":8487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7643:3:35","memberName":"max","nodeType":"MemberAccess","src":"7629:17:35","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7620:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203135322062697473","id":8489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7648:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_211cad43a2caf5f01e34af51190b8a7b6f3d9c195bd25586ea12242191b97831","typeString":"literal_string \"SafeCast: value doesn't fit in 152 bits\""},"value":"SafeCast: value doesn't fit in 152 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_211cad43a2caf5f01e34af51190b8a7b6f3d9c195bd25586ea12242191b97831","typeString":"literal_string \"SafeCast: value doesn't fit in 152 bits\""}],"id":8481,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7612:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7612:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8491,"nodeType":"ExpressionStatement","src":"7612:78:35"},{"expression":{"arguments":[{"id":8494,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8476,"src":"7715:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7707:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":8492,"name":"uint152","nodeType":"ElementaryTypeName","src":"7707:7:35","typeDescriptions":{}}},"id":8495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7707:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":8480,"id":8496,"nodeType":"Return","src":"7700:21:35"}]},"documentation":{"id":8474,"nodeType":"StructuredDocumentation","src":"7213:318:35","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits\n _Available since v4.7._"},"id":8498,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7545:9:35","nodeType":"FunctionDefinition","parameters":{"id":8477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8476,"mutability":"mutable","name":"value","nameLocation":"7563:5:35","nodeType":"VariableDeclaration","scope":8498,"src":"7555:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8475,"name":"uint256","nodeType":"ElementaryTypeName","src":"7555:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7554:15:35"},"returnParameters":{"id":8480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8479,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8498,"src":"7593:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":8478,"name":"uint152","nodeType":"ElementaryTypeName","src":"7593:7:35","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7592:9:35"},"scope":9711,"src":"7536:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8522,"nodeType":"Block","src":"8123:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8507,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8501,"src":"8141:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8155:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":8509,"name":"uint144","nodeType":"ElementaryTypeName","src":"8155:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":8508,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8150:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8150:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":8512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8164:3:35","memberName":"max","nodeType":"MemberAccess","src":"8150:17:35","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8141:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203134342062697473","id":8514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8169:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_17d8c5a6d3b2fd2517ba2e4a2ac70a3367cd362448f8338aaa6edf8bfd812bab","typeString":"literal_string \"SafeCast: value doesn't fit in 144 bits\""},"value":"SafeCast: value doesn't fit in 144 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17d8c5a6d3b2fd2517ba2e4a2ac70a3367cd362448f8338aaa6edf8bfd812bab","typeString":"literal_string \"SafeCast: value doesn't fit in 144 bits\""}],"id":8506,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8133:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8133:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8516,"nodeType":"ExpressionStatement","src":"8133:78:35"},{"expression":{"arguments":[{"id":8519,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8501,"src":"8236:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8228:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":8517,"name":"uint144","nodeType":"ElementaryTypeName","src":"8228:7:35","typeDescriptions":{}}},"id":8520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8228:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":8505,"id":8521,"nodeType":"Return","src":"8221:21:35"}]},"documentation":{"id":8499,"nodeType":"StructuredDocumentation","src":"7734:318:35","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits\n _Available since v4.7._"},"id":8523,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8066:9:35","nodeType":"FunctionDefinition","parameters":{"id":8502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8501,"mutability":"mutable","name":"value","nameLocation":"8084:5:35","nodeType":"VariableDeclaration","scope":8523,"src":"8076:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8500,"name":"uint256","nodeType":"ElementaryTypeName","src":"8076:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8075:15:35"},"returnParameters":{"id":8505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8504,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8523,"src":"8114:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":8503,"name":"uint144","nodeType":"ElementaryTypeName","src":"8114:7:35","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8113:9:35"},"scope":9711,"src":"8057:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8547,"nodeType":"Block","src":"8644:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8532,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8526,"src":"8662:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8676:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":8534,"name":"uint136","nodeType":"ElementaryTypeName","src":"8676:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":8533,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8671:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8671:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":8537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8685:3:35","memberName":"max","nodeType":"MemberAccess","src":"8671:17:35","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8662:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203133362062697473","id":8539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8690:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1f81e2e2913e1cee9dba7bcd9837bbf8a8122edaac4afc578271db3c25a56a","typeString":"literal_string \"SafeCast: value doesn't fit in 136 bits\""},"value":"SafeCast: value doesn't fit in 136 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8b1f81e2e2913e1cee9dba7bcd9837bbf8a8122edaac4afc578271db3c25a56a","typeString":"literal_string \"SafeCast: value doesn't fit in 136 bits\""}],"id":8531,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8654:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8654:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8541,"nodeType":"ExpressionStatement","src":"8654:78:35"},{"expression":{"arguments":[{"id":8544,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8526,"src":"8757:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8749:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":8542,"name":"uint136","nodeType":"ElementaryTypeName","src":"8749:7:35","typeDescriptions":{}}},"id":8545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8749:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":8530,"id":8546,"nodeType":"Return","src":"8742:21:35"}]},"documentation":{"id":8524,"nodeType":"StructuredDocumentation","src":"8255:318:35","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits\n _Available since v4.7._"},"id":8548,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8587:9:35","nodeType":"FunctionDefinition","parameters":{"id":8527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8526,"mutability":"mutable","name":"value","nameLocation":"8605:5:35","nodeType":"VariableDeclaration","scope":8548,"src":"8597:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8525,"name":"uint256","nodeType":"ElementaryTypeName","src":"8597:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8596:15:35"},"returnParameters":{"id":8530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8529,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8548,"src":"8635:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":8528,"name":"uint136","nodeType":"ElementaryTypeName","src":"8635:7:35","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8634:9:35"},"scope":9711,"src":"8578:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8572,"nodeType":"Block","src":"9165:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8557,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8551,"src":"9183:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9197:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":8559,"name":"uint128","nodeType":"ElementaryTypeName","src":"9197:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":8558,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9192:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9192:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":8562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9206:3:35","memberName":"max","nodeType":"MemberAccess","src":"9192:17:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9183:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473","id":8564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9211:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""},"value":"SafeCast: value doesn't fit in 128 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""}],"id":8556,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9175:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9175:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8566,"nodeType":"ExpressionStatement","src":"9175:78:35"},{"expression":{"arguments":[{"id":8569,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8551,"src":"9278:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9270:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":8567,"name":"uint128","nodeType":"ElementaryTypeName","src":"9270:7:35","typeDescriptions":{}}},"id":8570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9270:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":8555,"id":8571,"nodeType":"Return","src":"9263:21:35"}]},"documentation":{"id":8549,"nodeType":"StructuredDocumentation","src":"8776:318:35","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits\n _Available since v2.5._"},"id":8573,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9108:9:35","nodeType":"FunctionDefinition","parameters":{"id":8552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8551,"mutability":"mutable","name":"value","nameLocation":"9126:5:35","nodeType":"VariableDeclaration","scope":8573,"src":"9118:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8550,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9117:15:35"},"returnParameters":{"id":8555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8554,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8573,"src":"9156:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":8553,"name":"uint128","nodeType":"ElementaryTypeName","src":"9156:7:35","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9155:9:35"},"scope":9711,"src":"9099:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8597,"nodeType":"Block","src":"9686:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8582,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8576,"src":"9704:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9718:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":8584,"name":"uint120","nodeType":"ElementaryTypeName","src":"9718:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":8583,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9713:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9713:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":8587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9727:3:35","memberName":"max","nodeType":"MemberAccess","src":"9713:17:35","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9704:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132302062697473","id":8589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9732:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_3c40c26bb27060cce77002ca0c426dcc1bef2d367c195ca2eb24bd8b2cc1bb09","typeString":"literal_string \"SafeCast: value doesn't fit in 120 bits\""},"value":"SafeCast: value doesn't fit in 120 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c40c26bb27060cce77002ca0c426dcc1bef2d367c195ca2eb24bd8b2cc1bb09","typeString":"literal_string \"SafeCast: value doesn't fit in 120 bits\""}],"id":8581,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9696:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9696:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8591,"nodeType":"ExpressionStatement","src":"9696:78:35"},{"expression":{"arguments":[{"id":8594,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8576,"src":"9799:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8593,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9791:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":8592,"name":"uint120","nodeType":"ElementaryTypeName","src":"9791:7:35","typeDescriptions":{}}},"id":8595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9791:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":8580,"id":8596,"nodeType":"Return","src":"9784:21:35"}]},"documentation":{"id":8574,"nodeType":"StructuredDocumentation","src":"9297:318:35","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits\n _Available since v4.7._"},"id":8598,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9629:9:35","nodeType":"FunctionDefinition","parameters":{"id":8577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8576,"mutability":"mutable","name":"value","nameLocation":"9647:5:35","nodeType":"VariableDeclaration","scope":8598,"src":"9639:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8575,"name":"uint256","nodeType":"ElementaryTypeName","src":"9639:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9638:15:35"},"returnParameters":{"id":8580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8598,"src":"9677:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":8578,"name":"uint120","nodeType":"ElementaryTypeName","src":"9677:7:35","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9676:9:35"},"scope":9711,"src":"9620:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8622,"nodeType":"Block","src":"10207:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8607,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8601,"src":"10225:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10239:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":8609,"name":"uint112","nodeType":"ElementaryTypeName","src":"10239:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":8608,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10234:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10234:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":8612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10248:3:35","memberName":"max","nodeType":"MemberAccess","src":"10234:17:35","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10225:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203131322062697473","id":8614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10253:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_45659ae152ef697531e1c1115de07c87af91ac22466c3e76b808821799776efd","typeString":"literal_string \"SafeCast: value doesn't fit in 112 bits\""},"value":"SafeCast: value doesn't fit in 112 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45659ae152ef697531e1c1115de07c87af91ac22466c3e76b808821799776efd","typeString":"literal_string \"SafeCast: value doesn't fit in 112 bits\""}],"id":8606,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10217:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10217:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8616,"nodeType":"ExpressionStatement","src":"10217:78:35"},{"expression":{"arguments":[{"id":8619,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8601,"src":"10320:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10312:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":8617,"name":"uint112","nodeType":"ElementaryTypeName","src":"10312:7:35","typeDescriptions":{}}},"id":8620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10312:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":8605,"id":8621,"nodeType":"Return","src":"10305:21:35"}]},"documentation":{"id":8599,"nodeType":"StructuredDocumentation","src":"9818:318:35","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits\n _Available since v4.7._"},"id":8623,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10150:9:35","nodeType":"FunctionDefinition","parameters":{"id":8602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8601,"mutability":"mutable","name":"value","nameLocation":"10168:5:35","nodeType":"VariableDeclaration","scope":8623,"src":"10160:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8600,"name":"uint256","nodeType":"ElementaryTypeName","src":"10160:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10159:15:35"},"returnParameters":{"id":8605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8604,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8623,"src":"10198:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":8603,"name":"uint112","nodeType":"ElementaryTypeName","src":"10198:7:35","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10197:9:35"},"scope":9711,"src":"10141:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8647,"nodeType":"Block","src":"10728:126:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8632,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"10746:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10760:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":8634,"name":"uint104","nodeType":"ElementaryTypeName","src":"10760:7:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":8633,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10755:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10755:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":8637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10769:3:35","memberName":"max","nodeType":"MemberAccess","src":"10755:17:35","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10746:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203130342062697473","id":8639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10774:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d7f3e1b7e9f9a06fded6b093c6fd1473ca0a14cc4bb683db904e803e2482981","typeString":"literal_string \"SafeCast: value doesn't fit in 104 bits\""},"value":"SafeCast: value doesn't fit in 104 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5d7f3e1b7e9f9a06fded6b093c6fd1473ca0a14cc4bb683db904e803e2482981","typeString":"literal_string \"SafeCast: value doesn't fit in 104 bits\""}],"id":8631,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10738:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10738:78:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8641,"nodeType":"ExpressionStatement","src":"10738:78:35"},{"expression":{"arguments":[{"id":8644,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"10841:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10833:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":8642,"name":"uint104","nodeType":"ElementaryTypeName","src":"10833:7:35","typeDescriptions":{}}},"id":8645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10833:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":8630,"id":8646,"nodeType":"Return","src":"10826:21:35"}]},"documentation":{"id":8624,"nodeType":"StructuredDocumentation","src":"10339:318:35","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits\n _Available since v4.7._"},"id":8648,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10671:9:35","nodeType":"FunctionDefinition","parameters":{"id":8627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8626,"mutability":"mutable","name":"value","nameLocation":"10689:5:35","nodeType":"VariableDeclaration","scope":8648,"src":"10681:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8625,"name":"uint256","nodeType":"ElementaryTypeName","src":"10681:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10680:15:35"},"returnParameters":{"id":8630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8648,"src":"10719:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":8628,"name":"uint104","nodeType":"ElementaryTypeName","src":"10719:7:35","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10718:9:35"},"scope":9711,"src":"10662:192:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8672,"nodeType":"Block","src":"11243:123:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8657,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8651,"src":"11261:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8660,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11275:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":8659,"name":"uint96","nodeType":"ElementaryTypeName","src":"11275:6:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":8658,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11270:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11270:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":8662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11283:3:35","memberName":"max","nodeType":"MemberAccess","src":"11270:16:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11261:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2039362062697473","id":8664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11288:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_06d20189090e973729391526269baef79c35dd621633195648e5f8309eef9e19","typeString":"literal_string \"SafeCast: value doesn't fit in 96 bits\""},"value":"SafeCast: value doesn't fit in 96 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_06d20189090e973729391526269baef79c35dd621633195648e5f8309eef9e19","typeString":"literal_string \"SafeCast: value doesn't fit in 96 bits\""}],"id":8656,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11253:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11253:76:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8666,"nodeType":"ExpressionStatement","src":"11253:76:35"},{"expression":{"arguments":[{"id":8669,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8651,"src":"11353:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11346:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":8667,"name":"uint96","nodeType":"ElementaryTypeName","src":"11346:6:35","typeDescriptions":{}}},"id":8670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11346:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":8655,"id":8671,"nodeType":"Return","src":"11339:20:35"}]},"documentation":{"id":8649,"nodeType":"StructuredDocumentation","src":"10860:314:35","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits\n _Available since v4.2._"},"id":8673,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11188:8:35","nodeType":"FunctionDefinition","parameters":{"id":8652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8651,"mutability":"mutable","name":"value","nameLocation":"11205:5:35","nodeType":"VariableDeclaration","scope":8673,"src":"11197:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8650,"name":"uint256","nodeType":"ElementaryTypeName","src":"11197:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11196:15:35"},"returnParameters":{"id":8655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8673,"src":"11235:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":8653,"name":"uint96","nodeType":"ElementaryTypeName","src":"11235:6:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11234:8:35"},"scope":9711,"src":"11179:187:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8697,"nodeType":"Block","src":"11755:123:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8682,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8676,"src":"11773:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11787:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":8684,"name":"uint88","nodeType":"ElementaryTypeName","src":"11787:6:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":8683,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11782:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11782:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":8687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11795:3:35","memberName":"max","nodeType":"MemberAccess","src":"11782:16:35","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11773:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2038382062697473","id":8689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11800:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae080bd7a76a46f0a0caf00941bc2cdf6002799ca2813a3af7295019576d715d","typeString":"literal_string \"SafeCast: value doesn't fit in 88 bits\""},"value":"SafeCast: value doesn't fit in 88 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ae080bd7a76a46f0a0caf00941bc2cdf6002799ca2813a3af7295019576d715d","typeString":"literal_string \"SafeCast: value doesn't fit in 88 bits\""}],"id":8681,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11765:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11765:76:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8691,"nodeType":"ExpressionStatement","src":"11765:76:35"},{"expression":{"arguments":[{"id":8694,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8676,"src":"11865:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11858:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":8692,"name":"uint88","nodeType":"ElementaryTypeName","src":"11858:6:35","typeDescriptions":{}}},"id":8695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11858:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":8680,"id":8696,"nodeType":"Return","src":"11851:20:35"}]},"documentation":{"id":8674,"nodeType":"StructuredDocumentation","src":"11372:314:35","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits\n _Available since v4.7._"},"id":8698,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11700:8:35","nodeType":"FunctionDefinition","parameters":{"id":8677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8676,"mutability":"mutable","name":"value","nameLocation":"11717:5:35","nodeType":"VariableDeclaration","scope":8698,"src":"11709:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8675,"name":"uint256","nodeType":"ElementaryTypeName","src":"11709:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11708:15:35"},"returnParameters":{"id":8680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8679,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8698,"src":"11747:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":8678,"name":"uint88","nodeType":"ElementaryTypeName","src":"11747:6:35","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11746:8:35"},"scope":9711,"src":"11691:187:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8722,"nodeType":"Block","src":"12267:123:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8707,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8701,"src":"12285:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12299:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":8709,"name":"uint80","nodeType":"ElementaryTypeName","src":"12299:6:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":8708,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12294:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12294:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":8712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12307:3:35","memberName":"max","nodeType":"MemberAccess","src":"12294:16:35","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12285:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2038302062697473","id":8714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12312:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_3cba87c71fade7d3cd7b673c159aab98afc040a5369691a33559d905d20ab5d1","typeString":"literal_string \"SafeCast: value doesn't fit in 80 bits\""},"value":"SafeCast: value doesn't fit in 80 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3cba87c71fade7d3cd7b673c159aab98afc040a5369691a33559d905d20ab5d1","typeString":"literal_string \"SafeCast: value doesn't fit in 80 bits\""}],"id":8706,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12277:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12277:76:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8716,"nodeType":"ExpressionStatement","src":"12277:76:35"},{"expression":{"arguments":[{"id":8719,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8701,"src":"12377:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12370:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":8717,"name":"uint80","nodeType":"ElementaryTypeName","src":"12370:6:35","typeDescriptions":{}}},"id":8720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12370:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":8705,"id":8721,"nodeType":"Return","src":"12363:20:35"}]},"documentation":{"id":8699,"nodeType":"StructuredDocumentation","src":"11884:314:35","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits\n _Available since v4.7._"},"id":8723,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12212:8:35","nodeType":"FunctionDefinition","parameters":{"id":8702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8701,"mutability":"mutable","name":"value","nameLocation":"12229:5:35","nodeType":"VariableDeclaration","scope":8723,"src":"12221:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8700,"name":"uint256","nodeType":"ElementaryTypeName","src":"12221:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12220:15:35"},"returnParameters":{"id":8705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8704,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8723,"src":"12259:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":8703,"name":"uint80","nodeType":"ElementaryTypeName","src":"12259:6:35","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12258:8:35"},"scope":9711,"src":"12203:187:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8747,"nodeType":"Block","src":"12779:123:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8732,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8726,"src":"12797:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12811:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":8734,"name":"uint72","nodeType":"ElementaryTypeName","src":"12811:6:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":8733,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12806:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12806:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":8737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12819:3:35","memberName":"max","nodeType":"MemberAccess","src":"12806:16:35","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12797:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2037322062697473","id":8739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12824:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_71584237cc5250b8f417982144a947efe8f4c76feba008ff32ac480e69d60606","typeString":"literal_string \"SafeCast: value doesn't fit in 72 bits\""},"value":"SafeCast: value doesn't fit in 72 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_71584237cc5250b8f417982144a947efe8f4c76feba008ff32ac480e69d60606","typeString":"literal_string \"SafeCast: value doesn't fit in 72 bits\""}],"id":8731,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12789:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12789:76:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8741,"nodeType":"ExpressionStatement","src":"12789:76:35"},{"expression":{"arguments":[{"id":8744,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8726,"src":"12889:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12882:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":8742,"name":"uint72","nodeType":"ElementaryTypeName","src":"12882:6:35","typeDescriptions":{}}},"id":8745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12882:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":8730,"id":8746,"nodeType":"Return","src":"12875:20:35"}]},"documentation":{"id":8724,"nodeType":"StructuredDocumentation","src":"12396:314:35","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits\n _Available since v4.7._"},"id":8748,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12724:8:35","nodeType":"FunctionDefinition","parameters":{"id":8727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8726,"mutability":"mutable","name":"value","nameLocation":"12741:5:35","nodeType":"VariableDeclaration","scope":8748,"src":"12733:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8725,"name":"uint256","nodeType":"ElementaryTypeName","src":"12733:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12732:15:35"},"returnParameters":{"id":8730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8729,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8748,"src":"12771:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":8728,"name":"uint72","nodeType":"ElementaryTypeName","src":"12771:6:35","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12770:8:35"},"scope":9711,"src":"12715:187:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8772,"nodeType":"Block","src":"13291:123:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8757,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8751,"src":"13309:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13323:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":8759,"name":"uint64","nodeType":"ElementaryTypeName","src":"13323:6:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":8758,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13318:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13318:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":8762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13331:3:35","memberName":"max","nodeType":"MemberAccess","src":"13318:16:35","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13309:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473","id":8764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13336:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""},"value":"SafeCast: value doesn't fit in 64 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""}],"id":8756,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13301:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13301:76:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8766,"nodeType":"ExpressionStatement","src":"13301:76:35"},{"expression":{"arguments":[{"id":8769,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8751,"src":"13401:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13394:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":8767,"name":"uint64","nodeType":"ElementaryTypeName","src":"13394:6:35","typeDescriptions":{}}},"id":8770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13394:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":8755,"id":8771,"nodeType":"Return","src":"13387:20:35"}]},"documentation":{"id":8749,"nodeType":"StructuredDocumentation","src":"12908:314:35","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits\n _Available since v2.5._"},"id":8773,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13236:8:35","nodeType":"FunctionDefinition","parameters":{"id":8752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8751,"mutability":"mutable","name":"value","nameLocation":"13253:5:35","nodeType":"VariableDeclaration","scope":8773,"src":"13245:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8750,"name":"uint256","nodeType":"ElementaryTypeName","src":"13245:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13244:15:35"},"returnParameters":{"id":8755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8754,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8773,"src":"13283:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":8753,"name":"uint64","nodeType":"ElementaryTypeName","src":"13283:6:35","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13282:8:35"},"scope":9711,"src":"13227:187:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8797,"nodeType":"Block","src":"13803:123:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8782,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"13821:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13835:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":8784,"name":"uint56","nodeType":"ElementaryTypeName","src":"13835:6:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":8783,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13830:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13830:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":8787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13843:3:35","memberName":"max","nodeType":"MemberAccess","src":"13830:16:35","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13821:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2035362062697473","id":8789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13848:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_656ad93b5ff6665bfe05d97d51fad7c02ad79e6c43bef066c042a6900f450bc5","typeString":"literal_string \"SafeCast: value doesn't fit in 56 bits\""},"value":"SafeCast: value doesn't fit in 56 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_656ad93b5ff6665bfe05d97d51fad7c02ad79e6c43bef066c042a6900f450bc5","typeString":"literal_string \"SafeCast: value doesn't fit in 56 bits\""}],"id":8781,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13813:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13813:76:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8791,"nodeType":"ExpressionStatement","src":"13813:76:35"},{"expression":{"arguments":[{"id":8794,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"13913:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8793,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13906:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":8792,"name":"uint56","nodeType":"ElementaryTypeName","src":"13906:6:35","typeDescriptions":{}}},"id":8795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13906:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":8780,"id":8796,"nodeType":"Return","src":"13899:20:35"}]},"documentation":{"id":8774,"nodeType":"StructuredDocumentation","src":"13420:314:35","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits\n _Available since v4.7._"},"id":8798,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13748:8:35","nodeType":"FunctionDefinition","parameters":{"id":8777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8776,"mutability":"mutable","name":"value","nameLocation":"13765:5:35","nodeType":"VariableDeclaration","scope":8798,"src":"13757:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8775,"name":"uint256","nodeType":"ElementaryTypeName","src":"13757:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13756:15:35"},"returnParameters":{"id":8780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8779,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8798,"src":"13795:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":8778,"name":"uint56","nodeType":"ElementaryTypeName","src":"13795:6:35","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13794:8:35"},"scope":9711,"src":"13739:187:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8822,"nodeType":"Block","src":"14315:123:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8807,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8801,"src":"14333:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14347:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":8809,"name":"uint48","nodeType":"ElementaryTypeName","src":"14347:6:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":8808,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14342:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14342:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":8812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14355:3:35","memberName":"max","nodeType":"MemberAccess","src":"14342:16:35","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14333:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2034382062697473","id":8814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14360:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_599034f9324dd4e988c6cea5a00a30f53147fec1b01559682f18cd840028f495","typeString":"literal_string \"SafeCast: value doesn't fit in 48 bits\""},"value":"SafeCast: value doesn't fit in 48 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_599034f9324dd4e988c6cea5a00a30f53147fec1b01559682f18cd840028f495","typeString":"literal_string \"SafeCast: value doesn't fit in 48 bits\""}],"id":8806,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14325:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14325:76:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8816,"nodeType":"ExpressionStatement","src":"14325:76:35"},{"expression":{"arguments":[{"id":8819,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8801,"src":"14425:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14418:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":8817,"name":"uint48","nodeType":"ElementaryTypeName","src":"14418:6:35","typeDescriptions":{}}},"id":8820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14418:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":8805,"id":8821,"nodeType":"Return","src":"14411:20:35"}]},"documentation":{"id":8799,"nodeType":"StructuredDocumentation","src":"13932:314:35","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits\n _Available since v4.7._"},"id":8823,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14260:8:35","nodeType":"FunctionDefinition","parameters":{"id":8802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8801,"mutability":"mutable","name":"value","nameLocation":"14277:5:35","nodeType":"VariableDeclaration","scope":8823,"src":"14269:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8800,"name":"uint256","nodeType":"ElementaryTypeName","src":"14269:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14268:15:35"},"returnParameters":{"id":8805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8804,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8823,"src":"14307:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":8803,"name":"uint48","nodeType":"ElementaryTypeName","src":"14307:6:35","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14306:8:35"},"scope":9711,"src":"14251:187:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8847,"nodeType":"Block","src":"14827:123:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8832,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8826,"src":"14845:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14859:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":8834,"name":"uint40","nodeType":"ElementaryTypeName","src":"14859:6:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":8833,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14854:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14854:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":8837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14867:3:35","memberName":"max","nodeType":"MemberAccess","src":"14854:16:35","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14845:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2034302062697473","id":8839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14872:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_b23559c58b98a5d3ed7016699c7171ac8defa5a1d180f9a9ffa60468a5701d37","typeString":"literal_string \"SafeCast: value doesn't fit in 40 bits\""},"value":"SafeCast: value doesn't fit in 40 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b23559c58b98a5d3ed7016699c7171ac8defa5a1d180f9a9ffa60468a5701d37","typeString":"literal_string \"SafeCast: value doesn't fit in 40 bits\""}],"id":8831,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14837:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14837:76:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8841,"nodeType":"ExpressionStatement","src":"14837:76:35"},{"expression":{"arguments":[{"id":8844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8826,"src":"14937:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14930:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":8842,"name":"uint40","nodeType":"ElementaryTypeName","src":"14930:6:35","typeDescriptions":{}}},"id":8845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14930:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":8830,"id":8846,"nodeType":"Return","src":"14923:20:35"}]},"documentation":{"id":8824,"nodeType":"StructuredDocumentation","src":"14444:314:35","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits\n _Available since v4.7._"},"id":8848,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14772:8:35","nodeType":"FunctionDefinition","parameters":{"id":8827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8826,"mutability":"mutable","name":"value","nameLocation":"14789:5:35","nodeType":"VariableDeclaration","scope":8848,"src":"14781:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8825,"name":"uint256","nodeType":"ElementaryTypeName","src":"14781:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14780:15:35"},"returnParameters":{"id":8830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8829,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8848,"src":"14819:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":8828,"name":"uint40","nodeType":"ElementaryTypeName","src":"14819:6:35","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14818:8:35"},"scope":9711,"src":"14763:187:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8872,"nodeType":"Block","src":"15339:123:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8857,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8851,"src":"15357:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15371:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":8859,"name":"uint32","nodeType":"ElementaryTypeName","src":"15371:6:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":8858,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15366:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15366:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":8862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15379:3:35","memberName":"max","nodeType":"MemberAccess","src":"15366:16:35","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15357:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2033322062697473","id":8864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15384:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""},"value":"SafeCast: value doesn't fit in 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""}],"id":8856,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15349:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15349:76:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8866,"nodeType":"ExpressionStatement","src":"15349:76:35"},{"expression":{"arguments":[{"id":8869,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8851,"src":"15449:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15442:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":8867,"name":"uint32","nodeType":"ElementaryTypeName","src":"15442:6:35","typeDescriptions":{}}},"id":8870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15442:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":8855,"id":8871,"nodeType":"Return","src":"15435:20:35"}]},"documentation":{"id":8849,"nodeType":"StructuredDocumentation","src":"14956:314:35","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits\n _Available since v2.5._"},"id":8873,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15284:8:35","nodeType":"FunctionDefinition","parameters":{"id":8852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8851,"mutability":"mutable","name":"value","nameLocation":"15301:5:35","nodeType":"VariableDeclaration","scope":8873,"src":"15293:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8850,"name":"uint256","nodeType":"ElementaryTypeName","src":"15293:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15292:15:35"},"returnParameters":{"id":8855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8854,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8873,"src":"15331:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":8853,"name":"uint32","nodeType":"ElementaryTypeName","src":"15331:6:35","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15330:8:35"},"scope":9711,"src":"15275:187:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8897,"nodeType":"Block","src":"15851:123:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8882,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"15869:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15883:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":8884,"name":"uint24","nodeType":"ElementaryTypeName","src":"15883:6:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":8883,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15878:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15878:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":8887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15891:3:35","memberName":"max","nodeType":"MemberAccess","src":"15878:16:35","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15869:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2032342062697473","id":8889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15896:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_f68b65aaf4574c34e9b9d1442d19636c6608b8c4dbd9331c7245f7915c8b2f55","typeString":"literal_string \"SafeCast: value doesn't fit in 24 bits\""},"value":"SafeCast: value doesn't fit in 24 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f68b65aaf4574c34e9b9d1442d19636c6608b8c4dbd9331c7245f7915c8b2f55","typeString":"literal_string \"SafeCast: value doesn't fit in 24 bits\""}],"id":8881,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15861:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15861:76:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8891,"nodeType":"ExpressionStatement","src":"15861:76:35"},{"expression":{"arguments":[{"id":8894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"15961:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15954:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":8892,"name":"uint24","nodeType":"ElementaryTypeName","src":"15954:6:35","typeDescriptions":{}}},"id":8895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15954:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":8880,"id":8896,"nodeType":"Return","src":"15947:20:35"}]},"documentation":{"id":8874,"nodeType":"StructuredDocumentation","src":"15468:314:35","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits\n _Available since v4.7._"},"id":8898,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15796:8:35","nodeType":"FunctionDefinition","parameters":{"id":8877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8876,"mutability":"mutable","name":"value","nameLocation":"15813:5:35","nodeType":"VariableDeclaration","scope":8898,"src":"15805:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8875,"name":"uint256","nodeType":"ElementaryTypeName","src":"15805:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15804:15:35"},"returnParameters":{"id":8880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8898,"src":"15843:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":8878,"name":"uint24","nodeType":"ElementaryTypeName","src":"15843:6:35","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15842:8:35"},"scope":9711,"src":"15787:187:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8922,"nodeType":"Block","src":"16363:123:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8907,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8901,"src":"16381:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8910,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16395:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":8909,"name":"uint16","nodeType":"ElementaryTypeName","src":"16395:6:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":8908,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16390:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16390:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":8912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16403:3:35","memberName":"max","nodeType":"MemberAccess","src":"16390:16:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16381:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2031362062697473","id":8914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16408:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""},"value":"SafeCast: value doesn't fit in 16 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""}],"id":8906,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16373:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16373:76:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8916,"nodeType":"ExpressionStatement","src":"16373:76:35"},{"expression":{"arguments":[{"id":8919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8901,"src":"16473:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16466:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":8917,"name":"uint16","nodeType":"ElementaryTypeName","src":"16466:6:35","typeDescriptions":{}}},"id":8920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16466:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":8905,"id":8921,"nodeType":"Return","src":"16459:20:35"}]},"documentation":{"id":8899,"nodeType":"StructuredDocumentation","src":"15980:314:35","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits\n _Available since v2.5._"},"id":8923,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16308:8:35","nodeType":"FunctionDefinition","parameters":{"id":8902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8901,"mutability":"mutable","name":"value","nameLocation":"16325:5:35","nodeType":"VariableDeclaration","scope":8923,"src":"16317:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8900,"name":"uint256","nodeType":"ElementaryTypeName","src":"16317:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16316:15:35"},"returnParameters":{"id":8905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8923,"src":"16355:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":8903,"name":"uint16","nodeType":"ElementaryTypeName","src":"16355:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16354:8:35"},"scope":9711,"src":"16299:187:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8947,"nodeType":"Block","src":"16869:120:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8932,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"16887:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16901:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8934,"name":"uint8","nodeType":"ElementaryTypeName","src":"16901:5:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":8933,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16896:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16896:11:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":8937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16908:3:35","memberName":"max","nodeType":"MemberAccess","src":"16896:15:35","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16887:24:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e20382062697473","id":8939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16913:39:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""},"value":"SafeCast: value doesn't fit in 8 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""}],"id":8931,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"16879:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16879:74:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8941,"nodeType":"ExpressionStatement","src":"16879:74:35"},{"expression":{"arguments":[{"id":8944,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"16976:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16970:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8942,"name":"uint8","nodeType":"ElementaryTypeName","src":"16970:5:35","typeDescriptions":{}}},"id":8945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16970:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":8930,"id":8946,"nodeType":"Return","src":"16963:19:35"}]},"documentation":{"id":8924,"nodeType":"StructuredDocumentation","src":"16492:310:35","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits\n _Available since v2.5._"},"id":8948,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16816:7:35","nodeType":"FunctionDefinition","parameters":{"id":8927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8926,"mutability":"mutable","name":"value","nameLocation":"16832:5:35","nodeType":"VariableDeclaration","scope":8948,"src":"16824:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8925,"name":"uint256","nodeType":"ElementaryTypeName","src":"16824:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16823:15:35"},"returnParameters":{"id":8930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8948,"src":"16862:5:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8928,"name":"uint8","nodeType":"ElementaryTypeName","src":"16862:5:35","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16861:7:35"},"scope":9711,"src":"16807:182:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8968,"nodeType":"Block","src":"17263:103:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8957,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8951,"src":"17281:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":8958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17290:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17281:10:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c7565206d75737420626520706f736974697665","id":8960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17293:34:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_74e6d3a4204092bea305532ded31d3763fc378e46be3884a93ceff08a0761807","typeString":"literal_string \"SafeCast: value must be positive\""},"value":"SafeCast: value must be positive"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_74e6d3a4204092bea305532ded31d3763fc378e46be3884a93ceff08a0761807","typeString":"literal_string \"SafeCast: value must be positive\""}],"id":8956,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17273:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17273:55:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8962,"nodeType":"ExpressionStatement","src":"17273:55:35"},{"expression":{"arguments":[{"id":8965,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8951,"src":"17353:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17345:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8963,"name":"uint256","nodeType":"ElementaryTypeName","src":"17345:7:35","typeDescriptions":{}}},"id":8966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17345:14:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8955,"id":8967,"nodeType":"Return","src":"17338:21:35"}]},"documentation":{"id":8949,"nodeType":"StructuredDocumentation","src":"16995:198:35","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0.\n _Available since v3.0._"},"id":8969,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17207:9:35","nodeType":"FunctionDefinition","parameters":{"id":8952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8951,"mutability":"mutable","name":"value","nameLocation":"17224:5:35","nodeType":"VariableDeclaration","scope":8969,"src":"17217:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8950,"name":"int256","nodeType":"ElementaryTypeName","src":"17217:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17216:14:35"},"returnParameters":{"id":8955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8969,"src":"17254:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8953,"name":"uint256","nodeType":"ElementaryTypeName","src":"17254:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17253:9:35"},"scope":9711,"src":"17198:168:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8991,"nodeType":"Block","src":"17801:124:35","statements":[{"expression":{"id":8982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8977,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"17811:10:35","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8980,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8972,"src":"17831:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17824:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":8978,"name":"int248","nodeType":"ElementaryTypeName","src":"17824:6:35","typeDescriptions":{}}},"id":8981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17824:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17811:26:35","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":8983,"nodeType":"ExpressionStatement","src":"17811:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8985,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"17855:10:35","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8986,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8972,"src":"17869:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17855:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203234382062697473","id":8988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17876:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_6ac19bba4607c9b45ff35f54fbc4ca64c29c7457109a16fa180ea77cdbda8593","typeString":"literal_string \"SafeCast: value doesn't fit in 248 bits\""},"value":"SafeCast: value doesn't fit in 248 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6ac19bba4607c9b45ff35f54fbc4ca64c29c7457109a16fa180ea77cdbda8593","typeString":"literal_string \"SafeCast: value doesn't fit in 248 bits\""}],"id":8984,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17847:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17847:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8990,"nodeType":"ExpressionStatement","src":"17847:71:35"}]},"documentation":{"id":8970,"nodeType":"StructuredDocumentation","src":"17372:350:35","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits\n _Available since v4.7._"},"id":8992,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17736:8:35","nodeType":"FunctionDefinition","parameters":{"id":8973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8972,"mutability":"mutable","name":"value","nameLocation":"17752:5:35","nodeType":"VariableDeclaration","scope":8992,"src":"17745:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8971,"name":"int256","nodeType":"ElementaryTypeName","src":"17745:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17744:14:35"},"returnParameters":{"id":8976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8975,"mutability":"mutable","name":"downcasted","nameLocation":"17789:10:35","nodeType":"VariableDeclaration","scope":8992,"src":"17782:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":8974,"name":"int248","nodeType":"ElementaryTypeName","src":"17782:6:35","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17781:19:35"},"scope":9711,"src":"17727:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9014,"nodeType":"Block","src":"18360:124:35","statements":[{"expression":{"id":9005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9000,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8998,"src":"18370:10:35","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9003,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8995,"src":"18390:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18383:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":9001,"name":"int240","nodeType":"ElementaryTypeName","src":"18383:6:35","typeDescriptions":{}}},"id":9004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18383:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18370:26:35","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":9006,"nodeType":"ExpressionStatement","src":"18370:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9008,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8998,"src":"18414:10:35","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9009,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8995,"src":"18428:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18414:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203234302062697473","id":9011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18435:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_375fa0f6cb9fb5845d214c630920cedf4424913ed6dc32c297d430efa3d61a87","typeString":"literal_string \"SafeCast: value doesn't fit in 240 bits\""},"value":"SafeCast: value doesn't fit in 240 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_375fa0f6cb9fb5845d214c630920cedf4424913ed6dc32c297d430efa3d61a87","typeString":"literal_string \"SafeCast: value doesn't fit in 240 bits\""}],"id":9007,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"18406:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18406:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9013,"nodeType":"ExpressionStatement","src":"18406:71:35"}]},"documentation":{"id":8993,"nodeType":"StructuredDocumentation","src":"17931:350:35","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits\n _Available since v4.7._"},"id":9015,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18295:8:35","nodeType":"FunctionDefinition","parameters":{"id":8996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8995,"mutability":"mutable","name":"value","nameLocation":"18311:5:35","nodeType":"VariableDeclaration","scope":9015,"src":"18304:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8994,"name":"int256","nodeType":"ElementaryTypeName","src":"18304:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18303:14:35"},"returnParameters":{"id":8999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8998,"mutability":"mutable","name":"downcasted","nameLocation":"18348:10:35","nodeType":"VariableDeclaration","scope":9015,"src":"18341:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":8997,"name":"int240","nodeType":"ElementaryTypeName","src":"18341:6:35","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18340:19:35"},"scope":9711,"src":"18286:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9037,"nodeType":"Block","src":"18919:124:35","statements":[{"expression":{"id":9028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9023,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9021,"src":"18929:10:35","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9026,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9018,"src":"18949:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18942:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":9024,"name":"int232","nodeType":"ElementaryTypeName","src":"18942:6:35","typeDescriptions":{}}},"id":9027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18942:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18929:26:35","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":9029,"nodeType":"ExpressionStatement","src":"18929:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9031,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9021,"src":"18973:10:35","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9032,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9018,"src":"18987:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18973:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203233322062697473","id":9034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18994:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_5797fb2c4589bd6a92752ce0eacaac67341e37ab28c96c2284ab897e7ac77957","typeString":"literal_string \"SafeCast: value doesn't fit in 232 bits\""},"value":"SafeCast: value doesn't fit in 232 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5797fb2c4589bd6a92752ce0eacaac67341e37ab28c96c2284ab897e7ac77957","typeString":"literal_string \"SafeCast: value doesn't fit in 232 bits\""}],"id":9030,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"18965:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18965:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9036,"nodeType":"ExpressionStatement","src":"18965:71:35"}]},"documentation":{"id":9016,"nodeType":"StructuredDocumentation","src":"18490:350:35","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits\n _Available since v4.7._"},"id":9038,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18854:8:35","nodeType":"FunctionDefinition","parameters":{"id":9019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9018,"mutability":"mutable","name":"value","nameLocation":"18870:5:35","nodeType":"VariableDeclaration","scope":9038,"src":"18863:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9017,"name":"int256","nodeType":"ElementaryTypeName","src":"18863:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18862:14:35"},"returnParameters":{"id":9022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9021,"mutability":"mutable","name":"downcasted","nameLocation":"18907:10:35","nodeType":"VariableDeclaration","scope":9038,"src":"18900:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":9020,"name":"int232","nodeType":"ElementaryTypeName","src":"18900:6:35","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18899:19:35"},"scope":9711,"src":"18845:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9060,"nodeType":"Block","src":"19478:124:35","statements":[{"expression":{"id":9051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9046,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9044,"src":"19488:10:35","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9049,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9041,"src":"19508:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19501:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":9047,"name":"int224","nodeType":"ElementaryTypeName","src":"19501:6:35","typeDescriptions":{}}},"id":9050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19501:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19488:26:35","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":9052,"nodeType":"ExpressionStatement","src":"19488:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9054,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9044,"src":"19532:10:35","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9055,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9041,"src":"19546:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19532:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203232342062697473","id":9057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19553:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79","typeString":"literal_string \"SafeCast: value doesn't fit in 224 bits\""},"value":"SafeCast: value doesn't fit in 224 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79","typeString":"literal_string \"SafeCast: value doesn't fit in 224 bits\""}],"id":9053,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19524:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19524:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9059,"nodeType":"ExpressionStatement","src":"19524:71:35"}]},"documentation":{"id":9039,"nodeType":"StructuredDocumentation","src":"19049:350:35","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits\n _Available since v4.7._"},"id":9061,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19413:8:35","nodeType":"FunctionDefinition","parameters":{"id":9042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9041,"mutability":"mutable","name":"value","nameLocation":"19429:5:35","nodeType":"VariableDeclaration","scope":9061,"src":"19422:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9040,"name":"int256","nodeType":"ElementaryTypeName","src":"19422:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19421:14:35"},"returnParameters":{"id":9045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9044,"mutability":"mutable","name":"downcasted","nameLocation":"19466:10:35","nodeType":"VariableDeclaration","scope":9061,"src":"19459:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":9043,"name":"int224","nodeType":"ElementaryTypeName","src":"19459:6:35","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19458:19:35"},"scope":9711,"src":"19404:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9083,"nodeType":"Block","src":"20037:124:35","statements":[{"expression":{"id":9074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9069,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9067,"src":"20047:10:35","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9072,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9064,"src":"20067:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20060:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":9070,"name":"int216","nodeType":"ElementaryTypeName","src":"20060:6:35","typeDescriptions":{}}},"id":9073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20060:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"20047:26:35","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":9075,"nodeType":"ExpressionStatement","src":"20047:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9077,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9067,"src":"20091:10:35","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9078,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9064,"src":"20105:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20091:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203231362062697473","id":9080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20112:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_8966adc0aad8dc91b207c69c3eb4937e498af8cc706cfe7edd55f3a6ea53488d","typeString":"literal_string \"SafeCast: value doesn't fit in 216 bits\""},"value":"SafeCast: value doesn't fit in 216 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8966adc0aad8dc91b207c69c3eb4937e498af8cc706cfe7edd55f3a6ea53488d","typeString":"literal_string \"SafeCast: value doesn't fit in 216 bits\""}],"id":9076,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20083:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20083:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9082,"nodeType":"ExpressionStatement","src":"20083:71:35"}]},"documentation":{"id":9062,"nodeType":"StructuredDocumentation","src":"19608:350:35","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits\n _Available since v4.7._"},"id":9084,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19972:8:35","nodeType":"FunctionDefinition","parameters":{"id":9065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9064,"mutability":"mutable","name":"value","nameLocation":"19988:5:35","nodeType":"VariableDeclaration","scope":9084,"src":"19981:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9063,"name":"int256","nodeType":"ElementaryTypeName","src":"19981:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19980:14:35"},"returnParameters":{"id":9068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9067,"mutability":"mutable","name":"downcasted","nameLocation":"20025:10:35","nodeType":"VariableDeclaration","scope":9084,"src":"20018:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":9066,"name":"int216","nodeType":"ElementaryTypeName","src":"20018:6:35","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"20017:19:35"},"scope":9711,"src":"19963:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9106,"nodeType":"Block","src":"20596:124:35","statements":[{"expression":{"id":9097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9092,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9090,"src":"20606:10:35","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9095,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9087,"src":"20626:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20619:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":9093,"name":"int208","nodeType":"ElementaryTypeName","src":"20619:6:35","typeDescriptions":{}}},"id":9096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20619:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20606:26:35","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":9098,"nodeType":"ExpressionStatement","src":"20606:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9100,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9090,"src":"20650:10:35","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9101,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9087,"src":"20664:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20650:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203230382062697473","id":9103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20671:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_43d81217fa633fa1c6e88855de94fb990f5831ac266b0a90afa660e986ab5e23","typeString":"literal_string \"SafeCast: value doesn't fit in 208 bits\""},"value":"SafeCast: value doesn't fit in 208 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_43d81217fa633fa1c6e88855de94fb990f5831ac266b0a90afa660e986ab5e23","typeString":"literal_string \"SafeCast: value doesn't fit in 208 bits\""}],"id":9099,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"20642:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20642:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9105,"nodeType":"ExpressionStatement","src":"20642:71:35"}]},"documentation":{"id":9085,"nodeType":"StructuredDocumentation","src":"20167:350:35","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits\n _Available since v4.7._"},"id":9107,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20531:8:35","nodeType":"FunctionDefinition","parameters":{"id":9088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9087,"mutability":"mutable","name":"value","nameLocation":"20547:5:35","nodeType":"VariableDeclaration","scope":9107,"src":"20540:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9086,"name":"int256","nodeType":"ElementaryTypeName","src":"20540:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20539:14:35"},"returnParameters":{"id":9091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9090,"mutability":"mutable","name":"downcasted","nameLocation":"20584:10:35","nodeType":"VariableDeclaration","scope":9107,"src":"20577:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":9089,"name":"int208","nodeType":"ElementaryTypeName","src":"20577:6:35","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20576:19:35"},"scope":9711,"src":"20522:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9129,"nodeType":"Block","src":"21155:124:35","statements":[{"expression":{"id":9120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9115,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9113,"src":"21165:10:35","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9118,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9110,"src":"21185:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21178:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":9116,"name":"int200","nodeType":"ElementaryTypeName","src":"21178:6:35","typeDescriptions":{}}},"id":9119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21178:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21165:26:35","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":9121,"nodeType":"ExpressionStatement","src":"21165:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9123,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9113,"src":"21209:10:35","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9124,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9110,"src":"21223:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21209:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203230302062697473","id":9126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21230:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_df8130f294fe2698967ea9ead82c4da9454490567d976d00551e0174e655314c","typeString":"literal_string \"SafeCast: value doesn't fit in 200 bits\""},"value":"SafeCast: value doesn't fit in 200 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df8130f294fe2698967ea9ead82c4da9454490567d976d00551e0174e655314c","typeString":"literal_string \"SafeCast: value doesn't fit in 200 bits\""}],"id":9122,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"21201:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21201:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9128,"nodeType":"ExpressionStatement","src":"21201:71:35"}]},"documentation":{"id":9108,"nodeType":"StructuredDocumentation","src":"20726:350:35","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits\n _Available since v4.7._"},"id":9130,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"21090:8:35","nodeType":"FunctionDefinition","parameters":{"id":9111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9110,"mutability":"mutable","name":"value","nameLocation":"21106:5:35","nodeType":"VariableDeclaration","scope":9130,"src":"21099:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9109,"name":"int256","nodeType":"ElementaryTypeName","src":"21099:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21098:14:35"},"returnParameters":{"id":9114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9113,"mutability":"mutable","name":"downcasted","nameLocation":"21143:10:35","nodeType":"VariableDeclaration","scope":9130,"src":"21136:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":9112,"name":"int200","nodeType":"ElementaryTypeName","src":"21136:6:35","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21135:19:35"},"scope":9711,"src":"21081:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9152,"nodeType":"Block","src":"21714:124:35","statements":[{"expression":{"id":9143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9138,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9136,"src":"21724:10:35","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9141,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9133,"src":"21744:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21737:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":9139,"name":"int192","nodeType":"ElementaryTypeName","src":"21737:6:35","typeDescriptions":{}}},"id":9142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21737:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21724:26:35","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":9144,"nodeType":"ExpressionStatement","src":"21724:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9146,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9136,"src":"21768:10:35","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9147,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9133,"src":"21782:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21768:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203139322062697473","id":9149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21789:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_112978800f12a1c4f1eab82789f7b6defd49dc1c17ba270a84ffc28392fb05ae","typeString":"literal_string \"SafeCast: value doesn't fit in 192 bits\""},"value":"SafeCast: value doesn't fit in 192 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_112978800f12a1c4f1eab82789f7b6defd49dc1c17ba270a84ffc28392fb05ae","typeString":"literal_string \"SafeCast: value doesn't fit in 192 bits\""}],"id":9145,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"21760:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21760:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9151,"nodeType":"ExpressionStatement","src":"21760:71:35"}]},"documentation":{"id":9131,"nodeType":"StructuredDocumentation","src":"21285:350:35","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits\n _Available since v4.7._"},"id":9153,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21649:8:35","nodeType":"FunctionDefinition","parameters":{"id":9134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9133,"mutability":"mutable","name":"value","nameLocation":"21665:5:35","nodeType":"VariableDeclaration","scope":9153,"src":"21658:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9132,"name":"int256","nodeType":"ElementaryTypeName","src":"21658:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21657:14:35"},"returnParameters":{"id":9137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9136,"mutability":"mutable","name":"downcasted","nameLocation":"21702:10:35","nodeType":"VariableDeclaration","scope":9153,"src":"21695:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":9135,"name":"int192","nodeType":"ElementaryTypeName","src":"21695:6:35","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21694:19:35"},"scope":9711,"src":"21640:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9175,"nodeType":"Block","src":"22273:124:35","statements":[{"expression":{"id":9166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9161,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9159,"src":"22283:10:35","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9164,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9156,"src":"22303:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22296:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":9162,"name":"int184","nodeType":"ElementaryTypeName","src":"22296:6:35","typeDescriptions":{}}},"id":9165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22296:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22283:26:35","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":9167,"nodeType":"ExpressionStatement","src":"22283:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9169,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9159,"src":"22327:10:35","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9170,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9156,"src":"22341:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22327:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203138342062697473","id":9172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22348:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_86c53d89b1944d561ecfa42e859033241d1df6ea8d42a57ae02f79d45de4aa75","typeString":"literal_string \"SafeCast: value doesn't fit in 184 bits\""},"value":"SafeCast: value doesn't fit in 184 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86c53d89b1944d561ecfa42e859033241d1df6ea8d42a57ae02f79d45de4aa75","typeString":"literal_string \"SafeCast: value doesn't fit in 184 bits\""}],"id":9168,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"22319:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22319:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9174,"nodeType":"ExpressionStatement","src":"22319:71:35"}]},"documentation":{"id":9154,"nodeType":"StructuredDocumentation","src":"21844:350:35","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits\n _Available since v4.7._"},"id":9176,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22208:8:35","nodeType":"FunctionDefinition","parameters":{"id":9157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9156,"mutability":"mutable","name":"value","nameLocation":"22224:5:35","nodeType":"VariableDeclaration","scope":9176,"src":"22217:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9155,"name":"int256","nodeType":"ElementaryTypeName","src":"22217:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22216:14:35"},"returnParameters":{"id":9160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9159,"mutability":"mutable","name":"downcasted","nameLocation":"22261:10:35","nodeType":"VariableDeclaration","scope":9176,"src":"22254:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":9158,"name":"int184","nodeType":"ElementaryTypeName","src":"22254:6:35","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22253:19:35"},"scope":9711,"src":"22199:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9198,"nodeType":"Block","src":"22832:124:35","statements":[{"expression":{"id":9189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9184,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"22842:10:35","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9187,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9179,"src":"22862:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22855:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":9185,"name":"int176","nodeType":"ElementaryTypeName","src":"22855:6:35","typeDescriptions":{}}},"id":9188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22855:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22842:26:35","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":9190,"nodeType":"ExpressionStatement","src":"22842:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9192,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"22886:10:35","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9193,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9179,"src":"22900:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22886:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203137362062697473","id":9195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22907:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_4069e970f734339c7841e84a1b26f503bff22b76884c1168dc24e2e6af9b1e30","typeString":"literal_string \"SafeCast: value doesn't fit in 176 bits\""},"value":"SafeCast: value doesn't fit in 176 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4069e970f734339c7841e84a1b26f503bff22b76884c1168dc24e2e6af9b1e30","typeString":"literal_string \"SafeCast: value doesn't fit in 176 bits\""}],"id":9191,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"22878:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22878:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9197,"nodeType":"ExpressionStatement","src":"22878:71:35"}]},"documentation":{"id":9177,"nodeType":"StructuredDocumentation","src":"22403:350:35","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits\n _Available since v4.7._"},"id":9199,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22767:8:35","nodeType":"FunctionDefinition","parameters":{"id":9180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9179,"mutability":"mutable","name":"value","nameLocation":"22783:5:35","nodeType":"VariableDeclaration","scope":9199,"src":"22776:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9178,"name":"int256","nodeType":"ElementaryTypeName","src":"22776:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22775:14:35"},"returnParameters":{"id":9183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9182,"mutability":"mutable","name":"downcasted","nameLocation":"22820:10:35","nodeType":"VariableDeclaration","scope":9199,"src":"22813:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":9181,"name":"int176","nodeType":"ElementaryTypeName","src":"22813:6:35","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22812:19:35"},"scope":9711,"src":"22758:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9221,"nodeType":"Block","src":"23391:124:35","statements":[{"expression":{"id":9212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9207,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9205,"src":"23401:10:35","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9202,"src":"23421:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23414:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":9208,"name":"int168","nodeType":"ElementaryTypeName","src":"23414:6:35","typeDescriptions":{}}},"id":9211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23414:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23401:26:35","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":9213,"nodeType":"ExpressionStatement","src":"23401:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9215,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9205,"src":"23445:10:35","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9216,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9202,"src":"23459:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23445:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203136382062697473","id":9218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23466:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_67ef32a3cbe7b34392347d335b0a7ae95c74a34ca40e4efb58f6c9a3154e85a1","typeString":"literal_string \"SafeCast: value doesn't fit in 168 bits\""},"value":"SafeCast: value doesn't fit in 168 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67ef32a3cbe7b34392347d335b0a7ae95c74a34ca40e4efb58f6c9a3154e85a1","typeString":"literal_string \"SafeCast: value doesn't fit in 168 bits\""}],"id":9214,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23437:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23437:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9220,"nodeType":"ExpressionStatement","src":"23437:71:35"}]},"documentation":{"id":9200,"nodeType":"StructuredDocumentation","src":"22962:350:35","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits\n _Available since v4.7._"},"id":9222,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23326:8:35","nodeType":"FunctionDefinition","parameters":{"id":9203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9202,"mutability":"mutable","name":"value","nameLocation":"23342:5:35","nodeType":"VariableDeclaration","scope":9222,"src":"23335:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9201,"name":"int256","nodeType":"ElementaryTypeName","src":"23335:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23334:14:35"},"returnParameters":{"id":9206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9205,"mutability":"mutable","name":"downcasted","nameLocation":"23379:10:35","nodeType":"VariableDeclaration","scope":9222,"src":"23372:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":9204,"name":"int168","nodeType":"ElementaryTypeName","src":"23372:6:35","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23371:19:35"},"scope":9711,"src":"23317:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9244,"nodeType":"Block","src":"23950:124:35","statements":[{"expression":{"id":9235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9230,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9228,"src":"23960:10:35","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9233,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9225,"src":"23980:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23973:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":9231,"name":"int160","nodeType":"ElementaryTypeName","src":"23973:6:35","typeDescriptions":{}}},"id":9234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23973:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23960:26:35","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":9236,"nodeType":"ExpressionStatement","src":"23960:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9238,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9228,"src":"24004:10:35","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9239,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9225,"src":"24018:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24004:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203136302062697473","id":9241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24025:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_976ecce9083debfe29d3a99b955facf24b8725f1b964d1a5bb4197ffcd60ab9d","typeString":"literal_string \"SafeCast: value doesn't fit in 160 bits\""},"value":"SafeCast: value doesn't fit in 160 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_976ecce9083debfe29d3a99b955facf24b8725f1b964d1a5bb4197ffcd60ab9d","typeString":"literal_string \"SafeCast: value doesn't fit in 160 bits\""}],"id":9237,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"23996:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23996:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9243,"nodeType":"ExpressionStatement","src":"23996:71:35"}]},"documentation":{"id":9223,"nodeType":"StructuredDocumentation","src":"23521:350:35","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits\n _Available since v4.7._"},"id":9245,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23885:8:35","nodeType":"FunctionDefinition","parameters":{"id":9226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9225,"mutability":"mutable","name":"value","nameLocation":"23901:5:35","nodeType":"VariableDeclaration","scope":9245,"src":"23894:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9224,"name":"int256","nodeType":"ElementaryTypeName","src":"23894:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23893:14:35"},"returnParameters":{"id":9229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9228,"mutability":"mutable","name":"downcasted","nameLocation":"23938:10:35","nodeType":"VariableDeclaration","scope":9245,"src":"23931:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":9227,"name":"int160","nodeType":"ElementaryTypeName","src":"23931:6:35","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23930:19:35"},"scope":9711,"src":"23876:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9267,"nodeType":"Block","src":"24509:124:35","statements":[{"expression":{"id":9258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9253,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9251,"src":"24519:10:35","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9256,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9248,"src":"24539:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24532:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":9254,"name":"int152","nodeType":"ElementaryTypeName","src":"24532:6:35","typeDescriptions":{}}},"id":9257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24532:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24519:26:35","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":9259,"nodeType":"ExpressionStatement","src":"24519:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9261,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9251,"src":"24563:10:35","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9248,"src":"24577:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24563:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203135322062697473","id":9264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24584:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_211cad43a2caf5f01e34af51190b8a7b6f3d9c195bd25586ea12242191b97831","typeString":"literal_string \"SafeCast: value doesn't fit in 152 bits\""},"value":"SafeCast: value doesn't fit in 152 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_211cad43a2caf5f01e34af51190b8a7b6f3d9c195bd25586ea12242191b97831","typeString":"literal_string \"SafeCast: value doesn't fit in 152 bits\""}],"id":9260,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"24555:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24555:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9266,"nodeType":"ExpressionStatement","src":"24555:71:35"}]},"documentation":{"id":9246,"nodeType":"StructuredDocumentation","src":"24080:350:35","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits\n _Available since v4.7._"},"id":9268,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24444:8:35","nodeType":"FunctionDefinition","parameters":{"id":9249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9248,"mutability":"mutable","name":"value","nameLocation":"24460:5:35","nodeType":"VariableDeclaration","scope":9268,"src":"24453:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9247,"name":"int256","nodeType":"ElementaryTypeName","src":"24453:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24452:14:35"},"returnParameters":{"id":9252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9251,"mutability":"mutable","name":"downcasted","nameLocation":"24497:10:35","nodeType":"VariableDeclaration","scope":9268,"src":"24490:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":9250,"name":"int152","nodeType":"ElementaryTypeName","src":"24490:6:35","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24489:19:35"},"scope":9711,"src":"24435:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9290,"nodeType":"Block","src":"25068:124:35","statements":[{"expression":{"id":9281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9276,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9274,"src":"25078:10:35","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9271,"src":"25098:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25091:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":9277,"name":"int144","nodeType":"ElementaryTypeName","src":"25091:6:35","typeDescriptions":{}}},"id":9280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25091:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"25078:26:35","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":9282,"nodeType":"ExpressionStatement","src":"25078:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9284,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9274,"src":"25122:10:35","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9285,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9271,"src":"25136:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25122:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203134342062697473","id":9287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25143:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_17d8c5a6d3b2fd2517ba2e4a2ac70a3367cd362448f8338aaa6edf8bfd812bab","typeString":"literal_string \"SafeCast: value doesn't fit in 144 bits\""},"value":"SafeCast: value doesn't fit in 144 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17d8c5a6d3b2fd2517ba2e4a2ac70a3367cd362448f8338aaa6edf8bfd812bab","typeString":"literal_string \"SafeCast: value doesn't fit in 144 bits\""}],"id":9283,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"25114:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25114:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9289,"nodeType":"ExpressionStatement","src":"25114:71:35"}]},"documentation":{"id":9269,"nodeType":"StructuredDocumentation","src":"24639:350:35","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits\n _Available since v4.7._"},"id":9291,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"25003:8:35","nodeType":"FunctionDefinition","parameters":{"id":9272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9271,"mutability":"mutable","name":"value","nameLocation":"25019:5:35","nodeType":"VariableDeclaration","scope":9291,"src":"25012:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9270,"name":"int256","nodeType":"ElementaryTypeName","src":"25012:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25011:14:35"},"returnParameters":{"id":9275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9274,"mutability":"mutable","name":"downcasted","nameLocation":"25056:10:35","nodeType":"VariableDeclaration","scope":9291,"src":"25049:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":9273,"name":"int144","nodeType":"ElementaryTypeName","src":"25049:6:35","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"25048:19:35"},"scope":9711,"src":"24994:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9313,"nodeType":"Block","src":"25627:124:35","statements":[{"expression":{"id":9304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9299,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9297,"src":"25637:10:35","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9302,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9294,"src":"25657:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25650:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":9300,"name":"int136","nodeType":"ElementaryTypeName","src":"25650:6:35","typeDescriptions":{}}},"id":9303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25650:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25637:26:35","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":9305,"nodeType":"ExpressionStatement","src":"25637:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9307,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9297,"src":"25681:10:35","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9308,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9294,"src":"25695:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25681:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203133362062697473","id":9310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25702:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1f81e2e2913e1cee9dba7bcd9837bbf8a8122edaac4afc578271db3c25a56a","typeString":"literal_string \"SafeCast: value doesn't fit in 136 bits\""},"value":"SafeCast: value doesn't fit in 136 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8b1f81e2e2913e1cee9dba7bcd9837bbf8a8122edaac4afc578271db3c25a56a","typeString":"literal_string \"SafeCast: value doesn't fit in 136 bits\""}],"id":9306,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"25673:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25673:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9312,"nodeType":"ExpressionStatement","src":"25673:71:35"}]},"documentation":{"id":9292,"nodeType":"StructuredDocumentation","src":"25198:350:35","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits\n _Available since v4.7._"},"id":9314,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25562:8:35","nodeType":"FunctionDefinition","parameters":{"id":9295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9294,"mutability":"mutable","name":"value","nameLocation":"25578:5:35","nodeType":"VariableDeclaration","scope":9314,"src":"25571:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9293,"name":"int256","nodeType":"ElementaryTypeName","src":"25571:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25570:14:35"},"returnParameters":{"id":9298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9297,"mutability":"mutable","name":"downcasted","nameLocation":"25615:10:35","nodeType":"VariableDeclaration","scope":9314,"src":"25608:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":9296,"name":"int136","nodeType":"ElementaryTypeName","src":"25608:6:35","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25607:19:35"},"scope":9711,"src":"25553:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9336,"nodeType":"Block","src":"26186:124:35","statements":[{"expression":{"id":9327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9322,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9320,"src":"26196:10:35","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9325,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9317,"src":"26216:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9324,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26209:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":9323,"name":"int128","nodeType":"ElementaryTypeName","src":"26209:6:35","typeDescriptions":{}}},"id":9326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26209:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"26196:26:35","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":9328,"nodeType":"ExpressionStatement","src":"26196:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9330,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9320,"src":"26240:10:35","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9331,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9317,"src":"26254:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26240:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473","id":9333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"26261:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""},"value":"SafeCast: value doesn't fit in 128 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""}],"id":9329,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"26232:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26232:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9335,"nodeType":"ExpressionStatement","src":"26232:71:35"}]},"documentation":{"id":9315,"nodeType":"StructuredDocumentation","src":"25757:350:35","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits\n _Available since v3.1._"},"id":9337,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"26121:8:35","nodeType":"FunctionDefinition","parameters":{"id":9318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9317,"mutability":"mutable","name":"value","nameLocation":"26137:5:35","nodeType":"VariableDeclaration","scope":9337,"src":"26130:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9316,"name":"int256","nodeType":"ElementaryTypeName","src":"26130:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26129:14:35"},"returnParameters":{"id":9321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9320,"mutability":"mutable","name":"downcasted","nameLocation":"26174:10:35","nodeType":"VariableDeclaration","scope":9337,"src":"26167:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":9319,"name":"int128","nodeType":"ElementaryTypeName","src":"26167:6:35","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"26166:19:35"},"scope":9711,"src":"26112:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9359,"nodeType":"Block","src":"26745:124:35","statements":[{"expression":{"id":9350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9345,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9343,"src":"26755:10:35","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9348,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9340,"src":"26775:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26768:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":9346,"name":"int120","nodeType":"ElementaryTypeName","src":"26768:6:35","typeDescriptions":{}}},"id":9349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26768:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26755:26:35","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":9351,"nodeType":"ExpressionStatement","src":"26755:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9353,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9343,"src":"26799:10:35","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9354,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9340,"src":"26813:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26799:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132302062697473","id":9356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"26820:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_3c40c26bb27060cce77002ca0c426dcc1bef2d367c195ca2eb24bd8b2cc1bb09","typeString":"literal_string \"SafeCast: value doesn't fit in 120 bits\""},"value":"SafeCast: value doesn't fit in 120 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c40c26bb27060cce77002ca0c426dcc1bef2d367c195ca2eb24bd8b2cc1bb09","typeString":"literal_string \"SafeCast: value doesn't fit in 120 bits\""}],"id":9352,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"26791:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26791:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9358,"nodeType":"ExpressionStatement","src":"26791:71:35"}]},"documentation":{"id":9338,"nodeType":"StructuredDocumentation","src":"26316:350:35","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits\n _Available since v4.7._"},"id":9360,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26680:8:35","nodeType":"FunctionDefinition","parameters":{"id":9341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9340,"mutability":"mutable","name":"value","nameLocation":"26696:5:35","nodeType":"VariableDeclaration","scope":9360,"src":"26689:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9339,"name":"int256","nodeType":"ElementaryTypeName","src":"26689:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26688:14:35"},"returnParameters":{"id":9344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9343,"mutability":"mutable","name":"downcasted","nameLocation":"26733:10:35","nodeType":"VariableDeclaration","scope":9360,"src":"26726:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":9342,"name":"int120","nodeType":"ElementaryTypeName","src":"26726:6:35","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26725:19:35"},"scope":9711,"src":"26671:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9382,"nodeType":"Block","src":"27304:124:35","statements":[{"expression":{"id":9373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9368,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9366,"src":"27314:10:35","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9371,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9363,"src":"27334:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27327:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":9369,"name":"int112","nodeType":"ElementaryTypeName","src":"27327:6:35","typeDescriptions":{}}},"id":9372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27327:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27314:26:35","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":9374,"nodeType":"ExpressionStatement","src":"27314:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9376,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9366,"src":"27358:10:35","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9377,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9363,"src":"27372:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27358:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203131322062697473","id":9379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"27379:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_45659ae152ef697531e1c1115de07c87af91ac22466c3e76b808821799776efd","typeString":"literal_string \"SafeCast: value doesn't fit in 112 bits\""},"value":"SafeCast: value doesn't fit in 112 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45659ae152ef697531e1c1115de07c87af91ac22466c3e76b808821799776efd","typeString":"literal_string \"SafeCast: value doesn't fit in 112 bits\""}],"id":9375,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"27350:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27350:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9381,"nodeType":"ExpressionStatement","src":"27350:71:35"}]},"documentation":{"id":9361,"nodeType":"StructuredDocumentation","src":"26875:350:35","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits\n _Available since v4.7._"},"id":9383,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"27239:8:35","nodeType":"FunctionDefinition","parameters":{"id":9364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9363,"mutability":"mutable","name":"value","nameLocation":"27255:5:35","nodeType":"VariableDeclaration","scope":9383,"src":"27248:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9362,"name":"int256","nodeType":"ElementaryTypeName","src":"27248:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27247:14:35"},"returnParameters":{"id":9367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9366,"mutability":"mutable","name":"downcasted","nameLocation":"27292:10:35","nodeType":"VariableDeclaration","scope":9383,"src":"27285:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":9365,"name":"int112","nodeType":"ElementaryTypeName","src":"27285:6:35","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27284:19:35"},"scope":9711,"src":"27230:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9405,"nodeType":"Block","src":"27863:124:35","statements":[{"expression":{"id":9396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9391,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9389,"src":"27873:10:35","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9386,"src":"27893:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27886:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":9392,"name":"int104","nodeType":"ElementaryTypeName","src":"27886:6:35","typeDescriptions":{}}},"id":9395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27886:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27873:26:35","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":9397,"nodeType":"ExpressionStatement","src":"27873:26:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9399,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9389,"src":"27917:10:35","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9400,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9386,"src":"27931:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27917:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203130342062697473","id":9402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"27938:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d7f3e1b7e9f9a06fded6b093c6fd1473ca0a14cc4bb683db904e803e2482981","typeString":"literal_string \"SafeCast: value doesn't fit in 104 bits\""},"value":"SafeCast: value doesn't fit in 104 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5d7f3e1b7e9f9a06fded6b093c6fd1473ca0a14cc4bb683db904e803e2482981","typeString":"literal_string \"SafeCast: value doesn't fit in 104 bits\""}],"id":9398,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"27909:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27909:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9404,"nodeType":"ExpressionStatement","src":"27909:71:35"}]},"documentation":{"id":9384,"nodeType":"StructuredDocumentation","src":"27434:350:35","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits\n _Available since v4.7._"},"id":9406,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27798:8:35","nodeType":"FunctionDefinition","parameters":{"id":9387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9386,"mutability":"mutable","name":"value","nameLocation":"27814:5:35","nodeType":"VariableDeclaration","scope":9406,"src":"27807:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9385,"name":"int256","nodeType":"ElementaryTypeName","src":"27807:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27806:14:35"},"returnParameters":{"id":9390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9389,"mutability":"mutable","name":"downcasted","nameLocation":"27851:10:35","nodeType":"VariableDeclaration","scope":9406,"src":"27844:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":9388,"name":"int104","nodeType":"ElementaryTypeName","src":"27844:6:35","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27843:19:35"},"scope":9711,"src":"27789:198:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9428,"nodeType":"Block","src":"28415:122:35","statements":[{"expression":{"id":9419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9414,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9412,"src":"28425:10:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9417,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9409,"src":"28444:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28438:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":9415,"name":"int96","nodeType":"ElementaryTypeName","src":"28438:5:35","typeDescriptions":{}}},"id":9418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28438:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28425:25:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":9420,"nodeType":"ExpressionStatement","src":"28425:25:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9422,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9412,"src":"28468:10:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9423,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9409,"src":"28482:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28468:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2039362062697473","id":9425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"28489:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_06d20189090e973729391526269baef79c35dd621633195648e5f8309eef9e19","typeString":"literal_string \"SafeCast: value doesn't fit in 96 bits\""},"value":"SafeCast: value doesn't fit in 96 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_06d20189090e973729391526269baef79c35dd621633195648e5f8309eef9e19","typeString":"literal_string \"SafeCast: value doesn't fit in 96 bits\""}],"id":9421,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"28460:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28460:70:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9427,"nodeType":"ExpressionStatement","src":"28460:70:35"}]},"documentation":{"id":9407,"nodeType":"StructuredDocumentation","src":"27993:345:35","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits\n _Available since v4.7._"},"id":9429,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28352:7:35","nodeType":"FunctionDefinition","parameters":{"id":9410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9409,"mutability":"mutable","name":"value","nameLocation":"28367:5:35","nodeType":"VariableDeclaration","scope":9429,"src":"28360:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9408,"name":"int256","nodeType":"ElementaryTypeName","src":"28360:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28359:14:35"},"returnParameters":{"id":9413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9412,"mutability":"mutable","name":"downcasted","nameLocation":"28403:10:35","nodeType":"VariableDeclaration","scope":9429,"src":"28397:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":9411,"name":"int96","nodeType":"ElementaryTypeName","src":"28397:5:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28396:18:35"},"scope":9711,"src":"28343:194:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9451,"nodeType":"Block","src":"28965:122:35","statements":[{"expression":{"id":9442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9437,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9435,"src":"28975:10:35","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9440,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9432,"src":"28994:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28988:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":9438,"name":"int88","nodeType":"ElementaryTypeName","src":"28988:5:35","typeDescriptions":{}}},"id":9441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28988:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28975:25:35","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":9443,"nodeType":"ExpressionStatement","src":"28975:25:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9445,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9435,"src":"29018:10:35","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9446,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9432,"src":"29032:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29018:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2038382062697473","id":9448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"29039:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae080bd7a76a46f0a0caf00941bc2cdf6002799ca2813a3af7295019576d715d","typeString":"literal_string \"SafeCast: value doesn't fit in 88 bits\""},"value":"SafeCast: value doesn't fit in 88 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ae080bd7a76a46f0a0caf00941bc2cdf6002799ca2813a3af7295019576d715d","typeString":"literal_string \"SafeCast: value doesn't fit in 88 bits\""}],"id":9444,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"29010:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29010:70:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9450,"nodeType":"ExpressionStatement","src":"29010:70:35"}]},"documentation":{"id":9430,"nodeType":"StructuredDocumentation","src":"28543:345:35","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits\n _Available since v4.7._"},"id":9452,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28902:7:35","nodeType":"FunctionDefinition","parameters":{"id":9433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9432,"mutability":"mutable","name":"value","nameLocation":"28917:5:35","nodeType":"VariableDeclaration","scope":9452,"src":"28910:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9431,"name":"int256","nodeType":"ElementaryTypeName","src":"28910:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28909:14:35"},"returnParameters":{"id":9436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9435,"mutability":"mutable","name":"downcasted","nameLocation":"28953:10:35","nodeType":"VariableDeclaration","scope":9452,"src":"28947:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":9434,"name":"int88","nodeType":"ElementaryTypeName","src":"28947:5:35","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28946:18:35"},"scope":9711,"src":"28893:194:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9474,"nodeType":"Block","src":"29515:122:35","statements":[{"expression":{"id":9465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9460,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9458,"src":"29525:10:35","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9463,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9455,"src":"29544:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29538:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":9461,"name":"int80","nodeType":"ElementaryTypeName","src":"29538:5:35","typeDescriptions":{}}},"id":9464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29538:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29525:25:35","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":9466,"nodeType":"ExpressionStatement","src":"29525:25:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9468,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9458,"src":"29568:10:35","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9455,"src":"29582:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29568:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2038302062697473","id":9471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"29589:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_3cba87c71fade7d3cd7b673c159aab98afc040a5369691a33559d905d20ab5d1","typeString":"literal_string \"SafeCast: value doesn't fit in 80 bits\""},"value":"SafeCast: value doesn't fit in 80 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3cba87c71fade7d3cd7b673c159aab98afc040a5369691a33559d905d20ab5d1","typeString":"literal_string \"SafeCast: value doesn't fit in 80 bits\""}],"id":9467,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"29560:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29560:70:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9473,"nodeType":"ExpressionStatement","src":"29560:70:35"}]},"documentation":{"id":9453,"nodeType":"StructuredDocumentation","src":"29093:345:35","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits\n _Available since v4.7._"},"id":9475,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29452:7:35","nodeType":"FunctionDefinition","parameters":{"id":9456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9455,"mutability":"mutable","name":"value","nameLocation":"29467:5:35","nodeType":"VariableDeclaration","scope":9475,"src":"29460:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9454,"name":"int256","nodeType":"ElementaryTypeName","src":"29460:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29459:14:35"},"returnParameters":{"id":9459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9458,"mutability":"mutable","name":"downcasted","nameLocation":"29503:10:35","nodeType":"VariableDeclaration","scope":9475,"src":"29497:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":9457,"name":"int80","nodeType":"ElementaryTypeName","src":"29497:5:35","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29496:18:35"},"scope":9711,"src":"29443:194:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9497,"nodeType":"Block","src":"30065:122:35","statements":[{"expression":{"id":9488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9483,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9481,"src":"30075:10:35","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9486,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"30094:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30088:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":9484,"name":"int72","nodeType":"ElementaryTypeName","src":"30088:5:35","typeDescriptions":{}}},"id":9487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30088:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"30075:25:35","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":9489,"nodeType":"ExpressionStatement","src":"30075:25:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9491,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9481,"src":"30118:10:35","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9492,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"30132:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30118:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2037322062697473","id":9494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"30139:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_71584237cc5250b8f417982144a947efe8f4c76feba008ff32ac480e69d60606","typeString":"literal_string \"SafeCast: value doesn't fit in 72 bits\""},"value":"SafeCast: value doesn't fit in 72 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_71584237cc5250b8f417982144a947efe8f4c76feba008ff32ac480e69d60606","typeString":"literal_string \"SafeCast: value doesn't fit in 72 bits\""}],"id":9490,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"30110:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30110:70:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9496,"nodeType":"ExpressionStatement","src":"30110:70:35"}]},"documentation":{"id":9476,"nodeType":"StructuredDocumentation","src":"29643:345:35","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits\n _Available since v4.7._"},"id":9498,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"30002:7:35","nodeType":"FunctionDefinition","parameters":{"id":9479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9478,"mutability":"mutable","name":"value","nameLocation":"30017:5:35","nodeType":"VariableDeclaration","scope":9498,"src":"30010:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9477,"name":"int256","nodeType":"ElementaryTypeName","src":"30010:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30009:14:35"},"returnParameters":{"id":9482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9481,"mutability":"mutable","name":"downcasted","nameLocation":"30053:10:35","nodeType":"VariableDeclaration","scope":9498,"src":"30047:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":9480,"name":"int72","nodeType":"ElementaryTypeName","src":"30047:5:35","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"30046:18:35"},"scope":9711,"src":"29993:194:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9520,"nodeType":"Block","src":"30615:122:35","statements":[{"expression":{"id":9511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9506,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9504,"src":"30625:10:35","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9509,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9501,"src":"30644:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30638:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":9507,"name":"int64","nodeType":"ElementaryTypeName","src":"30638:5:35","typeDescriptions":{}}},"id":9510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30638:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30625:25:35","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":9512,"nodeType":"ExpressionStatement","src":"30625:25:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9514,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9504,"src":"30668:10:35","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9515,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9501,"src":"30682:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30668:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473","id":9517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"30689:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""},"value":"SafeCast: value doesn't fit in 64 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""}],"id":9513,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"30660:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30660:70:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9519,"nodeType":"ExpressionStatement","src":"30660:70:35"}]},"documentation":{"id":9499,"nodeType":"StructuredDocumentation","src":"30193:345:35","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits\n _Available since v3.1._"},"id":9521,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30552:7:35","nodeType":"FunctionDefinition","parameters":{"id":9502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9501,"mutability":"mutable","name":"value","nameLocation":"30567:5:35","nodeType":"VariableDeclaration","scope":9521,"src":"30560:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9500,"name":"int256","nodeType":"ElementaryTypeName","src":"30560:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30559:14:35"},"returnParameters":{"id":9505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9504,"mutability":"mutable","name":"downcasted","nameLocation":"30603:10:35","nodeType":"VariableDeclaration","scope":9521,"src":"30597:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":9503,"name":"int64","nodeType":"ElementaryTypeName","src":"30597:5:35","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30596:18:35"},"scope":9711,"src":"30543:194:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9543,"nodeType":"Block","src":"31165:122:35","statements":[{"expression":{"id":9534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9529,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9527,"src":"31175:10:35","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9532,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9524,"src":"31194:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31188:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":9530,"name":"int56","nodeType":"ElementaryTypeName","src":"31188:5:35","typeDescriptions":{}}},"id":9533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31188:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"31175:25:35","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":9535,"nodeType":"ExpressionStatement","src":"31175:25:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9537,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9527,"src":"31218:10:35","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9538,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9524,"src":"31232:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31218:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2035362062697473","id":9540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"31239:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_656ad93b5ff6665bfe05d97d51fad7c02ad79e6c43bef066c042a6900f450bc5","typeString":"literal_string \"SafeCast: value doesn't fit in 56 bits\""},"value":"SafeCast: value doesn't fit in 56 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_656ad93b5ff6665bfe05d97d51fad7c02ad79e6c43bef066c042a6900f450bc5","typeString":"literal_string \"SafeCast: value doesn't fit in 56 bits\""}],"id":9536,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"31210:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31210:70:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9542,"nodeType":"ExpressionStatement","src":"31210:70:35"}]},"documentation":{"id":9522,"nodeType":"StructuredDocumentation","src":"30743:345:35","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits\n _Available since v4.7._"},"id":9544,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"31102:7:35","nodeType":"FunctionDefinition","parameters":{"id":9525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9524,"mutability":"mutable","name":"value","nameLocation":"31117:5:35","nodeType":"VariableDeclaration","scope":9544,"src":"31110:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9523,"name":"int256","nodeType":"ElementaryTypeName","src":"31110:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31109:14:35"},"returnParameters":{"id":9528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9527,"mutability":"mutable","name":"downcasted","nameLocation":"31153:10:35","nodeType":"VariableDeclaration","scope":9544,"src":"31147:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":9526,"name":"int56","nodeType":"ElementaryTypeName","src":"31147:5:35","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"31146:18:35"},"scope":9711,"src":"31093:194:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9566,"nodeType":"Block","src":"31715:122:35","statements":[{"expression":{"id":9557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9552,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"31725:10:35","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9555,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9547,"src":"31744:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31738:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":9553,"name":"int48","nodeType":"ElementaryTypeName","src":"31738:5:35","typeDescriptions":{}}},"id":9556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31738:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31725:25:35","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":9558,"nodeType":"ExpressionStatement","src":"31725:25:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9560,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"31768:10:35","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9561,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9547,"src":"31782:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31768:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2034382062697473","id":9563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"31789:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_599034f9324dd4e988c6cea5a00a30f53147fec1b01559682f18cd840028f495","typeString":"literal_string \"SafeCast: value doesn't fit in 48 bits\""},"value":"SafeCast: value doesn't fit in 48 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_599034f9324dd4e988c6cea5a00a30f53147fec1b01559682f18cd840028f495","typeString":"literal_string \"SafeCast: value doesn't fit in 48 bits\""}],"id":9559,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"31760:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31760:70:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9565,"nodeType":"ExpressionStatement","src":"31760:70:35"}]},"documentation":{"id":9545,"nodeType":"StructuredDocumentation","src":"31293:345:35","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits\n _Available since v4.7._"},"id":9567,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31652:7:35","nodeType":"FunctionDefinition","parameters":{"id":9548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9547,"mutability":"mutable","name":"value","nameLocation":"31667:5:35","nodeType":"VariableDeclaration","scope":9567,"src":"31660:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9546,"name":"int256","nodeType":"ElementaryTypeName","src":"31660:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31659:14:35"},"returnParameters":{"id":9551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9550,"mutability":"mutable","name":"downcasted","nameLocation":"31703:10:35","nodeType":"VariableDeclaration","scope":9567,"src":"31697:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":9549,"name":"int48","nodeType":"ElementaryTypeName","src":"31697:5:35","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31696:18:35"},"scope":9711,"src":"31643:194:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9589,"nodeType":"Block","src":"32265:122:35","statements":[{"expression":{"id":9580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9575,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9573,"src":"32275:10:35","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9578,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9570,"src":"32294:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32288:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":9576,"name":"int40","nodeType":"ElementaryTypeName","src":"32288:5:35","typeDescriptions":{}}},"id":9579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32288:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"32275:25:35","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":9581,"nodeType":"ExpressionStatement","src":"32275:25:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9583,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9573,"src":"32318:10:35","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9584,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9570,"src":"32332:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32318:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2034302062697473","id":9586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"32339:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_b23559c58b98a5d3ed7016699c7171ac8defa5a1d180f9a9ffa60468a5701d37","typeString":"literal_string \"SafeCast: value doesn't fit in 40 bits\""},"value":"SafeCast: value doesn't fit in 40 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b23559c58b98a5d3ed7016699c7171ac8defa5a1d180f9a9ffa60468a5701d37","typeString":"literal_string \"SafeCast: value doesn't fit in 40 bits\""}],"id":9582,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"32310:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32310:70:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9588,"nodeType":"ExpressionStatement","src":"32310:70:35"}]},"documentation":{"id":9568,"nodeType":"StructuredDocumentation","src":"31843:345:35","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits\n _Available since v4.7._"},"id":9590,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"32202:7:35","nodeType":"FunctionDefinition","parameters":{"id":9571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9570,"mutability":"mutable","name":"value","nameLocation":"32217:5:35","nodeType":"VariableDeclaration","scope":9590,"src":"32210:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9569,"name":"int256","nodeType":"ElementaryTypeName","src":"32210:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32209:14:35"},"returnParameters":{"id":9574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9573,"mutability":"mutable","name":"downcasted","nameLocation":"32253:10:35","nodeType":"VariableDeclaration","scope":9590,"src":"32247:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":9572,"name":"int40","nodeType":"ElementaryTypeName","src":"32247:5:35","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"32246:18:35"},"scope":9711,"src":"32193:194:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9612,"nodeType":"Block","src":"32815:122:35","statements":[{"expression":{"id":9603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9598,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"32825:10:35","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9601,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"32844:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32838:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":9599,"name":"int32","nodeType":"ElementaryTypeName","src":"32838:5:35","typeDescriptions":{}}},"id":9602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32838:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32825:25:35","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":9604,"nodeType":"ExpressionStatement","src":"32825:25:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9606,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"32868:10:35","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9607,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"32882:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32868:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2033322062697473","id":9609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"32889:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""},"value":"SafeCast: value doesn't fit in 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""}],"id":9605,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"32860:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32860:70:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9611,"nodeType":"ExpressionStatement","src":"32860:70:35"}]},"documentation":{"id":9591,"nodeType":"StructuredDocumentation","src":"32393:345:35","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits\n _Available since v3.1._"},"id":9613,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32752:7:35","nodeType":"FunctionDefinition","parameters":{"id":9594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9593,"mutability":"mutable","name":"value","nameLocation":"32767:5:35","nodeType":"VariableDeclaration","scope":9613,"src":"32760:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9592,"name":"int256","nodeType":"ElementaryTypeName","src":"32760:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32759:14:35"},"returnParameters":{"id":9597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9596,"mutability":"mutable","name":"downcasted","nameLocation":"32803:10:35","nodeType":"VariableDeclaration","scope":9613,"src":"32797:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":9595,"name":"int32","nodeType":"ElementaryTypeName","src":"32797:5:35","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32796:18:35"},"scope":9711,"src":"32743:194:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9635,"nodeType":"Block","src":"33365:122:35","statements":[{"expression":{"id":9626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9621,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9619,"src":"33375:10:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9624,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9616,"src":"33394:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33388:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":9622,"name":"int24","nodeType":"ElementaryTypeName","src":"33388:5:35","typeDescriptions":{}}},"id":9625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33388:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"33375:25:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":9627,"nodeType":"ExpressionStatement","src":"33375:25:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9629,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9619,"src":"33418:10:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9630,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9616,"src":"33432:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33418:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2032342062697473","id":9632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"33439:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_f68b65aaf4574c34e9b9d1442d19636c6608b8c4dbd9331c7245f7915c8b2f55","typeString":"literal_string \"SafeCast: value doesn't fit in 24 bits\""},"value":"SafeCast: value doesn't fit in 24 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f68b65aaf4574c34e9b9d1442d19636c6608b8c4dbd9331c7245f7915c8b2f55","typeString":"literal_string \"SafeCast: value doesn't fit in 24 bits\""}],"id":9628,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"33410:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33410:70:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9634,"nodeType":"ExpressionStatement","src":"33410:70:35"}]},"documentation":{"id":9614,"nodeType":"StructuredDocumentation","src":"32943:345:35","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits\n _Available since v4.7._"},"id":9636,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"33302:7:35","nodeType":"FunctionDefinition","parameters":{"id":9617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9616,"mutability":"mutable","name":"value","nameLocation":"33317:5:35","nodeType":"VariableDeclaration","scope":9636,"src":"33310:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9615,"name":"int256","nodeType":"ElementaryTypeName","src":"33310:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33309:14:35"},"returnParameters":{"id":9620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9619,"mutability":"mutable","name":"downcasted","nameLocation":"33353:10:35","nodeType":"VariableDeclaration","scope":9636,"src":"33347:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":9618,"name":"int24","nodeType":"ElementaryTypeName","src":"33347:5:35","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"33346:18:35"},"scope":9711,"src":"33293:194:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9658,"nodeType":"Block","src":"33915:122:35","statements":[{"expression":{"id":9649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9644,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"33925:10:35","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9647,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9639,"src":"33944:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33938:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":9645,"name":"int16","nodeType":"ElementaryTypeName","src":"33938:5:35","typeDescriptions":{}}},"id":9648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33938:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33925:25:35","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":9650,"nodeType":"ExpressionStatement","src":"33925:25:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9652,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"33968:10:35","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9653,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9639,"src":"33982:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33968:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2031362062697473","id":9655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"33989:40:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""},"value":"SafeCast: value doesn't fit in 16 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""}],"id":9651,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"33960:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33960:70:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9657,"nodeType":"ExpressionStatement","src":"33960:70:35"}]},"documentation":{"id":9637,"nodeType":"StructuredDocumentation","src":"33493:345:35","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits\n _Available since v3.1._"},"id":9659,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33852:7:35","nodeType":"FunctionDefinition","parameters":{"id":9640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9639,"mutability":"mutable","name":"value","nameLocation":"33867:5:35","nodeType":"VariableDeclaration","scope":9659,"src":"33860:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9638,"name":"int256","nodeType":"ElementaryTypeName","src":"33860:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33859:14:35"},"returnParameters":{"id":9643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9642,"mutability":"mutable","name":"downcasted","nameLocation":"33903:10:35","nodeType":"VariableDeclaration","scope":9659,"src":"33897:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":9641,"name":"int16","nodeType":"ElementaryTypeName","src":"33897:5:35","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33896:18:35"},"scope":9711,"src":"33843:194:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9681,"nodeType":"Block","src":"34458:120:35","statements":[{"expression":{"id":9672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9667,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9665,"src":"34468:10:35","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9670,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9662,"src":"34486:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34481:4:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":9668,"name":"int8","nodeType":"ElementaryTypeName","src":"34481:4:35","typeDescriptions":{}}},"id":9671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34481:11:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34468:24:35","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":9673,"nodeType":"ExpressionStatement","src":"34468:24:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9675,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9665,"src":"34510:10:35","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9676,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9662,"src":"34524:5:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34510:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e20382062697473","id":9678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"34531:39:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""},"value":"SafeCast: value doesn't fit in 8 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""}],"id":9674,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"34502:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34502:69:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9680,"nodeType":"ExpressionStatement","src":"34502:69:35"}]},"documentation":{"id":9660,"nodeType":"StructuredDocumentation","src":"34043:340:35","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits\n _Available since v3.1._"},"id":9682,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"34397:6:35","nodeType":"FunctionDefinition","parameters":{"id":9663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9662,"mutability":"mutable","name":"value","nameLocation":"34411:5:35","nodeType":"VariableDeclaration","scope":9682,"src":"34404:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9661,"name":"int256","nodeType":"ElementaryTypeName","src":"34404:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34403:14:35"},"returnParameters":{"id":9666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9665,"mutability":"mutable","name":"downcasted","nameLocation":"34446:10:35","nodeType":"VariableDeclaration","scope":9682,"src":"34441:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":9664,"name":"int8","nodeType":"ElementaryTypeName","src":"34441:4:35","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34440:17:35"},"scope":9711,"src":"34388:190:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9709,"nodeType":"Block","src":"34856:233:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9691,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9685,"src":"34973:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":9696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34995:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":9695,"name":"int256","nodeType":"ElementaryTypeName","src":"34995:6:35","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":9694,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34990:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34990:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":9698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"35003:3:35","memberName":"max","nodeType":"MemberAccess","src":"34990:16:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34982:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9692,"name":"uint256","nodeType":"ElementaryTypeName","src":"34982:7:35","typeDescriptions":{}}},"id":9699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34982:25:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34973:34:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e74323536","id":9701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"35009:42:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_d70dcf21692b3c91b4c5fbb89ed57f464aa42efbe5b0ea96c4acb7c080144227","typeString":"literal_string \"SafeCast: value doesn't fit in an int256\""},"value":"SafeCast: value doesn't fit in an int256"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d70dcf21692b3c91b4c5fbb89ed57f464aa42efbe5b0ea96c4acb7c080144227","typeString":"literal_string \"SafeCast: value doesn't fit in an int256\""}],"id":9690,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"34965:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34965:87:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9703,"nodeType":"ExpressionStatement","src":"34965:87:35"},{"expression":{"arguments":[{"id":9706,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9685,"src":"35076:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35069:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":9704,"name":"int256","nodeType":"ElementaryTypeName","src":"35069:6:35","typeDescriptions":{}}},"id":9707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35069:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":9689,"id":9708,"nodeType":"Return","src":"35062:20:35"}]},"documentation":{"id":9683,"nodeType":"StructuredDocumentation","src":"34584:203:35","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256.\n _Available since v3.0._"},"id":9710,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34801:8:35","nodeType":"FunctionDefinition","parameters":{"id":9686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9685,"mutability":"mutable","name":"value","nameLocation":"34818:5:35","nodeType":"VariableDeclaration","scope":9710,"src":"34810:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9684,"name":"uint256","nodeType":"ElementaryTypeName","src":"34810:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34809:15:35"},"returnParameters":{"id":9689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9688,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9710,"src":"34848:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9687,"name":"int256","nodeType":"ElementaryTypeName","src":"34848:6:35","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34847:8:35"},"scope":9711,"src":"34792:297:35","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9712,"src":"927:34164:35","usedErrors":[]}],"src":"192:34900:35"},"id":35},"@openzeppelin/contracts/governance/utils/IVotes.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/governance/utils/IVotes.sol","exportedSymbols":{"IVotes":[9789]},"id":9790,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9713,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:36"},{"abstract":false,"baseContracts":[],"canonicalName":"IVotes","contractDependencies":[],"contractKind":"interface","documentation":{"id":9714,"nodeType":"StructuredDocumentation","src":"135:132:36","text":" @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\n _Available since v4.5._"},"fullyImplemented":false,"id":9789,"linearizedBaseContracts":[9789],"name":"IVotes","nameLocation":"278:6:36","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":9715,"nodeType":"StructuredDocumentation","src":"291:71:36","text":" @dev Emitted when an account changes their delegate."},"eventSelector":"3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f","id":9723,"name":"DelegateChanged","nameLocation":"373:15:36","nodeType":"EventDefinition","parameters":{"id":9722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9717,"indexed":true,"mutability":"mutable","name":"delegator","nameLocation":"405:9:36","nodeType":"VariableDeclaration","scope":9723,"src":"389:25:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9716,"name":"address","nodeType":"ElementaryTypeName","src":"389:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9719,"indexed":true,"mutability":"mutable","name":"fromDelegate","nameLocation":"432:12:36","nodeType":"VariableDeclaration","scope":9723,"src":"416:28:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9718,"name":"address","nodeType":"ElementaryTypeName","src":"416:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9721,"indexed":true,"mutability":"mutable","name":"toDelegate","nameLocation":"462:10:36","nodeType":"VariableDeclaration","scope":9723,"src":"446:26:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9720,"name":"address","nodeType":"ElementaryTypeName","src":"446:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"388:85:36"},"src":"367:107:36"},{"anonymous":false,"documentation":{"id":9724,"nodeType":"StructuredDocumentation","src":"480:124:36","text":" @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes."},"eventSelector":"dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724","id":9732,"name":"DelegateVotesChanged","nameLocation":"615:20:36","nodeType":"EventDefinition","parameters":{"id":9731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9726,"indexed":true,"mutability":"mutable","name":"delegate","nameLocation":"652:8:36","nodeType":"VariableDeclaration","scope":9732,"src":"636:24:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9725,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9728,"indexed":false,"mutability":"mutable","name":"previousBalance","nameLocation":"670:15:36","nodeType":"VariableDeclaration","scope":9732,"src":"662:23:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9727,"name":"uint256","nodeType":"ElementaryTypeName","src":"662:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9730,"indexed":false,"mutability":"mutable","name":"newBalance","nameLocation":"695:10:36","nodeType":"VariableDeclaration","scope":9732,"src":"687:18:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9729,"name":"uint256","nodeType":"ElementaryTypeName","src":"687:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:71:36"},"src":"609:98:36"},{"documentation":{"id":9733,"nodeType":"StructuredDocumentation","src":"713:79:36","text":" @dev Returns the current amount of votes that `account` has."},"functionSelector":"9ab24eb0","id":9740,"implemented":false,"kind":"function","modifiers":[],"name":"getVotes","nameLocation":"806:8:36","nodeType":"FunctionDefinition","parameters":{"id":9736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9735,"mutability":"mutable","name":"account","nameLocation":"823:7:36","nodeType":"VariableDeclaration","scope":9740,"src":"815:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9734,"name":"address","nodeType":"ElementaryTypeName","src":"815:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"814:17:36"},"returnParameters":{"id":9739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9738,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9740,"src":"855:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9737,"name":"uint256","nodeType":"ElementaryTypeName","src":"855:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"854:9:36"},"scope":9789,"src":"797:67:36","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9741,"nodeType":"StructuredDocumentation","src":"870:114:36","text":" @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`)."},"functionSelector":"3a46b1a8","id":9750,"implemented":false,"kind":"function","modifiers":[],"name":"getPastVotes","nameLocation":"998:12:36","nodeType":"FunctionDefinition","parameters":{"id":9746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9743,"mutability":"mutable","name":"account","nameLocation":"1019:7:36","nodeType":"VariableDeclaration","scope":9750,"src":"1011:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9742,"name":"address","nodeType":"ElementaryTypeName","src":"1011:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9745,"mutability":"mutable","name":"blockNumber","nameLocation":"1036:11:36","nodeType":"VariableDeclaration","scope":9750,"src":"1028:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9744,"name":"uint256","nodeType":"ElementaryTypeName","src":"1028:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:38:36"},"returnParameters":{"id":9749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9748,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9750,"src":"1072:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9747,"name":"uint256","nodeType":"ElementaryTypeName","src":"1072:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1071:9:36"},"scope":9789,"src":"989:92:36","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9751,"nodeType":"StructuredDocumentation","src":"1087:365:36","text":" @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\n NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\n Votes that have not been delegated are still part of total supply, even though they would not participate in a\n vote."},"functionSelector":"8e539e8c","id":9758,"implemented":false,"kind":"function","modifiers":[],"name":"getPastTotalSupply","nameLocation":"1466:18:36","nodeType":"FunctionDefinition","parameters":{"id":9754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9753,"mutability":"mutable","name":"blockNumber","nameLocation":"1493:11:36","nodeType":"VariableDeclaration","scope":9758,"src":"1485:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9752,"name":"uint256","nodeType":"ElementaryTypeName","src":"1485:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1484:21:36"},"returnParameters":{"id":9757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9758,"src":"1529:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9755,"name":"uint256","nodeType":"ElementaryTypeName","src":"1529:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1528:9:36"},"scope":9789,"src":"1457:81:36","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9759,"nodeType":"StructuredDocumentation","src":"1544:71:36","text":" @dev Returns the delegate that `account` has chosen."},"functionSelector":"587cde1e","id":9766,"implemented":false,"kind":"function","modifiers":[],"name":"delegates","nameLocation":"1629:9:36","nodeType":"FunctionDefinition","parameters":{"id":9762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9761,"mutability":"mutable","name":"account","nameLocation":"1647:7:36","nodeType":"VariableDeclaration","scope":9766,"src":"1639:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9760,"name":"address","nodeType":"ElementaryTypeName","src":"1639:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1638:17:36"},"returnParameters":{"id":9765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9766,"src":"1679:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9763,"name":"address","nodeType":"ElementaryTypeName","src":"1679:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1678:9:36"},"scope":9789,"src":"1620:68:36","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9767,"nodeType":"StructuredDocumentation","src":"1694:71:36","text":" @dev Delegates votes from the sender to `delegatee`."},"functionSelector":"5c19a95c","id":9772,"implemented":false,"kind":"function","modifiers":[],"name":"delegate","nameLocation":"1779:8:36","nodeType":"FunctionDefinition","parameters":{"id":9770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9769,"mutability":"mutable","name":"delegatee","nameLocation":"1796:9:36","nodeType":"VariableDeclaration","scope":9772,"src":"1788:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9768,"name":"address","nodeType":"ElementaryTypeName","src":"1788:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1787:19:36"},"returnParameters":{"id":9771,"nodeType":"ParameterList","parameters":[],"src":"1815:0:36"},"scope":9789,"src":"1770:46:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":9773,"nodeType":"StructuredDocumentation","src":"1822:67:36","text":" @dev Delegates votes from signer to `delegatee`."},"functionSelector":"c3cda520","id":9788,"implemented":false,"kind":"function","modifiers":[],"name":"delegateBySig","nameLocation":"1903:13:36","nodeType":"FunctionDefinition","parameters":{"id":9786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9775,"mutability":"mutable","name":"delegatee","nameLocation":"1934:9:36","nodeType":"VariableDeclaration","scope":9788,"src":"1926:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9774,"name":"address","nodeType":"ElementaryTypeName","src":"1926:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9777,"mutability":"mutable","name":"nonce","nameLocation":"1961:5:36","nodeType":"VariableDeclaration","scope":9788,"src":"1953:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9776,"name":"uint256","nodeType":"ElementaryTypeName","src":"1953:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9779,"mutability":"mutable","name":"expiry","nameLocation":"1984:6:36","nodeType":"VariableDeclaration","scope":9788,"src":"1976:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9778,"name":"uint256","nodeType":"ElementaryTypeName","src":"1976:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9781,"mutability":"mutable","name":"v","nameLocation":"2006:1:36","nodeType":"VariableDeclaration","scope":9788,"src":"2000:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9780,"name":"uint8","nodeType":"ElementaryTypeName","src":"2000:5:36","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":9783,"mutability":"mutable","name":"r","nameLocation":"2025:1:36","nodeType":"VariableDeclaration","scope":9788,"src":"2017:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9782,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2017:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9785,"mutability":"mutable","name":"s","nameLocation":"2044:1:36","nodeType":"VariableDeclaration","scope":9788,"src":"2036:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9784,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2036:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1916:135:36"},"returnParameters":{"id":9787,"nodeType":"ParameterList","parameters":[],"src":"2060:0:36"},"scope":9789,"src":"1894:167:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9790,"src":"268:1795:36","usedErrors":[]}],"src":"110:1954:36"},"id":36},"@openzeppelin/contracts/proxy/Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","exportedSymbols":{"Proxy":[9841]},"id":9842,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9791,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:37"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":9792,"nodeType":"StructuredDocumentation","src":"124:598:37","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"id":9841,"linearizedBaseContracts":[9841],"name":"Proxy","nameLocation":"741:5:37","nodeType":"ContractDefinition","nodes":[{"body":{"id":9799,"nodeType":"Block","src":"1008:835:37","statements":[{"AST":{"nodeType":"YulBlock","src":"1027:810:37","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1280:1:37","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1283:1:37","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1286:12:37"},"nodeType":"YulFunctionCall","src":"1286:14:37"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1267:12:37"},"nodeType":"YulFunctionCall","src":"1267:34:37"},"nodeType":"YulExpressionStatement","src":"1267:34:37"},{"nodeType":"YulVariableDeclaration","src":"1428:74:37","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"1455:3:37"},"nodeType":"YulFunctionCall","src":"1455:5:37"},{"name":"implementation","nodeType":"YulIdentifier","src":"1462:14:37"},{"kind":"number","nodeType":"YulLiteral","src":"1478:1:37","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1481:12:37"},"nodeType":"YulFunctionCall","src":"1481:14:37"},{"kind":"number","nodeType":"YulLiteral","src":"1497:1:37","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1500:1:37","type":"","value":"0"}],"functionName":{"name":"delegatecall","nodeType":"YulIdentifier","src":"1442:12:37"},"nodeType":"YulFunctionCall","src":"1442:60:37"},"variables":[{"name":"result","nodeType":"YulTypedName","src":"1432:6:37","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1570:1:37","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1573:1:37","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1576:14:37"},"nodeType":"YulFunctionCall","src":"1576:16:37"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"1555:14:37"},"nodeType":"YulFunctionCall","src":"1555:38:37"},"nodeType":"YulExpressionStatement","src":"1555:38:37"},{"cases":[{"body":{"nodeType":"YulBlock","src":"1688:59:37","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1713:1:37","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1716:14:37"},"nodeType":"YulFunctionCall","src":"1716:16:37"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1706:6:37"},"nodeType":"YulFunctionCall","src":"1706:27:37"},"nodeType":"YulExpressionStatement","src":"1706:27:37"}]},"nodeType":"YulCase","src":"1681:66:37","value":{"kind":"number","nodeType":"YulLiteral","src":"1686:1:37","type":"","value":"0"}},{"body":{"nodeType":"YulBlock","src":"1768:59:37","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1793:1:37","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1796:14:37"},"nodeType":"YulFunctionCall","src":"1796:16:37"}],"functionName":{"name":"return","nodeType":"YulIdentifier","src":"1786:6:37"},"nodeType":"YulFunctionCall","src":"1786:27:37"},"nodeType":"YulExpressionStatement","src":"1786:27:37"}]},"nodeType":"YulCase","src":"1760:67:37","value":"default"}],"expression":{"name":"result","nodeType":"YulIdentifier","src":"1614:6:37"},"nodeType":"YulSwitch","src":"1607:220:37"}]},"evmVersion":"paris","externalReferences":[{"declaration":9795,"isOffset":false,"isSlot":false,"src":"1462:14:37","valueSize":1}],"id":9798,"nodeType":"InlineAssembly","src":"1018:819:37"}]},"documentation":{"id":9793,"nodeType":"StructuredDocumentation","src":"753:190:37","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":9800,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"957:9:37","nodeType":"FunctionDefinition","parameters":{"id":9796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9795,"mutability":"mutable","name":"implementation","nameLocation":"975:14:37","nodeType":"VariableDeclaration","scope":9800,"src":"967:22:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9794,"name":"address","nodeType":"ElementaryTypeName","src":"967:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"966:24:37"},"returnParameters":{"id":9797,"nodeType":"ParameterList","parameters":[],"src":"1008:0:37"},"scope":9841,"src":"948:895:37","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":9801,"nodeType":"StructuredDocumentation","src":"1849:173:37","text":" @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n and {_fallback} should delegate."},"id":9806,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2036:15:37","nodeType":"FunctionDefinition","parameters":{"id":9802,"nodeType":"ParameterList","parameters":[],"src":"2051:2:37"},"returnParameters":{"id":9805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9804,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9806,"src":"2085:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9803,"name":"address","nodeType":"ElementaryTypeName","src":"2085:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2084:9:37"},"scope":9841,"src":"2027:67:37","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":9818,"nodeType":"Block","src":"2360:72:37","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9810,"name":"_beforeFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9840,"src":"2370:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2370:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9812,"nodeType":"ExpressionStatement","src":"2370:17:37"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":9814,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9806,"src":"2407:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9813,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9800,"src":"2397:9:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2397:28:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9817,"nodeType":"ExpressionStatement","src":"2397:28:37"}]},"documentation":{"id":9807,"nodeType":"StructuredDocumentation","src":"2100:217:37","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":9819,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2331:9:37","nodeType":"FunctionDefinition","parameters":{"id":9808,"nodeType":"ParameterList","parameters":[],"src":"2340:2:37"},"returnParameters":{"id":9809,"nodeType":"ParameterList","parameters":[],"src":"2360:0:37"},"scope":9841,"src":"2322:110:37","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":9826,"nodeType":"Block","src":"2665:28:37","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9823,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9819,"src":"2675:9:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2675:11:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9825,"nodeType":"ExpressionStatement","src":"2675:11:37"}]},"documentation":{"id":9820,"nodeType":"StructuredDocumentation","src":"2438:186:37","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"id":9827,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9821,"nodeType":"ParameterList","parameters":[],"src":"2637:2:37"},"returnParameters":{"id":9822,"nodeType":"ParameterList","parameters":[],"src":"2665:0:37"},"scope":9841,"src":"2629:64:37","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":9834,"nodeType":"Block","src":"2888:28:37","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9831,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9819,"src":"2898:9:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2898:11:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9833,"nodeType":"ExpressionStatement","src":"2898:11:37"}]},"documentation":{"id":9828,"nodeType":"StructuredDocumentation","src":"2699:149:37","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n is empty."},"id":9835,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9829,"nodeType":"ParameterList","parameters":[],"src":"2860:2:37"},"returnParameters":{"id":9830,"nodeType":"ParameterList","parameters":[],"src":"2888:0:37"},"scope":9841,"src":"2853:63:37","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":9839,"nodeType":"Block","src":"3242:2:37","statements":[]},"documentation":{"id":9836,"nodeType":"StructuredDocumentation","src":"2922:271:37","text":" @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n call, or as part of the Solidity `fallback` or `receive` functions.\n If overridden should call `super._beforeFallback()`."},"id":9840,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeFallback","nameLocation":"3207:15:37","nodeType":"FunctionDefinition","parameters":{"id":9837,"nodeType":"ParameterList","parameters":[],"src":"3222:2:37"},"returnParameters":{"id":9838,"nodeType":"ParameterList","parameters":[],"src":"3242:0:37"},"scope":9841,"src":"3198:46:37","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":9842,"src":"723:2523:37","usedErrors":[]}],"src":"99:3148:37"},"id":37},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","exportedSymbols":{"IERC1155":[9963],"IERC165":[10211]},"id":9964,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9843,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:38"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":9844,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9964,"sourceUnit":10212,"src":"135:47:38","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9846,"name":"IERC165","nameLocations":["372:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":10211,"src":"372:7:38"},"id":9847,"nodeType":"InheritanceSpecifier","src":"372:7:38"}],"canonicalName":"IERC1155","contractDependencies":[],"contractKind":"interface","documentation":{"id":9845,"nodeType":"StructuredDocumentation","src":"184:165:38","text":" @dev Required interface of an ERC1155 compliant contract, as defined in the\n https://eips.ethereum.org/EIPS/eip-1155[EIP].\n _Available since v3.1._"},"fullyImplemented":false,"id":9963,"linearizedBaseContracts":[9963,10211],"name":"IERC1155","nameLocation":"360:8:38","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":9848,"nodeType":"StructuredDocumentation","src":"386:121:38","text":" @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"eventSelector":"c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62","id":9860,"name":"TransferSingle","nameLocation":"518:14:38","nodeType":"EventDefinition","parameters":{"id":9859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9850,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"549:8:38","nodeType":"VariableDeclaration","scope":9860,"src":"533:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9849,"name":"address","nodeType":"ElementaryTypeName","src":"533:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9852,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"575:4:38","nodeType":"VariableDeclaration","scope":9860,"src":"559:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9851,"name":"address","nodeType":"ElementaryTypeName","src":"559:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9854,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"597:2:38","nodeType":"VariableDeclaration","scope":9860,"src":"581:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9853,"name":"address","nodeType":"ElementaryTypeName","src":"581:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9856,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"609:2:38","nodeType":"VariableDeclaration","scope":9860,"src":"601:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9855,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9858,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"621:5:38","nodeType":"VariableDeclaration","scope":9860,"src":"613:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9857,"name":"uint256","nodeType":"ElementaryTypeName","src":"613:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"532:95:38"},"src":"512:116:38"},{"anonymous":false,"documentation":{"id":9861,"nodeType":"StructuredDocumentation","src":"634:144:38","text":" @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n transfers."},"eventSelector":"4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb","id":9875,"name":"TransferBatch","nameLocation":"789:13:38","nodeType":"EventDefinition","parameters":{"id":9874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9863,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"828:8:38","nodeType":"VariableDeclaration","scope":9875,"src":"812:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9862,"name":"address","nodeType":"ElementaryTypeName","src":"812:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9865,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"862:4:38","nodeType":"VariableDeclaration","scope":9875,"src":"846:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9864,"name":"address","nodeType":"ElementaryTypeName","src":"846:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9867,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"892:2:38","nodeType":"VariableDeclaration","scope":9875,"src":"876:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9866,"name":"address","nodeType":"ElementaryTypeName","src":"876:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9870,"indexed":false,"mutability":"mutable","name":"ids","nameLocation":"914:3:38","nodeType":"VariableDeclaration","scope":9875,"src":"904:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9868,"name":"uint256","nodeType":"ElementaryTypeName","src":"904:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9869,"nodeType":"ArrayTypeName","src":"904:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9873,"indexed":false,"mutability":"mutable","name":"values","nameLocation":"937:6:38","nodeType":"VariableDeclaration","scope":9875,"src":"927:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9871,"name":"uint256","nodeType":"ElementaryTypeName","src":"927:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9872,"nodeType":"ArrayTypeName","src":"927:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"802:147:38"},"src":"783:167:38"},{"anonymous":false,"documentation":{"id":9876,"nodeType":"StructuredDocumentation","src":"956:147:38","text":" @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n `approved`."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":9884,"name":"ApprovalForAll","nameLocation":"1114:14:38","nodeType":"EventDefinition","parameters":{"id":9883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9878,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1145:7:38","nodeType":"VariableDeclaration","scope":9884,"src":"1129:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9877,"name":"address","nodeType":"ElementaryTypeName","src":"1129:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9880,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1170:8:38","nodeType":"VariableDeclaration","scope":9884,"src":"1154:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9879,"name":"address","nodeType":"ElementaryTypeName","src":"1154:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9882,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"1185:8:38","nodeType":"VariableDeclaration","scope":9884,"src":"1180:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9881,"name":"bool","nodeType":"ElementaryTypeName","src":"1180:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1128:66:38"},"src":"1108:87:38"},{"anonymous":false,"documentation":{"id":9885,"nodeType":"StructuredDocumentation","src":"1201:343:38","text":" @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n If an {URI} event was emitted for `id`, the standard\n https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n returned by {IERC1155MetadataURI-uri}."},"eventSelector":"6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b","id":9891,"name":"URI","nameLocation":"1555:3:38","nodeType":"EventDefinition","parameters":{"id":9890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9887,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1566:5:38","nodeType":"VariableDeclaration","scope":9891,"src":"1559:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9886,"name":"string","nodeType":"ElementaryTypeName","src":"1559:6:38","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9889,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"1589:2:38","nodeType":"VariableDeclaration","scope":9891,"src":"1573:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9888,"name":"uint256","nodeType":"ElementaryTypeName","src":"1573:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1558:34:38"},"src":"1549:44:38"},{"documentation":{"id":9892,"nodeType":"StructuredDocumentation","src":"1599:173:38","text":" @dev Returns the amount of tokens of token type `id` owned by `account`.\n Requirements:\n - `account` cannot be the zero address."},"functionSelector":"00fdd58e","id":9901,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1786:9:38","nodeType":"FunctionDefinition","parameters":{"id":9897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9894,"mutability":"mutable","name":"account","nameLocation":"1804:7:38","nodeType":"VariableDeclaration","scope":9901,"src":"1796:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9893,"name":"address","nodeType":"ElementaryTypeName","src":"1796:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9896,"mutability":"mutable","name":"id","nameLocation":"1821:2:38","nodeType":"VariableDeclaration","scope":9901,"src":"1813:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9895,"name":"uint256","nodeType":"ElementaryTypeName","src":"1813:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1795:29:38"},"returnParameters":{"id":9900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9901,"src":"1848:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9898,"name":"uint256","nodeType":"ElementaryTypeName","src":"1848:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1847:9:38"},"scope":9963,"src":"1777:80:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9902,"nodeType":"StructuredDocumentation","src":"1863:188:38","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n Requirements:\n - `accounts` and `ids` must have the same length."},"functionSelector":"4e1273f4","id":9914,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOfBatch","nameLocation":"2065:14:38","nodeType":"FunctionDefinition","parameters":{"id":9909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9905,"mutability":"mutable","name":"accounts","nameLocation":"2099:8:38","nodeType":"VariableDeclaration","scope":9914,"src":"2080:27:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9903,"name":"address","nodeType":"ElementaryTypeName","src":"2080:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9904,"nodeType":"ArrayTypeName","src":"2080:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":9908,"mutability":"mutable","name":"ids","nameLocation":"2128:3:38","nodeType":"VariableDeclaration","scope":9914,"src":"2109:22:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9906,"name":"uint256","nodeType":"ElementaryTypeName","src":"2109:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9907,"nodeType":"ArrayTypeName","src":"2109:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2079:53:38"},"returnParameters":{"id":9913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9912,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9914,"src":"2180:16:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9910,"name":"uint256","nodeType":"ElementaryTypeName","src":"2180:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9911,"nodeType":"ArrayTypeName","src":"2180:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2179:18:38"},"scope":9963,"src":"2056:142:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9915,"nodeType":"StructuredDocumentation","src":"2204:248:38","text":" @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n Emits an {ApprovalForAll} event.\n Requirements:\n - `operator` cannot be the caller."},"functionSelector":"a22cb465","id":9922,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"2466:17:38","nodeType":"FunctionDefinition","parameters":{"id":9920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9917,"mutability":"mutable","name":"operator","nameLocation":"2492:8:38","nodeType":"VariableDeclaration","scope":9922,"src":"2484:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9916,"name":"address","nodeType":"ElementaryTypeName","src":"2484:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9919,"mutability":"mutable","name":"approved","nameLocation":"2507:8:38","nodeType":"VariableDeclaration","scope":9922,"src":"2502:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9918,"name":"bool","nodeType":"ElementaryTypeName","src":"2502:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2483:33:38"},"returnParameters":{"id":9921,"nodeType":"ParameterList","parameters":[],"src":"2525:0:38"},"scope":9963,"src":"2457:69:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":9923,"nodeType":"StructuredDocumentation","src":"2532:135:38","text":" @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n See {setApprovalForAll}."},"functionSelector":"e985e9c5","id":9932,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"2681:16:38","nodeType":"FunctionDefinition","parameters":{"id":9928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9925,"mutability":"mutable","name":"account","nameLocation":"2706:7:38","nodeType":"VariableDeclaration","scope":9932,"src":"2698:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9924,"name":"address","nodeType":"ElementaryTypeName","src":"2698:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9927,"mutability":"mutable","name":"operator","nameLocation":"2723:8:38","nodeType":"VariableDeclaration","scope":9932,"src":"2715:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9926,"name":"address","nodeType":"ElementaryTypeName","src":"2715:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2697:35:38"},"returnParameters":{"id":9931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9932,"src":"2756:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9929,"name":"bool","nodeType":"ElementaryTypeName","src":"2756:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2755:6:38"},"scope":9963,"src":"2672:90:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":9933,"nodeType":"StructuredDocumentation","src":"2768:556:38","text":" @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."},"functionSelector":"f242432a","id":9946,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"3338:16:38","nodeType":"FunctionDefinition","parameters":{"id":9944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9935,"mutability":"mutable","name":"from","nameLocation":"3372:4:38","nodeType":"VariableDeclaration","scope":9946,"src":"3364:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9934,"name":"address","nodeType":"ElementaryTypeName","src":"3364:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9937,"mutability":"mutable","name":"to","nameLocation":"3394:2:38","nodeType":"VariableDeclaration","scope":9946,"src":"3386:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9936,"name":"address","nodeType":"ElementaryTypeName","src":"3386:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9939,"mutability":"mutable","name":"id","nameLocation":"3414:2:38","nodeType":"VariableDeclaration","scope":9946,"src":"3406:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9938,"name":"uint256","nodeType":"ElementaryTypeName","src":"3406:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9941,"mutability":"mutable","name":"amount","nameLocation":"3434:6:38","nodeType":"VariableDeclaration","scope":9946,"src":"3426:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9940,"name":"uint256","nodeType":"ElementaryTypeName","src":"3426:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9943,"mutability":"mutable","name":"data","nameLocation":"3465:4:38","nodeType":"VariableDeclaration","scope":9946,"src":"3450:19:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9942,"name":"bytes","nodeType":"ElementaryTypeName","src":"3450:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3354:121:38"},"returnParameters":{"id":9945,"nodeType":"ParameterList","parameters":[],"src":"3484:0:38"},"scope":9963,"src":"3329:156:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":9947,"nodeType":"StructuredDocumentation","src":"3491:390:38","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."},"functionSelector":"2eb2c2d6","id":9962,"implemented":false,"kind":"function","modifiers":[],"name":"safeBatchTransferFrom","nameLocation":"3895:21:38","nodeType":"FunctionDefinition","parameters":{"id":9960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9949,"mutability":"mutable","name":"from","nameLocation":"3934:4:38","nodeType":"VariableDeclaration","scope":9962,"src":"3926:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9948,"name":"address","nodeType":"ElementaryTypeName","src":"3926:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9951,"mutability":"mutable","name":"to","nameLocation":"3956:2:38","nodeType":"VariableDeclaration","scope":9962,"src":"3948:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9950,"name":"address","nodeType":"ElementaryTypeName","src":"3948:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9954,"mutability":"mutable","name":"ids","nameLocation":"3987:3:38","nodeType":"VariableDeclaration","scope":9962,"src":"3968:22:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9952,"name":"uint256","nodeType":"ElementaryTypeName","src":"3968:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9953,"nodeType":"ArrayTypeName","src":"3968:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9957,"mutability":"mutable","name":"amounts","nameLocation":"4019:7:38","nodeType":"VariableDeclaration","scope":9962,"src":"4000:26:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9955,"name":"uint256","nodeType":"ElementaryTypeName","src":"4000:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9956,"nodeType":"ArrayTypeName","src":"4000:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9959,"mutability":"mutable","name":"data","nameLocation":"4051:4:38","nodeType":"VariableDeclaration","scope":9962,"src":"4036:19:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9958,"name":"bytes","nodeType":"ElementaryTypeName","src":"4036:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3916:145:38"},"returnParameters":{"id":9961,"nodeType":"ParameterList","parameters":[],"src":"4070:0:38"},"scope":9963,"src":"3886:185:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9964,"src":"350:3723:38","usedErrors":[]}],"src":"110:3964:38"},"id":38},"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","exportedSymbols":{"IERC1155":[9963],"IERC1155MetadataURI":[9978],"IERC165":[10211]},"id":9979,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9965,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"117:23:39"},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","file":"../IERC1155.sol","id":9966,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9979,"sourceUnit":9964,"src":"142:25:39","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9968,"name":"IERC1155","nameLocations":["397:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":9963,"src":"397:8:39"},"id":9969,"nodeType":"InheritanceSpecifier","src":"397:8:39"}],"canonicalName":"IERC1155MetadataURI","contractDependencies":[],"contractKind":"interface","documentation":{"id":9967,"nodeType":"StructuredDocumentation","src":"169:194:39","text":" @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n _Available since v3.1._"},"fullyImplemented":false,"id":9978,"linearizedBaseContracts":[9978,9963,10211],"name":"IERC1155MetadataURI","nameLocation":"374:19:39","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9970,"nodeType":"StructuredDocumentation","src":"412:192:39","text":" @dev Returns the URI for token type `id`.\n If the `\\{id\\}` substring is present in the URI, it must be replaced by\n clients with the actual token type ID."},"functionSelector":"0e89341c","id":9977,"implemented":false,"kind":"function","modifiers":[],"name":"uri","nameLocation":"618:3:39","nodeType":"FunctionDefinition","parameters":{"id":9973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9972,"mutability":"mutable","name":"id","nameLocation":"630:2:39","nodeType":"VariableDeclaration","scope":9977,"src":"622:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9971,"name":"uint256","nodeType":"ElementaryTypeName","src":"622:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"621:12:39"},"returnParameters":{"id":9976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9977,"src":"657:13:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9974,"name":"string","nodeType":"ElementaryTypeName","src":"657:6:39","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"656:15:39"},"scope":9978,"src":"609:63:39","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9979,"src":"364:310:39","usedErrors":[]}],"src":"117:558:39"},"id":39},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[10056]},"id":10057,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9980,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:40"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":9981,"nodeType":"StructuredDocumentation","src":"131:70:40","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":10056,"linearizedBaseContracts":[10056],"name":"IERC20","nameLocation":"212:6:40","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":9982,"nodeType":"StructuredDocumentation","src":"225:158:40","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":9990,"name":"Transfer","nameLocation":"394:8:40","nodeType":"EventDefinition","parameters":{"id":9989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9984,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:40","nodeType":"VariableDeclaration","scope":9990,"src":"403:20:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9983,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9986,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:40","nodeType":"VariableDeclaration","scope":9990,"src":"425:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9985,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9988,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:40","nodeType":"VariableDeclaration","scope":9990,"src":"445:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9987,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:40"},"src":"388:72:40"},{"anonymous":false,"documentation":{"id":9991,"nodeType":"StructuredDocumentation","src":"466:148:40","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":9999,"name":"Approval","nameLocation":"625:8:40","nodeType":"EventDefinition","parameters":{"id":9998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9993,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:40","nodeType":"VariableDeclaration","scope":9999,"src":"634:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9992,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9995,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:40","nodeType":"VariableDeclaration","scope":9999,"src":"657:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9994,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9997,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:40","nodeType":"VariableDeclaration","scope":9999,"src":"682:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9996,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:40"},"src":"619:78:40"},{"documentation":{"id":10000,"nodeType":"StructuredDocumentation","src":"703:66:40","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":10005,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:40","nodeType":"FunctionDefinition","parameters":{"id":10001,"nodeType":"ParameterList","parameters":[],"src":"794:2:40"},"returnParameters":{"id":10004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10003,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10005,"src":"820:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10002,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:40"},"scope":10056,"src":"774:55:40","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10006,"nodeType":"StructuredDocumentation","src":"835:72:40","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":10013,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:40","nodeType":"FunctionDefinition","parameters":{"id":10009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10008,"mutability":"mutable","name":"account","nameLocation":"939:7:40","nodeType":"VariableDeclaration","scope":10013,"src":"931:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10007,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:40"},"returnParameters":{"id":10012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10011,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10013,"src":"971:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10010,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:40"},"scope":10056,"src":"912:68:40","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10014,"nodeType":"StructuredDocumentation","src":"986:202:40","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":10023,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:40","nodeType":"FunctionDefinition","parameters":{"id":10019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10016,"mutability":"mutable","name":"to","nameLocation":"1219:2:40","nodeType":"VariableDeclaration","scope":10023,"src":"1211:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10015,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10018,"mutability":"mutable","name":"amount","nameLocation":"1231:6:40","nodeType":"VariableDeclaration","scope":10023,"src":"1223:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10017,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:40"},"returnParameters":{"id":10022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10021,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10023,"src":"1257:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10020,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:40"},"scope":10056,"src":"1193:70:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10024,"nodeType":"StructuredDocumentation","src":"1269:264:40","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":10033,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:40","nodeType":"FunctionDefinition","parameters":{"id":10029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10026,"mutability":"mutable","name":"owner","nameLocation":"1565:5:40","nodeType":"VariableDeclaration","scope":10033,"src":"1557:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10025,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10028,"mutability":"mutable","name":"spender","nameLocation":"1580:7:40","nodeType":"VariableDeclaration","scope":10033,"src":"1572:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10027,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:40"},"returnParameters":{"id":10032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10031,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10033,"src":"1612:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10030,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:40"},"scope":10056,"src":"1538:83:40","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10034,"nodeType":"StructuredDocumentation","src":"1627:642:40","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":10043,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:40","nodeType":"FunctionDefinition","parameters":{"id":10039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10036,"mutability":"mutable","name":"spender","nameLocation":"2299:7:40","nodeType":"VariableDeclaration","scope":10043,"src":"2291:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10035,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10038,"mutability":"mutable","name":"amount","nameLocation":"2316:6:40","nodeType":"VariableDeclaration","scope":10043,"src":"2308:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10037,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:40"},"returnParameters":{"id":10042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10041,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10043,"src":"2342:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10040,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:40"},"scope":10056,"src":"2274:74:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10044,"nodeType":"StructuredDocumentation","src":"2354:287:40","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":10055,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:40","nodeType":"FunctionDefinition","parameters":{"id":10051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10046,"mutability":"mutable","name":"from","nameLocation":"2685:4:40","nodeType":"VariableDeclaration","scope":10055,"src":"2677:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10045,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10048,"mutability":"mutable","name":"to","nameLocation":"2707:2:40","nodeType":"VariableDeclaration","scope":10055,"src":"2699:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10047,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10050,"mutability":"mutable","name":"amount","nameLocation":"2727:6:40","nodeType":"VariableDeclaration","scope":10055,"src":"2719:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10049,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:72:40"},"returnParameters":{"id":10054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10053,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10055,"src":"2758:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10052,"name":"bool","nodeType":"ElementaryTypeName","src":"2758:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:6:40"},"scope":10056,"src":"2646:118:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10057,"src":"202:2564:40","usedErrors":[]}],"src":"106:2661:40"},"id":40},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[10211],"IERC721":[10172]},"id":10173,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10058,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:41"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":10059,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10173,"sourceUnit":10212,"src":"133:47:41","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10061,"name":"IERC165","nameLocations":["271:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":10211,"src":"271:7:41"},"id":10062,"nodeType":"InheritanceSpecifier","src":"271:7:41"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":10060,"nodeType":"StructuredDocumentation","src":"182:67:41","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":10172,"linearizedBaseContracts":[10172,10211],"name":"IERC721","nameLocation":"260:7:41","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":10063,"nodeType":"StructuredDocumentation","src":"285:88:41","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":10071,"name":"Transfer","nameLocation":"384:8:41","nodeType":"EventDefinition","parameters":{"id":10070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10065,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"409:4:41","nodeType":"VariableDeclaration","scope":10071,"src":"393:20:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10064,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10067,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"431:2:41","nodeType":"VariableDeclaration","scope":10071,"src":"415:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10066,"name":"address","nodeType":"ElementaryTypeName","src":"415:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10069,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"451:7:41","nodeType":"VariableDeclaration","scope":10071,"src":"435:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10068,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"392:67:41"},"src":"378:82:41"},{"anonymous":false,"documentation":{"id":10072,"nodeType":"StructuredDocumentation","src":"466:94:41","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":10080,"name":"Approval","nameLocation":"571:8:41","nodeType":"EventDefinition","parameters":{"id":10079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10074,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"596:5:41","nodeType":"VariableDeclaration","scope":10080,"src":"580:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10073,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10076,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"619:8:41","nodeType":"VariableDeclaration","scope":10080,"src":"603:24:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10075,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10078,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"645:7:41","nodeType":"VariableDeclaration","scope":10080,"src":"629:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10077,"name":"uint256","nodeType":"ElementaryTypeName","src":"629:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:74:41"},"src":"565:89:41"},{"anonymous":false,"documentation":{"id":10081,"nodeType":"StructuredDocumentation","src":"660:117:41","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":10089,"name":"ApprovalForAll","nameLocation":"788:14:41","nodeType":"EventDefinition","parameters":{"id":10088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10083,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"819:5:41","nodeType":"VariableDeclaration","scope":10089,"src":"803:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10082,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10085,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"842:8:41","nodeType":"VariableDeclaration","scope":10089,"src":"826:24:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10084,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10087,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"857:8:41","nodeType":"VariableDeclaration","scope":10089,"src":"852:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10086,"name":"bool","nodeType":"ElementaryTypeName","src":"852:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"802:64:41"},"src":"782:85:41"},{"documentation":{"id":10090,"nodeType":"StructuredDocumentation","src":"873:76:41","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":10097,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"963:9:41","nodeType":"FunctionDefinition","parameters":{"id":10093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10092,"mutability":"mutable","name":"owner","nameLocation":"981:5:41","nodeType":"VariableDeclaration","scope":10097,"src":"973:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10091,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:15:41"},"returnParameters":{"id":10096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10095,"mutability":"mutable","name":"balance","nameLocation":"1019:7:41","nodeType":"VariableDeclaration","scope":10097,"src":"1011:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10094,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:17:41"},"scope":10172,"src":"954:74:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10098,"nodeType":"StructuredDocumentation","src":"1034:131:41","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":10105,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1179:7:41","nodeType":"FunctionDefinition","parameters":{"id":10101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10100,"mutability":"mutable","name":"tokenId","nameLocation":"1195:7:41","nodeType":"VariableDeclaration","scope":10105,"src":"1187:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10099,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:17:41"},"returnParameters":{"id":10104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10103,"mutability":"mutable","name":"owner","nameLocation":"1235:5:41","nodeType":"VariableDeclaration","scope":10105,"src":"1227:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10102,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1226:15:41"},"scope":10172,"src":"1170:72:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10106,"nodeType":"StructuredDocumentation","src":"1248:556:41","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":10117,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1818:16:41","nodeType":"FunctionDefinition","parameters":{"id":10115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10108,"mutability":"mutable","name":"from","nameLocation":"1852:4:41","nodeType":"VariableDeclaration","scope":10117,"src":"1844:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10107,"name":"address","nodeType":"ElementaryTypeName","src":"1844:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10110,"mutability":"mutable","name":"to","nameLocation":"1874:2:41","nodeType":"VariableDeclaration","scope":10117,"src":"1866:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10109,"name":"address","nodeType":"ElementaryTypeName","src":"1866:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10112,"mutability":"mutable","name":"tokenId","nameLocation":"1894:7:41","nodeType":"VariableDeclaration","scope":10117,"src":"1886:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10111,"name":"uint256","nodeType":"ElementaryTypeName","src":"1886:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10114,"mutability":"mutable","name":"data","nameLocation":"1926:4:41","nodeType":"VariableDeclaration","scope":10117,"src":"1911:19:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":10113,"name":"bytes","nodeType":"ElementaryTypeName","src":"1911:5:41","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1834:102:41"},"returnParameters":{"id":10116,"nodeType":"ParameterList","parameters":[],"src":"1945:0:41"},"scope":10172,"src":"1809:137:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10118,"nodeType":"StructuredDocumentation","src":"1952:687:41","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":10127,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2653:16:41","nodeType":"FunctionDefinition","parameters":{"id":10125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10120,"mutability":"mutable","name":"from","nameLocation":"2687:4:41","nodeType":"VariableDeclaration","scope":10127,"src":"2679:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10119,"name":"address","nodeType":"ElementaryTypeName","src":"2679:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10122,"mutability":"mutable","name":"to","nameLocation":"2709:2:41","nodeType":"VariableDeclaration","scope":10127,"src":"2701:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10121,"name":"address","nodeType":"ElementaryTypeName","src":"2701:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10124,"mutability":"mutable","name":"tokenId","nameLocation":"2729:7:41","nodeType":"VariableDeclaration","scope":10127,"src":"2721:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10123,"name":"uint256","nodeType":"ElementaryTypeName","src":"2721:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2669:73:41"},"returnParameters":{"id":10126,"nodeType":"ParameterList","parameters":[],"src":"2751:0:41"},"scope":10172,"src":"2644:108:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10128,"nodeType":"StructuredDocumentation","src":"2758:732:41","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":10137,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3504:12:41","nodeType":"FunctionDefinition","parameters":{"id":10135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10130,"mutability":"mutable","name":"from","nameLocation":"3534:4:41","nodeType":"VariableDeclaration","scope":10137,"src":"3526:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10129,"name":"address","nodeType":"ElementaryTypeName","src":"3526:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10132,"mutability":"mutable","name":"to","nameLocation":"3556:2:41","nodeType":"VariableDeclaration","scope":10137,"src":"3548:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10131,"name":"address","nodeType":"ElementaryTypeName","src":"3548:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10134,"mutability":"mutable","name":"tokenId","nameLocation":"3576:7:41","nodeType":"VariableDeclaration","scope":10137,"src":"3568:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10133,"name":"uint256","nodeType":"ElementaryTypeName","src":"3568:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3516:73:41"},"returnParameters":{"id":10136,"nodeType":"ParameterList","parameters":[],"src":"3598:0:41"},"scope":10172,"src":"3495:104:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10138,"nodeType":"StructuredDocumentation","src":"3605:452:41","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":10145,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4071:7:41","nodeType":"FunctionDefinition","parameters":{"id":10143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10140,"mutability":"mutable","name":"to","nameLocation":"4087:2:41","nodeType":"VariableDeclaration","scope":10145,"src":"4079:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10139,"name":"address","nodeType":"ElementaryTypeName","src":"4079:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10142,"mutability":"mutable","name":"tokenId","nameLocation":"4099:7:41","nodeType":"VariableDeclaration","scope":10145,"src":"4091:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10141,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4078:29:41"},"returnParameters":{"id":10144,"nodeType":"ParameterList","parameters":[],"src":"4116:0:41"},"scope":10172,"src":"4062:55:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10146,"nodeType":"StructuredDocumentation","src":"4123:309:41","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":10153,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4446:17:41","nodeType":"FunctionDefinition","parameters":{"id":10151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10148,"mutability":"mutable","name":"operator","nameLocation":"4472:8:41","nodeType":"VariableDeclaration","scope":10153,"src":"4464:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10147,"name":"address","nodeType":"ElementaryTypeName","src":"4464:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10150,"mutability":"mutable","name":"_approved","nameLocation":"4487:9:41","nodeType":"VariableDeclaration","scope":10153,"src":"4482:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10149,"name":"bool","nodeType":"ElementaryTypeName","src":"4482:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4463:34:41"},"returnParameters":{"id":10152,"nodeType":"ParameterList","parameters":[],"src":"4506:0:41"},"scope":10172,"src":"4437:70:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10154,"nodeType":"StructuredDocumentation","src":"4513:139:41","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":10161,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4666:11:41","nodeType":"FunctionDefinition","parameters":{"id":10157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10156,"mutability":"mutable","name":"tokenId","nameLocation":"4686:7:41","nodeType":"VariableDeclaration","scope":10161,"src":"4678:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10155,"name":"uint256","nodeType":"ElementaryTypeName","src":"4678:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4677:17:41"},"returnParameters":{"id":10160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10159,"mutability":"mutable","name":"operator","nameLocation":"4726:8:41","nodeType":"VariableDeclaration","scope":10161,"src":"4718:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10158,"name":"address","nodeType":"ElementaryTypeName","src":"4718:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4717:18:41"},"scope":10172,"src":"4657:79:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10162,"nodeType":"StructuredDocumentation","src":"4742:138:41","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":10171,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4894:16:41","nodeType":"FunctionDefinition","parameters":{"id":10167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10164,"mutability":"mutable","name":"owner","nameLocation":"4919:5:41","nodeType":"VariableDeclaration","scope":10171,"src":"4911:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10163,"name":"address","nodeType":"ElementaryTypeName","src":"4911:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10166,"mutability":"mutable","name":"operator","nameLocation":"4934:8:41","nodeType":"VariableDeclaration","scope":10171,"src":"4926:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10165,"name":"address","nodeType":"ElementaryTypeName","src":"4926:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4910:33:41"},"returnParameters":{"id":10170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10171,"src":"4967:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10168,"name":"bool","nodeType":"ElementaryTypeName","src":"4967:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4966:6:41"},"scope":10172,"src":"4885:88:41","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10173,"src":"250:4725:41","usedErrors":[]}],"src":"108:4868:41"},"id":41},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","exportedSymbols":{"IERC165":[10211],"IERC721":[10172],"IERC721Metadata":[10199]},"id":10200,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10174,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:42"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":10175,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10200,"sourceUnit":10173,"src":"137:24:42","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10177,"name":"IERC721","nameLocations":["326:7:42"],"nodeType":"IdentifierPath","referencedDeclaration":10172,"src":"326:7:42"},"id":10178,"nodeType":"InheritanceSpecifier","src":"326:7:42"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":10176,"nodeType":"StructuredDocumentation","src":"163:133:42","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":10199,"linearizedBaseContracts":[10199,10172,10211],"name":"IERC721Metadata","nameLocation":"307:15:42","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10179,"nodeType":"StructuredDocumentation","src":"340:58:42","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":10184,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"412:4:42","nodeType":"FunctionDefinition","parameters":{"id":10180,"nodeType":"ParameterList","parameters":[],"src":"416:2:42"},"returnParameters":{"id":10183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10184,"src":"442:13:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10181,"name":"string","nodeType":"ElementaryTypeName","src":"442:6:42","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"441:15:42"},"scope":10199,"src":"403:54:42","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10185,"nodeType":"StructuredDocumentation","src":"463:60:42","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":10190,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"537:6:42","nodeType":"FunctionDefinition","parameters":{"id":10186,"nodeType":"ParameterList","parameters":[],"src":"543:2:42"},"returnParameters":{"id":10189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10188,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10190,"src":"569:13:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10187,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:42","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"568:15:42"},"scope":10199,"src":"528:56:42","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10191,"nodeType":"StructuredDocumentation","src":"590:90:42","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":10198,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"694:8:42","nodeType":"FunctionDefinition","parameters":{"id":10194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10193,"mutability":"mutable","name":"tokenId","nameLocation":"711:7:42","nodeType":"VariableDeclaration","scope":10198,"src":"703:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10192,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"702:17:42"},"returnParameters":{"id":10197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10196,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10198,"src":"743:13:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10195,"name":"string","nodeType":"ElementaryTypeName","src":"743:6:42","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"742:15:42"},"scope":10199,"src":"685:73:42","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10200,"src":"297:463:42","usedErrors":[]}],"src":"112:649:42"},"id":42},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[10211]},"id":10212,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10201,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:43"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":10202,"nodeType":"StructuredDocumentation","src":"125:279:43","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":10211,"linearizedBaseContracts":[10211],"name":"IERC165","nameLocation":"415:7:43","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10203,"nodeType":"StructuredDocumentation","src":"429:340:43","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":10210,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:43","nodeType":"FunctionDefinition","parameters":{"id":10206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10205,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:43","nodeType":"VariableDeclaration","scope":10210,"src":"801:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10204,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:43"},"returnParameters":{"id":10209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10208,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10210,"src":"844:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10207,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:43"},"scope":10211,"src":"774:76:43","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10212,"src":"405:447:43","usedErrors":[]}],"src":"100:753:43"},"id":43},"contracts/N2MCommonStorage.sol":{"ast":{"absolutePath":"contracts/N2MCommonStorage.sol","exportedSymbols":{"AddressUpgradeable":[5076],"ContextUpgradeable":[6489],"IN2MCrossFactory":[43],"IN2M_ERCStorage":[424],"IOperatorFilterRegistry":[613],"Initializable":[1466],"N2MCommonStorage":[10512],"N2MVersion":[13634],"NFTOwnableUpgradeable":[726],"Readme":[8]},"id":10513,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":10213,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:44"},{"absolutePath":"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol","file":"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol","id":10214,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10513,"sourceUnit":425,"src":"4939:59:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol","file":"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol","id":10215,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10513,"sourceUnit":44,"src":"4999:60:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol","file":"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol","id":10216,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10513,"sourceUnit":727,"src":"5060:62:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol","file":"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol","id":10218,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10513,"sourceUnit":614,"src":"5123:98:44","symbolAliases":[{"foreign":{"id":10217,"name":"IOperatorFilterRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"5131:23:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/N2MVersion.sol","file":"./N2MVersion.sol","id":10219,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10513,"sourceUnit":13635,"src":"5222:26:44","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10221,"name":"NFTOwnableUpgradeable","nameLocations":["5556:21:44"],"nodeType":"IdentifierPath","referencedDeclaration":726,"src":"5556:21:44"},"id":10222,"nodeType":"InheritanceSpecifier","src":"5556:21:44"},{"baseName":{"id":10223,"name":"IN2M_ERCStorage","nameLocations":["5583:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":424,"src":"5583:15:44"},"id":10224,"nodeType":"InheritanceSpecifier","src":"5583:15:44"},{"baseName":{"id":10225,"name":"N2MVersion","nameLocations":["5604:10:44"],"nodeType":"IdentifierPath","referencedDeclaration":13634,"src":"5604:10:44"},"id":10226,"nodeType":"InheritanceSpecifier","src":"5604:10:44"}],"canonicalName":"N2MCommonStorage","contractDependencies":[],"contractKind":"contract","documentation":{"id":10220,"nodeType":"StructuredDocumentation","src":"5250:264:44","text":"@title NFTs2Me.com Smart Contracts\n @author The NFTs2Me Team\n @notice Read our terms of service\n @custom:security-contact security@nfts2me.com\n @custom:terms-of-service https://nfts2me.com/terms-of-service/\n @custom:website https://nfts2me.com/"},"fullyImplemented":true,"id":10512,"linearizedBaseContracts":[10512,13634,424,8,726,6489,1466],"name":"N2MCommonStorage","nameLocation":"5532:16:44","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":10227,"nodeType":"StructuredDocumentation","src":"5621:13:44","text":"CONSTANTS"},"id":10233,"mutability":"constant","name":"DEFAULT_SUBSCRIPTION","nameLocation":"5665:20:44","nodeType":"VariableDeclaration","scope":10512,"src":"5639:100:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10228,"name":"address","nodeType":"ElementaryTypeName","src":"5639:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"307833636336436464413736306237396241666130386446343145434641323234663831306443654236","id":10231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5696:42:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5688:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10229,"name":"address","nodeType":"ElementaryTypeName","src":"5688:7:44","typeDescriptions":{}}},"id":10232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5688:51:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":true,"id":10239,"mutability":"constant","name":"OPENSEA_CONDUIT","nameLocation":"5771:15:44","nodeType":"VariableDeclaration","scope":10512,"src":"5745:95:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10234,"name":"address","nodeType":"ElementaryTypeName","src":"5745:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"307831453030343937383346303038413030383531393345303030303344303063643534303033633731","id":10237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5797:42:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x1E0049783F008A0085193E00003D00cd54003c71"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5789:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10235,"name":"address","nodeType":"ElementaryTypeName","src":"5789:7:44","typeDescriptions":{}}},"id":10238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5789:51:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":true,"id":10245,"mutability":"constant","name":"N2M_CONDUIT","nameLocation":"5872:11:44","nodeType":"VariableDeclaration","scope":10512,"src":"5846:91:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10240,"name":"address","nodeType":"ElementaryTypeName","src":"5846:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"307838383839394443304238344336453732363834306530304446623934414263363234383832356543","id":10243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5894:42:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x88899DC0B84C6E726840e00DFb94ABc6248825eC"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5886:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10241,"name":"address","nodeType":"ElementaryTypeName","src":"5886:7:44","typeDescriptions":{}}},"id":10244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5886:51:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":true,"id":10251,"mutability":"constant","name":"operatorFilterRegistry","nameLocation":"5985:22:44","nodeType":"VariableDeclaration","scope":10512,"src":"5943:134:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IOperatorFilterRegistry_$613","typeString":"contract IOperatorFilterRegistry"},"typeName":{"id":10247,"nodeType":"UserDefinedTypeName","pathNode":{"id":10246,"name":"IOperatorFilterRegistry","nameLocations":["5943:23:44"],"nodeType":"IdentifierPath","referencedDeclaration":613,"src":"5943:23:44"},"referencedDeclaration":613,"src":"5943:23:44","typeDescriptions":{"typeIdentifier":"t_contract$_IOperatorFilterRegistry_$613","typeString":"contract IOperatorFilterRegistry"}},"value":{"arguments":[{"hexValue":"307830303030303030303030303041416542364437363730453532324137313830363733333363643445","id":10249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6034:42:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x000000000000AAeB6D7670E522A718067333cd4E"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10248,"name":"IOperatorFilterRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"6010:23:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOperatorFilterRegistry_$613_$","typeString":"type(contract IOperatorFilterRegistry)"}},"id":10250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6010:67:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOperatorFilterRegistry_$613","typeString":"contract IOperatorFilterRegistry"}},"visibility":"internal"},{"constant":true,"id":10257,"mutability":"constant","name":"N2M_PRESALE_SIGNER","nameLocation":"6109:18:44","nodeType":"VariableDeclaration","scope":10512,"src":"6083:98:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10252,"name":"address","nodeType":"ElementaryTypeName","src":"6083:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"307843306666656530364345334436363839333035303335363031613035354139366163643631396336","id":10255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6138:42:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xC0ffee06CE3D6689305035601a055A96acd619c6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6130:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10253,"name":"address","nodeType":"ElementaryTypeName","src":"6130:7:44","typeDescriptions":{}}},"id":10256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6130:51:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":true,"id":10263,"mutability":"constant","name":"N2M_TREASURY","nameLocation":"6213:12:44","nodeType":"VariableDeclaration","scope":10512,"src":"6187:92:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10258,"name":"address","nodeType":"ElementaryTypeName","src":"6187:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"307839353561463464653943613033663834633934363234353744303735614341426631413841664338","id":10261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6236:42:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x955aF4de9Ca03f84c9462457D075aCABf1A8AfC8"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6228:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10259,"name":"address","nodeType":"ElementaryTypeName","src":"6228:7:44","typeDescriptions":{}}},"id":10262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6228:51:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":true,"id":10266,"mutability":"constant","name":"N2M_FEE","nameLocation":"6311:7:44","nodeType":"VariableDeclaration","scope":10512,"src":"6285:40:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10264,"name":"uint256","nodeType":"ElementaryTypeName","src":"6285:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"355f3030","id":10265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6321:4:44","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"5_00"},"visibility":"internal"},{"constant":true,"id":10269,"mutability":"constant","name":"MAX_AFFILIATE_DISCOUNT","nameLocation":"6357:22:44","nodeType":"VariableDeclaration","scope":10512,"src":"6331:57:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10267,"name":"uint256","nodeType":"ElementaryTypeName","src":"6331:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130305f3030","id":10268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6382:6:44","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"100_00"},"visibility":"internal"},{"constant":true,"id":10272,"mutability":"constant","name":"MAX_AFFILIATE_PERCENTAGE","nameLocation":"6420:24:44","nodeType":"VariableDeclaration","scope":10512,"src":"6394:59:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10270,"name":"uint256","nodeType":"ElementaryTypeName","src":"6394:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130305f3030","id":10271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6447:6:44","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"100_00"},"visibility":"internal"},{"constant":true,"id":10275,"mutability":"constant","name":"NOT_ENTERED","nameLocation":"6485:11:44","nodeType":"VariableDeclaration","scope":10512,"src":"6459:41:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10273,"name":"uint256","nodeType":"ElementaryTypeName","src":"6459:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":10274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6499:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":false,"documentation":{"id":10276,"nodeType":"StructuredDocumentation","src":"6507:17:44","text":"IMMUTABLE "},"id":10278,"mutability":"immutable","name":"_factory","nameLocation":"6564:8:44","nodeType":"VariableDeclaration","scope":10512,"src":"6529:43:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":10277,"name":"address","nodeType":"ElementaryTypeName","src":"6529:15:44","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":10280,"mutability":"mutable","name":"_baseURICIDHash","nameLocation":"6596:15:44","nodeType":"VariableDeclaration","scope":10512,"src":"6579:32:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10279,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6579:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10282,"mutability":"mutable","name":"_placeholderImageCIDHash","nameLocation":"6634:24:44","nodeType":"VariableDeclaration","scope":10512,"src":"6617:41:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10281,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6617:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10284,"mutability":"mutable","name":"_contractURIMetadataCIDHash","nameLocation":"6681:27:44","nodeType":"VariableDeclaration","scope":10512,"src":"6664:44:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10283,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6664:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10288,"mutability":"mutable","name":"_pendingAffiliateBalance","nameLocation":"6752:24:44","nodeType":"VariableDeclaration","scope":10512,"src":"6715:61:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":10287,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10285,"name":"address","nodeType":"ElementaryTypeName","src":"6723:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"6715:27:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10286,"name":"uint256","nodeType":"ElementaryTypeName","src":"6734:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":10290,"mutability":"mutable","name":"_pendingTotalAffiliatesBalance","nameLocation":"6799:30:44","nodeType":"VariableDeclaration","scope":10512,"src":"6782:47:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10289,"name":"uint256","nodeType":"ElementaryTypeName","src":"6782:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10294,"mutability":"mutable","name":"_revenueInfo","nameLocation":"6862:12:44","nodeType":"VariableDeclaration","scope":10512,"src":"6836:38:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_storage_$dyn_storage","typeString":"struct IN2M_ERCStorage.RevenueAddress[]"},"typeName":{"baseType":{"id":10292,"nodeType":"UserDefinedTypeName","pathNode":{"id":10291,"name":"RevenueAddress","nameLocations":["6836:14:44"],"nodeType":"IdentifierPath","referencedDeclaration":394,"src":"6836:14:44"},"referencedDeclaration":394,"src":"6836:14:44","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueAddress_$394_storage_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress"}},"id":10293,"nodeType":"ArrayTypeName","src":"6836:16:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_storage_$dyn_storage_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress[]"}},"visibility":"internal"},{"constant":false,"id":10299,"mutability":"mutable","name":"_affiliatesInfo","nameLocation":"6930:15:44","nodeType":"VariableDeclaration","scope":10512,"src":"6880:65:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AffiliateInformation_$401_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.AffiliateInformation)"},"typeName":{"id":10298,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10295,"name":"address","nodeType":"ElementaryTypeName","src":"6888:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"6880:40:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AffiliateInformation_$401_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.AffiliateInformation)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10297,"nodeType":"UserDefinedTypeName","pathNode":{"id":10296,"name":"AffiliateInformation","nameLocations":["6899:20:44"],"nodeType":"IdentifierPath","referencedDeclaration":401,"src":"6899:20:44"},"referencedDeclaration":401,"src":"6899:20:44","typeDescriptions":{"typeIdentifier":"t_struct$_AffiliateInformation_$401_storage_ptr","typeString":"struct IN2M_ERCStorage.AffiliateInformation"}}},"visibility":"internal"},{"constant":false,"id":10301,"mutability":"mutable","name":"_mintPrice","nameLocation":"6969:10:44","nodeType":"VariableDeclaration","scope":10512,"src":"6952:27:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10300,"name":"uint256","nodeType":"ElementaryTypeName","src":"6952:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10303,"mutability":"mutable","name":"_withdrawnAmount","nameLocation":"7002:16:44","nodeType":"VariableDeclaration","scope":10512,"src":"6985:33:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10302,"name":"uint256","nodeType":"ElementaryTypeName","src":"6985:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10305,"mutability":"mutable","name":"_reentrancyEntered","nameLocation":"7041:18:44","nodeType":"VariableDeclaration","scope":10512,"src":"7024:35:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10304,"name":"uint256","nodeType":"ElementaryTypeName","src":"7024:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10307,"mutability":"mutable","name":"_dropDateTimestamp","nameLocation":"7082:18:44","nodeType":"VariableDeclaration","scope":10512,"src":"7065:35:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10306,"name":"uint256","nodeType":"ElementaryTypeName","src":"7065:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10309,"mutability":"mutable","name":"_endDateTimestamp","nameLocation":"7123:17:44","nodeType":"VariableDeclaration","scope":10512,"src":"7106:34:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10308,"name":"uint256","nodeType":"ElementaryTypeName","src":"7106:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10313,"mutability":"mutable","name":"_withdrawnERC20Amount","nameLocation":"7185:21:44","nodeType":"VariableDeclaration","scope":10512,"src":"7148:58:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":10312,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10310,"name":"address","nodeType":"ElementaryTypeName","src":"7156:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"7148:27:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10311,"name":"uint256","nodeType":"ElementaryTypeName","src":"7167:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":10315,"mutability":"mutable","name":"_erc20PaymentAddress","nameLocation":"7229:20:44","nodeType":"VariableDeclaration","scope":10512,"src":"7212:37:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10314,"name":"address","nodeType":"ElementaryTypeName","src":"7212:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10320,"mutability":"mutable","name":"_randomTickets","nameLocation":"7298:14:44","nodeType":"VariableDeclaration","scope":10512,"src":"7256:56:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_RandomTicket_$389_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.RandomTicket)"},"typeName":{"id":10319,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10316,"name":"address","nodeType":"ElementaryTypeName","src":"7264:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"7256:32:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_RandomTicket_$389_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.RandomTicket)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10318,"nodeType":"UserDefinedTypeName","pathNode":{"id":10317,"name":"RandomTicket","nameLocations":["7275:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":389,"src":"7275:12:44"},"referencedDeclaration":389,"src":"7275:12:44","typeDescriptions":{"typeIdentifier":"t_struct$_RandomTicket_$389_storage_ptr","typeString":"struct IN2M_ERCStorage.RandomTicket"}}},"visibility":"internal"},{"constant":false,"id":10324,"mutability":"mutable","name":"_usedAmountSignature","nameLocation":"7353:20:44","nodeType":"VariableDeclaration","scope":10512,"src":"7318:55:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_uint256_$","typeString":"mapping(bytes => uint256)"},"typeName":{"id":10323,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10321,"name":"bytes","nodeType":"ElementaryTypeName","src":"7326:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"nodeType":"Mapping","src":"7318:25:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_uint256_$","typeString":"mapping(bytes => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10322,"name":"uint256","nodeType":"ElementaryTypeName","src":"7335:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":10328,"mutability":"mutable","name":"_soulbound","nameLocation":"7413:10:44","nodeType":"VariableDeclaration","scope":10512,"src":"7379:44:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":10327,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10325,"name":"uint256","nodeType":"ElementaryTypeName","src":"7387:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"7379:24:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10326,"name":"bool","nodeType":"ElementaryTypeName","src":"7398:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":10332,"mutability":"mutable","name":"_customURICIDHashes","nameLocation":"7466:19:44","nodeType":"VariableDeclaration","scope":10512,"src":"7429:56:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":10331,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10329,"name":"uint256","nodeType":"ElementaryTypeName","src":"7437:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"7429:27:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10330,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7448:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"},{"constant":false,"id":10334,"mutability":"mutable","name":"_soldTokens","nameLocation":"7508:11:44","nodeType":"VariableDeclaration","scope":10512,"src":"7492:27:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10333,"name":"uint32","nodeType":"ElementaryTypeName","src":"7492:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":10337,"mutability":"mutable","name":"_currentPhase","nameLocation":"7544:13:44","nodeType":"VariableDeclaration","scope":10512,"src":"7525:32:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"},"typeName":{"id":10336,"nodeType":"UserDefinedTypeName","pathNode":{"id":10335,"name":"SalePhase","nameLocations":["7525:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":407,"src":"7525:9:44"},"referencedDeclaration":407,"src":"7525:9:44","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"}},"visibility":"internal"},{"constant":false,"id":10340,"mutability":"mutable","name":"_operatorFilterStatus","nameLocation":"7593:21:44","nodeType":"VariableDeclaration","scope":10512,"src":"7563:51:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_OperatorFilterStatus_$417","typeString":"enum IN2M_ERCStorage.OperatorFilterStatus"},"typeName":{"id":10339,"nodeType":"UserDefinedTypeName","pathNode":{"id":10338,"name":"OperatorFilterStatus","nameLocations":["7563:20:44"],"nodeType":"IdentifierPath","referencedDeclaration":417,"src":"7563:20:44"},"referencedDeclaration":417,"src":"7563:20:44","typeDescriptions":{"typeIdentifier":"t_enum$_OperatorFilterStatus_$417","typeString":"enum IN2M_ERCStorage.OperatorFilterStatus"}},"visibility":"internal"},{"constant":false,"id":10343,"mutability":"mutable","name":"_mintingType","nameLocation":"7641:12:44","nodeType":"VariableDeclaration","scope":10512,"src":"7620:33:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"typeName":{"id":10342,"nodeType":"UserDefinedTypeName","pathNode":{"id":10341,"name":"MintingType","nameLocations":["7620:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":412,"src":"7620:11:44"},"referencedDeclaration":412,"src":"7620:11:44","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"visibility":"internal"},{"constant":false,"id":10345,"mutability":"mutable","name":"_royaltyFee","nameLocation":"7737:11:44","nodeType":"VariableDeclaration","scope":10512,"src":"7721:27:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10344,"name":"uint16","nodeType":"ElementaryTypeName","src":"7721:6:44","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":10347,"mutability":"mutable","name":"_maxPerAddress","nameLocation":"7770:14:44","nodeType":"VariableDeclaration","scope":10512,"src":"7754:30:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10346,"name":"uint16","nodeType":"ElementaryTypeName","src":"7754:6:44","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":10349,"mutability":"mutable","name":"_collectionSize","nameLocation":"7871:15:44","nodeType":"VariableDeclaration","scope":10512,"src":"7855:31:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10348,"name":"uint32","nodeType":"ElementaryTypeName","src":"7855:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":10351,"mutability":"mutable","name":"_isERC20Payment","nameLocation":"7906:15:44","nodeType":"VariableDeclaration","scope":10512,"src":"7892:29:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10350,"name":"bool","nodeType":"ElementaryTypeName","src":"7892:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10353,"mutability":"mutable","name":"_soulboundCollection","nameLocation":"7941:20:44","nodeType":"VariableDeclaration","scope":10512,"src":"7927:34:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10352,"name":"bool","nodeType":"ElementaryTypeName","src":"7927:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"body":{"id":10366,"nodeType":"Block","src":"8065:74:44","statements":[{"expression":{"id":10361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10359,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10278,"src":"8075:8:44","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10360,"name":"factoryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10356,"src":"8086:14:44","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"8075:25:44","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":10362,"nodeType":"ExpressionStatement","src":"8075:25:44"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10363,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1447,"src":"8110:20:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8110:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10365,"nodeType":"ExpressionStatement","src":"8110:22:44"}]},"documentation":{"id":10354,"nodeType":"StructuredDocumentation","src":"7968:48:44","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":10367,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10356,"mutability":"mutable","name":"factoryAddress","nameLocation":"8049:14:44","nodeType":"VariableDeclaration","scope":10367,"src":"8033:30:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":10355,"name":"address","nodeType":"ElementaryTypeName","src":"8033:15:44","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"8032:32:44"},"returnParameters":{"id":10358,"nodeType":"ParameterList","parameters":[],"src":"8065:0:44"},"scope":10512,"src":"8021:118:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[657],"body":{"id":10400,"nodeType":"Block","src":"8309:162:44","statements":[{"clauses":[{"block":{"id":10395,"nodeType":"Block","src":"8417:39:44","statements":[{"expression":{"id":10393,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10391,"src":"8438:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10374,"id":10394,"nodeType":"Return","src":"8431:14:44"}]},"errorName":"","id":10396,"nodeType":"TryCatchClause","parameters":{"id":10392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10391,"mutability":"mutable","name":"ownerOf","nameLocation":"8408:7:44","nodeType":"VariableDeclaration","scope":10396,"src":"8400:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10390,"name":"address","nodeType":"ElementaryTypeName","src":"8400:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8399:17:44"},"src":"8391:65:44"},{"block":{"id":10397,"nodeType":"Block","src":"8463:2:44","statements":[]},"errorName":"","id":10398,"nodeType":"TryCatchClause","src":"8457:8:44"}],"externalCall":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":10385,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8382:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_N2MCommonStorage_$10512","typeString":"contract N2MCommonStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_N2MCommonStorage_$10512","typeString":"contract N2MCommonStorage"}],"id":10384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8374:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10383,"name":"address","nodeType":"ElementaryTypeName","src":"8374:7:44","typeDescriptions":{}}},"id":10386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8374:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8366:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":10381,"name":"uint160","nodeType":"ElementaryTypeName","src":"8366:7:44","typeDescriptions":{}}},"id":10387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8366:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":10380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8358:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10379,"name":"uint256","nodeType":"ElementaryTypeName","src":"8358:7:44","typeDescriptions":{}}},"id":10388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8358:31:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":10376,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10278,"src":"8340:8:44","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10375,"name":"IN2MCrossFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43,"src":"8323:16:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IN2MCrossFactory_$43_$","typeString":"type(contract IN2MCrossFactory)"}},"id":10377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8323:26:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IN2MCrossFactory_$43","typeString":"contract IN2MCrossFactory"}},"id":10378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8350:7:44","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":35,"src":"8323:34:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":10389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8323:67:44","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10399,"nodeType":"TryStatement","src":"8319:146:44"}]},"documentation":{"id":10368,"nodeType":"StructuredDocumentation","src":"8145:64:44","text":"@notice Returns the address of the current collection owner."},"functionSelector":"8da5cb5b","id":10401,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"8223:5:44","nodeType":"FunctionDefinition","overrides":{"id":10371,"nodeType":"OverrideSpecifier","overrides":[{"id":10370,"name":"NFTOwnableUpgradeable","nameLocations":["8252:21:44"],"nodeType":"IdentifierPath","referencedDeclaration":726,"src":"8252:21:44"}],"src":"8243:31:44"},"parameters":{"id":10369,"nodeType":"ParameterList","parameters":[],"src":"8228:2:44"},"returnParameters":{"id":10374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10373,"mutability":"mutable","name":"collectionOwner","nameLocation":"8292:15:44","nodeType":"VariableDeclaration","scope":10401,"src":"8284:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10372,"name":"address","nodeType":"ElementaryTypeName","src":"8284:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8283:25:44"},"scope":10512,"src":"8214:257:44","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[662],"body":{"id":10433,"nodeType":"Block","src":"8584:180:44","statements":[{"clauses":[{"block":{"id":10428,"nodeType":"Block","src":"8704:45:44","statements":[{"expression":{"id":10426,"name":"strictOwnerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10424,"src":"8725:13:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10407,"id":10427,"nodeType":"Return","src":"8718:20:44"}]},"errorName":"","id":10429,"nodeType":"TryCatchClause","parameters":{"id":10425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10424,"mutability":"mutable","name":"strictOwnerOf","nameLocation":"8689:13:44","nodeType":"VariableDeclaration","scope":10429,"src":"8681:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10423,"name":"address","nodeType":"ElementaryTypeName","src":"8681:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8680:23:44"},"src":"8672:77:44"},{"block":{"id":10430,"nodeType":"Block","src":"8756:2:44","statements":[]},"errorName":"","id":10431,"nodeType":"TryCatchClause","src":"8750:8:44"}],"externalCall":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":10418,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8663:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_N2MCommonStorage_$10512","typeString":"contract N2MCommonStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_N2MCommonStorage_$10512","typeString":"contract N2MCommonStorage"}],"id":10417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8655:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10416,"name":"address","nodeType":"ElementaryTypeName","src":"8655:7:44","typeDescriptions":{}}},"id":10419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8655:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8647:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":10414,"name":"uint160","nodeType":"ElementaryTypeName","src":"8647:7:44","typeDescriptions":{}}},"id":10420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8647:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":10413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8639:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10412,"name":"uint256","nodeType":"ElementaryTypeName","src":"8639:7:44","typeDescriptions":{}}},"id":10421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8639:31:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":10409,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10278,"src":"8615:8:44","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10408,"name":"IN2MCrossFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43,"src":"8598:16:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IN2MCrossFactory_$43_$","typeString":"type(contract IN2MCrossFactory)"}},"id":10410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8598:26:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IN2MCrossFactory_$43","typeString":"contract IN2MCrossFactory"}},"id":10411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8625:13:44","memberName":"strictOwnerOf","nodeType":"MemberAccess","referencedDeclaration":42,"src":"8598:40:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":10422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8598:73:44","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10432,"nodeType":"TryStatement","src":"8594:164:44"}]},"id":10434,"implemented":true,"kind":"function","modifiers":[],"name":"_strictOwner","nameLocation":"8486:12:44","nodeType":"FunctionDefinition","overrides":{"id":10404,"nodeType":"OverrideSpecifier","overrides":[{"id":10403,"name":"NFTOwnableUpgradeable","nameLocations":["8524:21:44"],"nodeType":"IdentifierPath","referencedDeclaration":726,"src":"8524:21:44"}],"src":"8515:31:44"},"parameters":{"id":10402,"nodeType":"ParameterList","parameters":[],"src":"8498:2:44"},"returnParameters":{"id":10407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10406,"mutability":"mutable","name":"ownerStrictAddress","nameLocation":"8564:18:44","nodeType":"VariableDeclaration","scope":10434,"src":"8556:26:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10405,"name":"address","nodeType":"ElementaryTypeName","src":"8556:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8555:28:44"},"scope":10512,"src":"8477:287:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[667],"body":{"id":10458,"nodeType":"Block","src":"8863:210:44","statements":[{"clauses":[{"block":{"id":10451,"nodeType":"Block","src":"8966:50:44","statements":[{"expression":{"id":10449,"name":"n2mTreasuryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10447,"src":"8987:18:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10440,"id":10450,"nodeType":"Return","src":"8980:25:44"}]},"errorName":"","id":10452,"nodeType":"TryCatchClause","parameters":{"id":10448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10447,"mutability":"mutable","name":"n2mTreasuryAddress","nameLocation":"8946:18:44","nodeType":"VariableDeclaration","scope":10452,"src":"8938:26:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10446,"name":"address","nodeType":"ElementaryTypeName","src":"8938:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8937:28:44"},"src":"8929:87:44"},{"block":{"id":10455,"nodeType":"Block","src":"9023:44:44","statements":[{"expression":{"id":10453,"name":"N2M_TREASURY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10263,"src":"9044:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10440,"id":10454,"nodeType":"Return","src":"9037:19:44"}]},"errorName":"","id":10456,"nodeType":"TryCatchClause","src":"9017:50:44"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10442,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10278,"src":"8895:8:44","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":10441,"name":"IN2MCrossFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43,"src":"8878:16:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IN2MCrossFactory_$43_$","typeString":"type(contract IN2MCrossFactory)"}},"id":10443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8878:26:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IN2MCrossFactory_$43","typeString":"contract IN2MCrossFactory"}},"id":10444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8905:21:44","memberName":"getN2MTreasuryAddress","nodeType":"MemberAccess","referencedDeclaration":28,"src":"8878:48:44","typeDescriptions":{"typeIdentifier":"t_function_external_pure$__$returns$_t_address_$","typeString":"function () pure external returns (address)"}},"id":10445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8878:50:44","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10457,"nodeType":"TryStatement","src":"8874:193:44"}]},"id":10459,"implemented":true,"kind":"function","modifiers":[],"name":"_getN2MFeeAddress","nameLocation":"8779:17:44","nodeType":"FunctionDefinition","overrides":{"id":10437,"nodeType":"OverrideSpecifier","overrides":[{"id":10436,"name":"NFTOwnableUpgradeable","nameLocations":["8822:21:44"],"nodeType":"IdentifierPath","referencedDeclaration":726,"src":"8822:21:44"}],"src":"8813:31:44"},"parameters":{"id":10435,"nodeType":"ParameterList","parameters":[],"src":"8796:2:44"},"returnParameters":{"id":10440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10439,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10459,"src":"8854:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10438,"name":"address","nodeType":"ElementaryTypeName","src":"8854:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8853:9:44"},"scope":10512,"src":"8770:303:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10468,"nodeType":"Block","src":"9107:79:44","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10461,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10484,"src":"9117:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9117:21:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10463,"nodeType":"ExpressionStatement","src":"9117:21:44"},{"id":10464,"nodeType":"PlaceholderStatement","src":"9148:1:44"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10465,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10492,"src":"9159:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9159:20:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10467,"nodeType":"ExpressionStatement","src":"9159:20:44"}]},"id":10469,"name":"nonReentrant","nameLocation":"9092:12:44","nodeType":"ModifierDefinition","parameters":{"id":10460,"nodeType":"ParameterList","parameters":[],"src":"9104:2:44"},"src":"9083:103:44","virtual":false,"visibility":"internal"},{"body":{"id":10483,"nodeType":"Block","src":"9231:102:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10472,"name":"_reentrancyEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10305,"src":"9245:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9267:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9245:23:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10478,"nodeType":"IfStatement","src":"9241:53:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10475,"name":"ReentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"9277:15:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9277:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10477,"nodeType":"RevertStatement","src":"9270:24:44"}},{"expression":{"id":10481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10479,"name":"_reentrancyEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10305,"src":"9304:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":10480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9325:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9304:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10482,"nodeType":"ExpressionStatement","src":"9304:22:44"}]},"id":10484,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"9201:19:44","nodeType":"FunctionDefinition","parameters":{"id":10470,"nodeType":"ParameterList","parameters":[],"src":"9220:2:44"},"returnParameters":{"id":10471,"nodeType":"ParameterList","parameters":[],"src":"9231:0:44"},"scope":10512,"src":"9192:141:44","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10491,"nodeType":"Block","src":"9377:43:44","statements":[{"expression":{"id":10489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"9387:26:44","subExpression":{"components":[{"id":10487,"name":"_reentrancyEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10305,"src":"9394:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10488,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9393:20:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10490,"nodeType":"ExpressionStatement","src":"9387:26:44"}]},"id":10492,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"9348:18:44","nodeType":"FunctionDefinition","parameters":{"id":10485,"nodeType":"ParameterList","parameters":[],"src":"9366:2:44"},"returnParameters":{"id":10486,"nodeType":"ParameterList","parameters":[],"src":"9377:0:44"},"scope":10512,"src":"9339:81:44","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[423],"body":{"id":10510,"nodeType":"Block","src":"9665:90:44","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":10501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10499,"name":"_baseURICIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10280,"src":"9683:15:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9702:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9683:20:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":10505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10502,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"9708:12:44","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10503,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"9724:11:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":10504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9736:10:44","memberName":"CUSTOM_URI","nodeType":"MemberAccess","referencedDeclaration":411,"src":"9724:22:44","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"9708:38:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":10506,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9707:40:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9683:64:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":10508,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9682:66:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10498,"id":10509,"nodeType":"Return","src":"9675:73:44"}]},"documentation":{"id":10493,"nodeType":"StructuredDocumentation","src":"9430:167:44","text":"@notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."},"functionSelector":"0de77eb8","id":10511,"implemented":true,"kind":"function","modifiers":[],"name":"isMetadataFixed","nameLocation":"9611:15:44","nodeType":"FunctionDefinition","overrides":{"id":10495,"nodeType":"OverrideSpecifier","overrides":[],"src":"9641:8:44"},"parameters":{"id":10494,"nodeType":"ParameterList","parameters":[],"src":"9626:2:44"},"returnParameters":{"id":10498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10497,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10511,"src":"9659:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10496,"name":"bool","nodeType":"ElementaryTypeName","src":"9659:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9658:6:44"},"scope":10512,"src":"9602:153:44","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":10513,"src":"5514:4244:44","usedErrors":[271,274,277,280,283,286,289,292,295,298,301,304,307,310,313,316,319,322,325,328,331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376,379,384]}],"src":"4913:4846:44"},"id":44},"contracts/N2MERC1155.sol":{"ast":{"absolutePath":"contracts/N2MERC1155.sol","exportedSymbols":{"AddressUpgradeable":[5076],"CheckpointsUpgradeable":[6447],"ContextUpgradeable":[6489],"CountersUpgradeable":[6563],"ECDSAUpgradeable":[7099],"EIP712Upgradeable":[7249],"ERC1155SupplyUpgradeable":[3051],"ERC1155Upgradeable":[2711],"ERC165Upgradeable":[7293],"ERC721URIStorageUpgradeable":[4692],"ERC721Upgradeable":[4413],"ERC721VotesUpgradeable":[4765],"IERC1155MetadataURIUpgradeable":[3066],"IERC1155ReceiverUpgradeable":[2752],"IERC1155Upgradeable":[2874],"IERC165Upgradeable":[7305],"IERC20":[10056],"IERC20PermitUpgradeable":[3180],"IERC20Upgradeable":[3144],"IERC2981Upgradeable":[1297],"IERC721MetadataUpgradeable":[4792],"IERC721ReceiverUpgradeable":[4431],"IERC721Upgradeable":[4547],"IN2MCrossFactory":[43],"IN2MLibrary":[11961],"IN2M_ERCBase":[258],"IN2M_ERCStorage":[424],"IOperatorFilterRegistry":[613],"IVotesUpgradeable":[804],"Initializable":[1466],"MathUpgradeable":[8170],"N2MCommonStorage":[10512],"N2MERC1155":[11321],"N2MTokenCommon":[13618],"N2MVersion":[13634],"NFTOwnableUpgradeable":[726],"Readme":[8],"SafeCastUpgradeable":[9711],"SafeERC20Upgradeable":[3461],"StringsUpgradeable":[6738],"VotesUpgradeable":[1278]},"id":11322,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":10514,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:45"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol","id":10515,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11322,"sourceUnit":2712,"src":"4939:82:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol","id":10516,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11322,"sourceUnit":3052,"src":"5022:99:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/N2MTokenCommon.sol","file":"./N2MTokenCommon.sol","id":10517,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11322,"sourceUnit":13619,"src":"5123:30:45","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10519,"name":"N2MTokenCommon","nameLocations":["5460:14:45"],"nodeType":"IdentifierPath","referencedDeclaration":13618,"src":"5460:14:45"},"id":10520,"nodeType":"InheritanceSpecifier","src":"5460:14:45"},{"baseName":{"id":10521,"name":"ERC1155Upgradeable","nameLocations":["5480:18:45"],"nodeType":"IdentifierPath","referencedDeclaration":2711,"src":"5480:18:45"},"id":10522,"nodeType":"InheritanceSpecifier","src":"5480:18:45"},{"baseName":{"id":10523,"name":"ERC1155SupplyUpgradeable","nameLocations":["5504:24:45"],"nodeType":"IdentifierPath","referencedDeclaration":3051,"src":"5504:24:45"},"id":10524,"nodeType":"InheritanceSpecifier","src":"5504:24:45"}],"canonicalName":"N2MERC1155","contractDependencies":[],"contractKind":"contract","documentation":{"id":10518,"nodeType":"StructuredDocumentation","src":"5155:278:45","text":"@title NFTs2Me.com Smart Contracts for ERC-1155.\n @author The NFTs2Me Team\n @notice Read our terms of service\n @custom:security-contact security@nfts2me.com\n @custom:terms-of-service https://nfts2me.com/terms-of-service/\n @custom:website https://nfts2me.com/"},"fullyImplemented":true,"id":11321,"linearizedBaseContracts":[11321,3051,2711,3066,2874,7293,13618,258,10512,13634,424,8,1297,7305,726,6489,1466],"name":"N2MERC1155","nameLocation":"5442:10:45","nodeType":"ContractDefinition","nodes":[{"body":{"id":10536,"nodeType":"Block","src":"5703:2:45","statements":[]},"documentation":{"id":10525,"nodeType":"StructuredDocumentation","src":"5535:48:45","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":10537,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10532,"name":"libraryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10527,"src":"5671:14:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10533,"name":"factoryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10529,"src":"5687:14:45","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":10534,"kind":"baseConstructorSpecifier","modifierName":{"id":10531,"name":"N2MTokenCommon","nameLocations":["5656:14:45"],"nodeType":"IdentifierPath","referencedDeclaration":13618,"src":"5656:14:45"},"nodeType":"ModifierInvocation","src":"5656:46:45"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10527,"mutability":"mutable","name":"libraryAddress","nameLocation":"5608:14:45","nodeType":"VariableDeclaration","scope":10537,"src":"5600:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10526,"name":"address","nodeType":"ElementaryTypeName","src":"5600:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10529,"mutability":"mutable","name":"factoryAddress","nameLocation":"5640:14:45","nodeType":"VariableDeclaration","scope":10537,"src":"5624:30:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":10528,"name":"address","nodeType":"ElementaryTypeName","src":"5624:15:45","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"5599:56:45"},"returnParameters":{"id":10535,"nodeType":"ParameterList","parameters":[],"src":"5703:0:45"},"scope":11321,"src":"5588:117:45","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"constant":false,"id":10539,"mutability":"mutable","name":"_name","nameLocation":"5726:5:45","nodeType":"VariableDeclaration","scope":11321,"src":"5711:20:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":10538,"name":"string","nodeType":"ElementaryTypeName","src":"5711:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"baseFunctions":[92],"constant":false,"functionSelector":"95d89b41","id":10542,"mutability":"mutable","name":"symbol","nameLocation":"5760:6:45","nodeType":"VariableDeclaration","overrides":{"id":10541,"nodeType":"OverrideSpecifier","overrides":[],"src":"5751:8:45"},"scope":11321,"src":"5737:29:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":10540,"name":"string","nodeType":"ElementaryTypeName","src":"5737:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"constant":false,"id":10546,"mutability":"mutable","name":"_balances","nameLocation":"5809:9:45","nodeType":"VariableDeclaration","scope":11321,"src":"5773:45:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":10545,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10543,"name":"address","nodeType":"ElementaryTypeName","src":"5781:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5773:27:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10544,"name":"uint256","nodeType":"ElementaryTypeName","src":"5792:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"baseFunctions":[80],"body":{"id":10728,"nodeType":"Block","src":"6351:1614:45","statements":[{"expression":{"id":10580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10578,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10539,"src":"6362:5:45","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10579,"name":"tokenName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10549,"src":"6370:9:45","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"6362:17:45","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":10581,"nodeType":"ExpressionStatement","src":"6362:17:45"},{"expression":{"id":10584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10582,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10542,"src":"6389:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10583,"name":"tokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10551,"src":"6398:11:45","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"6389:20:45","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":10585,"nodeType":"ExpressionStatement","src":"6389:20:45"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":10588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10586,"name":"iTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10565,"src":"6424:12:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6440:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6424:17:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10592,"nodeType":"IfStatement","src":"6420:64:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10589,"name":"TotalSupplyMustBeGreaterThanZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"6450:32:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6450:34:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10591,"nodeType":"RevertStatement","src":"6443:41:45"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":10595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10593,"name":"baseURICIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"6498:14:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6516:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6498:19:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":10598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10596,"name":"placeholderImageCIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10557,"src":"6521:23:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6548:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6521:28:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6498:51:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10603,"nodeType":"IfStatement","src":"6494:107:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10600,"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":319,"src":"6558:41:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6558:43:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10602,"nodeType":"RevertStatement","src":"6551:50:45"}},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":10606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10604,"name":"iRoyaltyFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10567,"src":"6615:11:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35305f3030","id":10605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6629:5:45","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"50_00"},"src":"6615:19:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10610,"nodeType":"IfStatement","src":"6611:51:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10607,"name":"RoyaltyFeeTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"6643:17:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6643:19:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10609,"nodeType":"RevertStatement","src":"6636:26:45"}},{"expression":{"id":10613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10611,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"6673:15:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10612,"name":"iTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10565,"src":"6691:12:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6673:30:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":10614,"nodeType":"ExpressionStatement","src":"6673:30:45"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":10617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10615,"name":"baseURICIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"6717:14:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6735:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6717:19:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10641,"nodeType":"Block","src":"7023:57:45","statements":[{"expression":{"id":10639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10637,"name":"_baseURICIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10280,"src":"7037:15:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10638,"name":"baseURICIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"7055:14:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7037:32:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":10640,"nodeType":"ExpressionStatement","src":"7037:32:45"}]},"id":10642,"nodeType":"IfStatement","src":"6713:367:45","trueBody":{"id":10636,"nodeType":"Block","src":"6738:279:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":10620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10618,"name":"placeholderImageCIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10557,"src":"6756:23:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6783:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6756:28:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10634,"nodeType":"Block","src":"6924:83:45","statements":[{"expression":{"id":10632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10630,"name":"_placeholderImageCIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10282,"src":"6942:24:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10631,"name":"placeholderImageCIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10557,"src":"6969:23:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6942:50:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":10633,"nodeType":"ExpressionStatement","src":"6942:50:45"}]},"id":10635,"nodeType":"IfStatement","src":"6752:255:45","trueBody":{"id":10629,"nodeType":"Block","src":"6786:132:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":10624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10621,"name":"iMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10572,"src":"6808:12:45","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":10622,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"6824:11:45","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":10623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6836:10:45","memberName":"CUSTOM_URI","nodeType":"MemberAccess","referencedDeclaration":411,"src":"6824:22:45","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"6808:38:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10628,"nodeType":"IfStatement","src":"6804:99:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10625,"name":"NoBaseURINorPlaceholderSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":322,"src":"6875:26:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6875:28:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10627,"nodeType":"RevertStatement","src":"6868:35:45"}}]}}]}},{"expression":{"id":10645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10643,"name":"_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10301,"src":"7090:10:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10644,"name":"iMintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10553,"src":"7103:10:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7090:23:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10646,"nodeType":"ExpressionStatement","src":"7090:23:45"},{"expression":{"id":10649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10647,"name":"_royaltyFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10345,"src":"7123:11:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10648,"name":"iRoyaltyFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10567,"src":"7137:11:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"7123:25:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":10650,"nodeType":"ExpressionStatement","src":"7123:25:45"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":10654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10651,"name":"iMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10572,"src":"7162:12:45","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":10652,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"7178:11:45","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":10653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7190:10:45","memberName":"SEQUENTIAL","nodeType":"MemberAccess","referencedDeclaration":408,"src":"7178:22:45","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"7162:38:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10660,"nodeType":"IfStatement","src":"7158:96:45","trueBody":{"id":10659,"nodeType":"Block","src":"7202:52:45","statements":[{"expression":{"id":10657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10655,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"7216:12:45","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10656,"name":"iMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10572,"src":"7231:12:45","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"7216:27:45","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"id":10658,"nodeType":"ExpressionStatement","src":"7216:27:45"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10661,"name":"iErc20PaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10563,"src":"7267:20:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7299:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7291:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10662,"name":"address","nodeType":"ElementaryTypeName","src":"7291:7:45","typeDescriptions":{}}},"id":10665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7291:10:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7267:34:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10676,"nodeType":"IfStatement","src":"7263:144:45","trueBody":{"id":10675,"nodeType":"Block","src":"7303:104:45","statements":[{"expression":{"id":10669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10667,"name":"_isERC20Payment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10351,"src":"7317:15:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":10668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7335:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7317:22:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10670,"nodeType":"ExpressionStatement","src":"7317:22:45"},{"expression":{"id":10673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10671,"name":"_erc20PaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10315,"src":"7353:20:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10672,"name":"iErc20PaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10563,"src":"7376:20:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7353:43:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10674,"nodeType":"ExpressionStatement","src":"7353:43:45"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10677,"name":"soulboundCollection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"7420:19:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"74727565","id":10678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7443:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7420:27:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10685,"nodeType":"IfStatement","src":"7416:85:45","trueBody":{"id":10684,"nodeType":"Block","src":"7449:52:45","statements":[{"expression":{"id":10682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10680,"name":"_soulboundCollection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10353,"src":"7463:20:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":10681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7486:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7463:27:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10683,"nodeType":"ExpressionStatement","src":"7463:27:45"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10686,"name":"revenueAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"7515:16:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress calldata[] calldata"}},"id":10687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7532:6:45","memberName":"length","nodeType":"MemberAccess","src":"7515:23:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7541:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7515:27:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10727,"nodeType":"IfStatement","src":"7511:447:45","trueBody":{"id":10726,"nodeType":"Block","src":"7544:414:45","statements":[{"assignments":[10691],"declarations":[{"constant":false,"id":10691,"mutability":"mutable","name":"revenuePercentageTotal","nameLocation":"7566:22:45","nodeType":"VariableDeclaration","scope":10726,"src":"7558:30:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10690,"name":"uint256","nodeType":"ElementaryTypeName","src":"7558:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10692,"nodeType":"VariableDeclarationStatement","src":"7558:30:45"},{"body":{"id":10711,"nodeType":"Block","src":"7649:160:45","statements":[{"expression":{"id":10705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10700,"name":"revenuePercentageTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10691,"src":"7667:22:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":10701,"name":"revenueAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"7693:16:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress calldata[] calldata"}},"id":10703,"indexExpression":{"id":10702,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10694,"src":"7710:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7693:19:45","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueAddress_$394_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress calldata"}},"id":10704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7713:10:45","memberName":"percentage","nodeType":"MemberAccess","referencedDeclaration":393,"src":"7693:30:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"7667:56:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10706,"nodeType":"ExpressionStatement","src":"7667:56:45"},{"id":10710,"nodeType":"UncheckedBlock","src":"7741:54:45","statements":[{"expression":{"id":10708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7773:3:45","subExpression":{"id":10707,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10694,"src":"7775:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10709,"nodeType":"ExpressionStatement","src":"7773:3:45"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10696,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10694,"src":"7618:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10697,"name":"revenueAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"7622:16:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress calldata[] calldata"}},"id":10698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7639:6:45","memberName":"length","nodeType":"MemberAccess","src":"7622:23:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7618:27:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10712,"initializationExpression":{"assignments":[10694],"declarations":[{"constant":false,"id":10694,"mutability":"mutable","name":"i","nameLocation":"7615:1:45","nodeType":"VariableDeclaration","scope":10712,"src":"7607:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10693,"name":"uint256","nodeType":"ElementaryTypeName","src":"7607:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10695,"nodeType":"VariableDeclarationStatement","src":"7607:9:45"},"nodeType":"ForStatement","src":"7602:207:45"},{"expression":{"id":10715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10713,"name":"_revenueInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10294,"src":"7822:12:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_storage_$dyn_storage","typeString":"struct IN2M_ERCStorage.RevenueAddress storage ref[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10714,"name":"revenueAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10561,"src":"7837:16:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress calldata[] calldata"}},"src":"7822:31:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_storage_$dyn_storage","typeString":"struct IN2M_ERCStorage.RevenueAddress storage ref[] storage ref"}},"id":10716,"nodeType":"ExpressionStatement","src":"7822:31:45"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10717,"name":"revenuePercentageTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10691,"src":"7871:22:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130305f3030","id":10718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7896:6:45","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"100_00"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10719,"name":"N2M_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10266,"src":"7905:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7896:16:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7871:41:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10725,"nodeType":"IfStatement","src":"7867:80:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10722,"name":"InvalidRevenuePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":328,"src":"7921:24:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7921:26:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10724,"nodeType":"RevertStatement","src":"7914:33:45"}}]}}]},"documentation":{"id":10547,"nodeType":"StructuredDocumentation","src":"5825:75:45","text":"@notice To be called to create the collection. Can only be called once."},"functionSelector":"5066e5c2","id":10729,"implemented":true,"kind":"function","modifiers":[{"id":10576,"kind":"modifierInvocation","modifierName":{"id":10575,"name":"initializer","nameLocations":["6339:11:45"],"nodeType":"IdentifierPath","referencedDeclaration":1368,"src":"6339:11:45"},"nodeType":"ModifierInvocation","src":"6339:11:45"}],"name":"initialize","nameLocation":"5914:10:45","nodeType":"FunctionDefinition","overrides":{"id":10574,"nodeType":"OverrideSpecifier","overrides":[],"src":"6330:8:45"},"parameters":{"id":10573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10549,"mutability":"mutable","name":"tokenName","nameLocation":"5948:9:45","nodeType":"VariableDeclaration","scope":10729,"src":"5934:23:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10548,"name":"string","nodeType":"ElementaryTypeName","src":"5934:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10551,"mutability":"mutable","name":"tokenSymbol","nameLocation":"5981:11:45","nodeType":"VariableDeclaration","scope":10729,"src":"5967:25:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10550,"name":"string","nodeType":"ElementaryTypeName","src":"5967:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10553,"mutability":"mutable","name":"iMintPrice","nameLocation":"6010:10:45","nodeType":"VariableDeclaration","scope":10729,"src":"6002:18:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10552,"name":"uint256","nodeType":"ElementaryTypeName","src":"6002:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10555,"mutability":"mutable","name":"baseURICIDHash","nameLocation":"6038:14:45","nodeType":"VariableDeclaration","scope":10729,"src":"6030:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10554,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6030:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10557,"mutability":"mutable","name":"placeholderImageCIDHash","nameLocation":"6070:23:45","nodeType":"VariableDeclaration","scope":10729,"src":"6062:31:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10556,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6062:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10561,"mutability":"mutable","name":"revenueAddresses","nameLocation":"6129:16:45","nodeType":"VariableDeclaration","scope":10729,"src":"6103:42:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress[]"},"typeName":{"baseType":{"id":10559,"nodeType":"UserDefinedTypeName","pathNode":{"id":10558,"name":"RevenueAddress","nameLocations":["6103:14:45"],"nodeType":"IdentifierPath","referencedDeclaration":394,"src":"6103:14:45"},"referencedDeclaration":394,"src":"6103:14:45","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueAddress_$394_storage_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress"}},"id":10560,"nodeType":"ArrayTypeName","src":"6103:16:45","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_storage_$dyn_storage_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress[]"}},"visibility":"internal"},{"constant":false,"id":10563,"mutability":"mutable","name":"iErc20PaymentAddress","nameLocation":"6163:20:45","nodeType":"VariableDeclaration","scope":10729,"src":"6155:28:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10562,"name":"address","nodeType":"ElementaryTypeName","src":"6155:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10565,"mutability":"mutable","name":"iTotalSupply","nameLocation":"6200:12:45","nodeType":"VariableDeclaration","scope":10729,"src":"6193:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10564,"name":"uint32","nodeType":"ElementaryTypeName","src":"6193:6:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":10567,"mutability":"mutable","name":"iRoyaltyFee","nameLocation":"6229:11:45","nodeType":"VariableDeclaration","scope":10729,"src":"6222:18:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10566,"name":"uint16","nodeType":"ElementaryTypeName","src":"6222:6:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":10569,"mutability":"mutable","name":"soulboundCollection","nameLocation":"6255:19:45","nodeType":"VariableDeclaration","scope":10729,"src":"6250:24:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10568,"name":"bool","nodeType":"ElementaryTypeName","src":"6250:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10572,"mutability":"mutable","name":"iMintingType","nameLocation":"6296:12:45","nodeType":"VariableDeclaration","scope":10729,"src":"6284:24:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"typeName":{"id":10571,"nodeType":"UserDefinedTypeName","pathNode":{"id":10570,"name":"MintingType","nameLocations":["6284:11:45"],"nodeType":"IdentifierPath","referencedDeclaration":412,"src":"6284:11:45"},"referencedDeclaration":412,"src":"6284:11:45","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"visibility":"internal"}],"src":"5924:390:45"},"returnParameters":{"id":10577,"nodeType":"ParameterList","parameters":[],"src":"6351:0:45"},"scope":11321,"src":"5905:2060:45","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[12013],"body":{"id":10742,"nodeType":"Block","src":"8119:36:45","statements":[{"expression":{"arguments":[{"id":10739,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10732,"src":"8140:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10738,"name":"uri","nodeType":"Identifier","overloadedDeclarations":[10764],"referencedDeclaration":10764,"src":"8136:3:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) view returns (string memory)"}},"id":10740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8136:12:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":10737,"id":10741,"nodeType":"Return","src":"8129:19:45"}]},"documentation":{"id":10730,"nodeType":"StructuredDocumentation","src":"7971:27:45","text":"@notice alias for `uri`"},"functionSelector":"c87b56dd","id":10743,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"8012:8:45","nodeType":"FunctionDefinition","overrides":{"id":10734,"nodeType":"OverrideSpecifier","overrides":[],"src":"8074:8:45"},"parameters":{"id":10733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10732,"mutability":"mutable","name":"tokenId","nameLocation":"8029:7:45","nodeType":"VariableDeclaration","scope":10743,"src":"8021:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10731,"name":"uint256","nodeType":"ElementaryTypeName","src":"8021:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8020:17:45"},"returnParameters":{"id":10737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10743,"src":"8100:13:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10735,"name":"string","nodeType":"ElementaryTypeName","src":"8100:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8099:15:45"},"scope":11321,"src":"8003:152:45","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1571],"body":{"id":10763,"nodeType":"Block","src":"8422:72:45","statements":[{"expression":{"arguments":[{"id":10760,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10746,"src":"8479:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"id":10756,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8459:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_N2MERC1155_$11321","typeString":"contract N2MERC1155"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_N2MERC1155_$11321","typeString":"contract N2MERC1155"}],"id":10755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8451:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10754,"name":"address","nodeType":"ElementaryTypeName","src":"8451:7:45","typeDescriptions":{}}},"id":10757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8451:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10753,"name":"IN2MLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11961,"src":"8439:11:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IN2MLibrary_$11961_$","typeString":"type(contract IN2MLibrary)"}},"id":10758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8439:26:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IN2MLibrary_$11961","typeString":"contract IN2MLibrary"}},"id":10759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8466:12:45","memberName":"tokenURIImpl","nodeType":"MemberAccess","referencedDeclaration":11960,"src":"8439:39:45","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) view external returns (string memory)"}},"id":10761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8439:48:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":10752,"id":10762,"nodeType":"Return","src":"8432:55:45"}]},"documentation":{"id":10744,"nodeType":"StructuredDocumentation","src":"8161:125:45","text":"@notice tokenURI of the given token\n @param tokenId of the token to ask for\n @return tokenURI for `tokenId`"},"functionSelector":"0e89341c","id":10764,"implemented":true,"kind":"function","modifiers":[],"name":"uri","nameLocation":"8300:3:45","nodeType":"FunctionDefinition","overrides":{"id":10749,"nodeType":"OverrideSpecifier","overrides":[{"id":10748,"name":"ERC1155Upgradeable","nameLocations":["8366:18:45"],"nodeType":"IdentifierPath","referencedDeclaration":2711,"src":"8366:18:45"}],"src":"8357:28:45"},"parameters":{"id":10747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10746,"mutability":"mutable","name":"tokenId","nameLocation":"8312:7:45","nodeType":"VariableDeclaration","scope":10764,"src":"8304:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10745,"name":"uint256","nodeType":"ElementaryTypeName","src":"8304:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8303:17:45"},"returnParameters":{"id":10752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10764,"src":"8403:13:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10750,"name":"string","nodeType":"ElementaryTypeName","src":"8403:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8402:15:45"},"scope":11321,"src":"8291:203:45","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[11999],"body":{"id":10776,"nodeType":"Block","src":"8572:39:45","statements":[{"expression":{"arguments":[{"id":10773,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10766,"src":"8596:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10772,"name":"exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2928,"src":"8589:6:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":10774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8589:15:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10771,"id":10775,"nodeType":"Return","src":"8582:22:45"}]},"id":10777,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"8509:7:45","nodeType":"FunctionDefinition","overrides":{"id":10768,"nodeType":"OverrideSpecifier","overrides":[],"src":"8548:8:45"},"parameters":{"id":10767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10766,"mutability":"mutable","name":"tokenId","nameLocation":"8525:7:45","nodeType":"VariableDeclaration","scope":10777,"src":"8517:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10765,"name":"uint256","nodeType":"ElementaryTypeName","src":"8517:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8516:17:45"},"returnParameters":{"id":10771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10770,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10777,"src":"8566:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10769,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8565:6:45"},"scope":11321,"src":"8500:111:45","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[11992],"body":{"id":10794,"nodeType":"Block","src":"8679:48:45","statements":[{"expression":{"arguments":[{"id":10788,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10779,"src":"8701:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10781,"src":"8705:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":10790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8714:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"","id":10791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8717:2:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":10785,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"8689:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC1155_$11321_$","typeString":"type(contract super N2MERC1155)"}},"id":10787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8695:5:45","memberName":"_mint","nodeType":"MemberAccess","referencedDeclaration":2140,"src":"8689:11:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,uint256,bytes memory)"}},"id":10792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8689:31:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10793,"nodeType":"ExpressionStatement","src":"8689:31:45"}]},"id":10795,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8626:5:45","nodeType":"FunctionDefinition","overrides":{"id":10783,"nodeType":"OverrideSpecifier","overrides":[],"src":"8670:8:45"},"parameters":{"id":10782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10779,"mutability":"mutable","name":"to","nameLocation":"8640:2:45","nodeType":"VariableDeclaration","scope":10795,"src":"8632:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10778,"name":"address","nodeType":"ElementaryTypeName","src":"8632:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10781,"mutability":"mutable","name":"tokenId","nameLocation":"8652:7:45","nodeType":"VariableDeclaration","scope":10795,"src":"8644:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10780,"name":"uint256","nodeType":"ElementaryTypeName","src":"8644:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8631:29:45"},"returnParameters":{"id":10784,"nodeType":"ParameterList","parameters":[],"src":"8679:0:45"},"scope":11321,"src":"8617:110:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[12005],"body":{"id":10804,"nodeType":"Block","src":"8862:29:45","statements":[{"expression":{"id":10802,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10539,"src":"8879:5:45","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":10801,"id":10803,"nodeType":"Return","src":"8872:12:45"}]},"documentation":{"id":10796,"nodeType":"StructuredDocumentation","src":"8733:63:45","text":"@notice Collection name\n @return the collection name"},"functionSelector":"06fdde03","id":10805,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"8810:4:45","nodeType":"FunctionDefinition","overrides":{"id":10798,"nodeType":"OverrideSpecifier","overrides":[],"src":"8829:8:45"},"parameters":{"id":10797,"nodeType":"ParameterList","parameters":[],"src":"8814:2:45"},"returnParameters":{"id":10801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10800,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10805,"src":"8847:13:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10799,"name":"string","nodeType":"ElementaryTypeName","src":"8847:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8846:15:45"},"scope":11321,"src":"8801:90:45","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[12020],"body":{"id":10843,"nodeType":"Block","src":"9133:199:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10814,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10808,"src":"9147:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9164:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9156:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10815,"name":"address","nodeType":"ElementaryTypeName","src":"9156:7:45","typeDescriptions":{}}},"id":10818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9156:10:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9147:19:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10823,"nodeType":"IfStatement","src":"9143:33:45","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10820,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9168:6:45","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":10821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9168:8:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10822,"nodeType":"ExpressionStatement","src":"9168:8:45"}},{"expression":{"id":10828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10824,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10812,"src":"9186:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":10825,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10546,"src":"9196:9:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10827,"indexExpression":{"id":10826,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10808,"src":"9206:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9196:16:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9186:26:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10829,"nodeType":"ExpressionStatement","src":"9186:26:45"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":10833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10830,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"9226:12:45","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10831,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"9242:11:45","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":10832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9254:6:45","memberName":"RANDOM","nodeType":"MemberAccess","referencedDeclaration":409,"src":"9242:18:45","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"9226:34:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10842,"nodeType":"IfStatement","src":"9222:104:45","trueBody":{"id":10841,"nodeType":"Block","src":"9262:64:45","statements":[{"expression":{"id":10839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10834,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10812,"src":"9276:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":10835,"name":"_randomTickets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"9287:14:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_RandomTicket_$389_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.RandomTicket storage ref)"}},"id":10837,"indexExpression":{"id":10836,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10808,"src":"9302:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9287:21:45","typeDescriptions":{"typeIdentifier":"t_struct$_RandomTicket_$389_storage","typeString":"struct IN2M_ERCStorage.RandomTicket storage ref"}},"id":10838,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9309:6:45","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":386,"src":"9287:28:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9276:39:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10840,"nodeType":"ExpressionStatement","src":"9276:39:45"}]}}]},"documentation":{"id":10806,"nodeType":"StructuredDocumentation","src":"8897:150:45","text":"@notice Balance of a given address for ERC-1155 (non-standard).\n @param owner to ask for the balance\n @return balance of the `owner`"},"functionSelector":"70a08231","id":10844,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"9061:9:45","nodeType":"FunctionDefinition","overrides":{"id":10810,"nodeType":"OverrideSpecifier","overrides":[],"src":"9098:8:45"},"parameters":{"id":10809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10808,"mutability":"mutable","name":"owner","nameLocation":"9079:5:45","nodeType":"VariableDeclaration","scope":10844,"src":"9071:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10807,"name":"address","nodeType":"ElementaryTypeName","src":"9071:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9070:15:45"},"returnParameters":{"id":10813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10812,"mutability":"mutable","name":"balance","nameLocation":"9124:7:45","nodeType":"VariableDeclaration","scope":10844,"src":"9116:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10811,"name":"uint256","nodeType":"ElementaryTypeName","src":"9116:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9115:17:45"},"scope":11321,"src":"9052:280:45","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[12237],"body":{"id":10921,"nodeType":"Block","src":"9409:525:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10852,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10848,"src":"9423:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":10853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9433:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9423:11:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10919,"nodeType":"Block","src":"9540:388:45","statements":[{"assignments":[10869],"declarations":[{"constant":false,"id":10869,"mutability":"mutable","name":"ids","nameLocation":"9571:3:45","nodeType":"VariableDeclaration","scope":10919,"src":"9554:20:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10867,"name":"uint256","nodeType":"ElementaryTypeName","src":"9554:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10868,"nodeType":"ArrayTypeName","src":"9554:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10875,"initialValue":{"arguments":[{"id":10873,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10848,"src":"9591:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9577:13:45","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":10870,"name":"uint256","nodeType":"ElementaryTypeName","src":"9581:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10871,"nodeType":"ArrayTypeName","src":"9581:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":10874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9577:21:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9554:44:45"},{"assignments":[10880],"declarations":[{"constant":false,"id":10880,"mutability":"mutable","name":"amounts","nameLocation":"9629:7:45","nodeType":"VariableDeclaration","scope":10919,"src":"9612:24:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10878,"name":"uint256","nodeType":"ElementaryTypeName","src":"9612:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10879,"nodeType":"ArrayTypeName","src":"9612:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10886,"initialValue":{"arguments":[{"id":10884,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10848,"src":"9653:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9639:13:45","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":10881,"name":"uint256","nodeType":"ElementaryTypeName","src":"9643:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10882,"nodeType":"ArrayTypeName","src":"9643:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":10885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9639:21:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9612:48:45"},{"body":{"id":10910,"nodeType":"Block","src":"9705:166:45","statements":[{"id":10909,"nodeType":"UncheckedBlock","src":"9723:134:45","statements":[{"expression":{"id":10898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10893,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10869,"src":"9755:3:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10895,"indexExpression":{"id":10894,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10888,"src":"9759:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9755:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9764:13:45","subExpression":{"id":10896,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"9766:11:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9755:22:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10899,"nodeType":"ExpressionStatement","src":"9755:22:45"},{"expression":{"id":10904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10900,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10880,"src":"9799:7:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10902,"indexExpression":{"id":10901,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10888,"src":"9807:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9799:10:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":10903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9812:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9799:14:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10905,"nodeType":"ExpressionStatement","src":"9799:14:45"},{"expression":{"id":10907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9835:3:45","subExpression":{"id":10906,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10888,"src":"9837:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10908,"nodeType":"ExpressionStatement","src":"9835:3:45"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10890,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10888,"src":"9691:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10891,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10848,"src":"9695:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9691:10:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10911,"initializationExpression":{"assignments":[10888],"declarations":[{"constant":false,"id":10888,"mutability":"mutable","name":"i","nameLocation":"9688:1:45","nodeType":"VariableDeclaration","scope":10911,"src":"9680:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10887,"name":"uint256","nodeType":"ElementaryTypeName","src":"9680:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10889,"nodeType":"VariableDeclarationStatement","src":"9680:9:45"},"nodeType":"ForStatement","src":"9675:196:45"},{"expression":{"arguments":[{"id":10913,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10846,"src":"9896:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10914,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10869,"src":"9900:3:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":10915,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10880,"src":"9905:7:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":10916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9914:2:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":10912,"name":"_mintBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2251,"src":"9885:10:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":10917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9885:32:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10918,"nodeType":"ExpressionStatement","src":"9885:32:45"}]},"id":10920,"nodeType":"IfStatement","src":"9419:509:45","trueBody":{"id":10864,"nodeType":"Block","src":"9436:98:45","statements":[{"id":10863,"nodeType":"UncheckedBlock","src":"9450:74:45","statements":[{"expression":{"arguments":[{"id":10856,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10846,"src":"9484:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9488:13:45","subExpression":{"id":10857,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"9490:11:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"31","id":10859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9503:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"","id":10860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9506:2:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":10855,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[10795,2140],"referencedDeclaration":2140,"src":"9478:5:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,uint256,bytes memory)"}},"id":10861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9478:31:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10862,"nodeType":"ExpressionStatement","src":"9478:31:45"}]}]}}]},"id":10922,"implemented":true,"kind":"function","modifiers":[],"name":"_mintSequential","nameLocation":"9347:15:45","nodeType":"FunctionDefinition","overrides":{"id":10850,"nodeType":"OverrideSpecifier","overrides":[],"src":"9400:8:45"},"parameters":{"id":10849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10846,"mutability":"mutable","name":"to","nameLocation":"9371:2:45","nodeType":"VariableDeclaration","scope":10922,"src":"9363:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10845,"name":"address","nodeType":"ElementaryTypeName","src":"9363:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10848,"mutability":"mutable","name":"amount","nameLocation":"9383:6:45","nodeType":"VariableDeclaration","scope":10922,"src":"9375:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10847,"name":"uint256","nodeType":"ElementaryTypeName","src":"9375:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9362:28:45"},"returnParameters":{"id":10851,"nodeType":"ParameterList","parameters":[],"src":"9409:0:45"},"scope":11321,"src":"9338:596:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[12739],"body":{"id":11003,"nodeType":"Block","src":"10039:520:45","statements":[{"assignments":[10932],"declarations":[{"constant":false,"id":10932,"mutability":"mutable","name":"amount","nameLocation":"10056:6:45","nodeType":"VariableDeclaration","scope":11003,"src":"10049:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10931,"name":"uint32","nodeType":"ElementaryTypeName","src":"10049:6:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":10938,"initialValue":{"arguments":[{"expression":{"id":10935,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10927,"src":"10072:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10081:6:45","memberName":"length","nodeType":"MemberAccess","src":"10072:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10065:6:45","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":10933,"name":"uint32","nodeType":"ElementaryTypeName","src":"10065:6:45","typeDescriptions":{}}},"id":10937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10065:23:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"10049:39:45"},{"expression":{"id":10941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10939,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"10098:11:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":10940,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10932,"src":"10113:6:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"10098:21:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":10942,"nodeType":"ExpressionStatement","src":"10098:21:45"},{"assignments":[10947],"declarations":[{"constant":false,"id":10947,"mutability":"mutable","name":"amounts","nameLocation":"10146:7:45","nodeType":"VariableDeclaration","scope":11003,"src":"10129:24:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10945,"name":"uint256","nodeType":"ElementaryTypeName","src":"10129:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10946,"nodeType":"ArrayTypeName","src":"10129:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10953,"initialValue":{"arguments":[{"id":10951,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10932,"src":"10170:6:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":10950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"10156:13:45","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":10948,"name":"uint256","nodeType":"ElementaryTypeName","src":"10160:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10949,"nodeType":"ArrayTypeName","src":"10160:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":10952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10156:21:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"10129:48:45"},{"body":{"id":10994,"nodeType":"Block","src":"10218:288:45","statements":[{"assignments":[10961],"declarations":[{"constant":false,"id":10961,"mutability":"mutable","name":"tokenId","nameLocation":"10240:7:45","nodeType":"VariableDeclaration","scope":10994,"src":"10232:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10960,"name":"uint256","nodeType":"ElementaryTypeName","src":"10232:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10965,"initialValue":{"baseExpression":{"id":10962,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10927,"src":"10250:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10964,"indexExpression":{"id":10963,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"10259:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10250:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10232:29:45"},{"expression":{"id":10970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10966,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10947,"src":"10275:7:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10968,"indexExpression":{"id":10967,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"10283:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10275:10:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":10969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10288:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10275:14:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10971,"nodeType":"ExpressionStatement","src":"10275:14:45"},{"condition":{"arguments":[{"id":10973,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10961,"src":"10315:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10972,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[10777],"referencedDeclaration":10777,"src":"10307:7:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":10974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10307:16:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10978,"nodeType":"IfStatement","src":"10303:49:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10975,"name":"TokenAlreadyMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"10332:18:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10332:20:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10977,"nodeType":"RevertStatement","src":"10325:27:45"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10979,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10961,"src":"10370:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":10980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10381:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10370:12:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10982,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10961,"src":"10386:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":10983,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"10396:15:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"10386:25:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10370:41:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10989,"nodeType":"IfStatement","src":"10366:70:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10986,"name":"InvalidTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":280,"src":"10420:14:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10420:16:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10988,"nodeType":"RevertStatement","src":"10413:23:45"}},{"id":10993,"nodeType":"UncheckedBlock","src":"10450:46:45","statements":[{"expression":{"id":10991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"10478:3:45","subExpression":{"id":10990,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"10480:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10992,"nodeType":"ExpressionStatement","src":"10478:3:45"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10957,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"10204:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10958,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10932,"src":"10208:6:45","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"10204:10:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10995,"initializationExpression":{"assignments":[10955],"declarations":[{"constant":false,"id":10955,"mutability":"mutable","name":"i","nameLocation":"10201:1:45","nodeType":"VariableDeclaration","scope":10995,"src":"10193:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10954,"name":"uint256","nodeType":"ElementaryTypeName","src":"10193:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10956,"nodeType":"VariableDeclarationStatement","src":"10193:9:45"},"nodeType":"ForStatement","src":"10188:318:45"},{"expression":{"arguments":[{"id":10997,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10924,"src":"10526:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10998,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10927,"src":"10530:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":10999,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10947,"src":"10540:7:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":11000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10549:2:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":10996,"name":"_mintBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2251,"src":"10515:10:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":11001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10515:37:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11002,"nodeType":"ExpressionStatement","src":"10515:37:45"}]},"id":11004,"implemented":true,"kind":"function","modifiers":[],"name":"_mintSpecify","nameLocation":"9949:12:45","nodeType":"FunctionDefinition","overrides":{"id":10929,"nodeType":"OverrideSpecifier","overrides":[],"src":"10026:8:45"},"parameters":{"id":10928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10924,"mutability":"mutable","name":"to","nameLocation":"9970:2:45","nodeType":"VariableDeclaration","scope":11004,"src":"9962:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10923,"name":"address","nodeType":"ElementaryTypeName","src":"9962:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10927,"mutability":"mutable","name":"tokenIds","nameLocation":"9991:8:45","nodeType":"VariableDeclaration","scope":11004,"src":"9974:25:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10925,"name":"uint256","nodeType":"ElementaryTypeName","src":"9974:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10926,"nodeType":"ArrayTypeName","src":"9974:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9961:39:45"},"returnParameters":{"id":10930,"nodeType":"ParameterList","parameters":[],"src":"10039:0:45"},"scope":11321,"src":"9940:619:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2530,3045],"body":{"id":11109,"nodeType":"Block","src":"10824:660:45","statements":[{"assignments":[11025],"declarations":[{"constant":false,"id":11025,"mutability":"mutable","name":"length","nameLocation":"10842:6:45","nodeType":"VariableDeclaration","scope":11109,"src":"10834:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11024,"name":"uint256","nodeType":"ElementaryTypeName","src":"10834:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11028,"initialValue":{"expression":{"id":11026,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11013,"src":"10851:3:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10855:6:45","memberName":"length","nodeType":"MemberAccess","src":"10851:10:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10834:27:45"},{"body":{"id":11082,"nodeType":"Block","src":"10901:372:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11035,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11008,"src":"10920:4:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":11038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10936:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10928:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11036,"name":"address","nodeType":"ElementaryTypeName","src":"10928:7:45","typeDescriptions":{}}},"id":11039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10928:10:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10920:18:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11061,"nodeType":"IfStatement","src":"10916:190:45","trueBody":{"id":11060,"nodeType":"Block","src":"10940:166:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11041,"name":"_soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"10962:10:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":11045,"indexExpression":{"baseExpression":{"id":11042,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11013,"src":"10973:3:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11044,"indexExpression":{"id":11043,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11030,"src":"10977:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10973:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10962:18:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":11046,"name":"_soulboundCollection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10353,"src":"10984:20:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10962:42:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11051,"nodeType":"IfStatement","src":"10958:85:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11048,"name":"NonTransferrableSoulboundNFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"11013:28:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11013:30:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11050,"nodeType":"RevertStatement","src":"11006:37:45"}},{"expression":{"id":11058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11052,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10546,"src":"11062:9:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11054,"indexExpression":{"id":11053,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11008,"src":"11072:4:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11062:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"baseExpression":{"id":11055,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11016,"src":"11081:7:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11057,"indexExpression":{"id":11056,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11030,"src":"11089:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11081:10:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11062:29:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11059,"nodeType":"ExpressionStatement","src":"11062:29:45"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11062,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11010,"src":"11124:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":11065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11138:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11064,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11130:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11063,"name":"address","nodeType":"ElementaryTypeName","src":"11130:7:45","typeDescriptions":{}}},"id":11066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11130:10:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11124:16:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11077,"nodeType":"IfStatement","src":"11120:83:45","trueBody":{"id":11076,"nodeType":"Block","src":"11142:61:45","statements":[{"expression":{"id":11074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11068,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10546,"src":"11161:9:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11070,"indexExpression":{"id":11069,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11010,"src":"11171:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11161:13:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":11071,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11016,"src":"11178:7:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11073,"indexExpression":{"id":11072,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11030,"src":"11186:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11178:10:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11161:27:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11075,"nodeType":"ExpressionStatement","src":"11161:27:45"}]}},{"id":11081,"nodeType":"UncheckedBlock","src":"11217:46:45","statements":[{"expression":{"id":11079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11245:3:45","subExpression":{"id":11078,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11030,"src":"11247:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11080,"nodeType":"ExpressionStatement","src":"11245:3:45"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11032,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11030,"src":"10887:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11033,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11025,"src":"10891:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10887:10:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11083,"initializationExpression":{"assignments":[11030],"declarations":[{"constant":false,"id":11030,"mutability":"mutable","name":"i","nameLocation":"10884:1:45","nodeType":"VariableDeclaration","scope":11083,"src":"10876:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11029,"name":"uint256","nodeType":"ElementaryTypeName","src":"10876:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11031,"nodeType":"VariableDeclarationStatement","src":"10876:9:45"},"nodeType":"ForStatement","src":"10871:402:45"},{"expression":{"arguments":[{"id":11087,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11006,"src":"11310:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11088,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11008,"src":"11320:4:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11089,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11010,"src":"11326:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11090,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11013,"src":"11330:3:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":11091,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11016,"src":"11335:7:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":11092,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11018,"src":"11344:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11084,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"11283:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC1155_$11321_$","typeString":"type(contract super N2MERC1155)"}},"id":11086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11289:20:45","memberName":"_beforeTokenTransfer","nodeType":"MemberAccess","referencedDeclaration":3045,"src":"11283:26:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":11093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11283:66:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11094,"nodeType":"ExpressionStatement","src":"11283:66:45"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":11097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11095,"name":"_maxPerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"11364:14:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":11096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11382:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11364:19:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11108,"nodeType":"IfStatement","src":"11360:117:45","trueBody":{"id":11107,"nodeType":"Block","src":"11385:92:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11010,"src":"11414:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11098,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[10844,1599],"referencedDeclaration":10844,"src":"11404:9:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":11100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11404:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":11101,"name":"_maxPerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"11420:14:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11404:30:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11106,"nodeType":"IfStatement","src":"11400:66:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11103,"name":"MaxPerAddressExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":343,"src":"11443:21:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11443:23:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11105,"nodeType":"RevertStatement","src":"11436:30:45"}}]}}]},"id":11110,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"10574:20:45","nodeType":"FunctionDefinition","overrides":{"id":11022,"nodeType":"OverrideSpecifier","overrides":[{"id":11020,"name":"ERC1155Upgradeable","nameLocations":["10778:18:45"],"nodeType":"IdentifierPath","referencedDeclaration":2711,"src":"10778:18:45"},{"id":11021,"name":"ERC1155SupplyUpgradeable","nameLocations":["10798:24:45"],"nodeType":"IdentifierPath","referencedDeclaration":3051,"src":"10798:24:45"}],"src":"10769:54:45"},"parameters":{"id":11019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11006,"mutability":"mutable","name":"operator","nameLocation":"10612:8:45","nodeType":"VariableDeclaration","scope":11110,"src":"10604:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11005,"name":"address","nodeType":"ElementaryTypeName","src":"10604:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11008,"mutability":"mutable","name":"from","nameLocation":"10638:4:45","nodeType":"VariableDeclaration","scope":11110,"src":"10630:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11007,"name":"address","nodeType":"ElementaryTypeName","src":"10630:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11010,"mutability":"mutable","name":"to","nameLocation":"10660:2:45","nodeType":"VariableDeclaration","scope":11110,"src":"10652:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11009,"name":"address","nodeType":"ElementaryTypeName","src":"10652:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11013,"mutability":"mutable","name":"ids","nameLocation":"10689:3:45","nodeType":"VariableDeclaration","scope":11110,"src":"10672:20:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11011,"name":"uint256","nodeType":"ElementaryTypeName","src":"10672:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11012,"nodeType":"ArrayTypeName","src":"10672:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11016,"mutability":"mutable","name":"amounts","nameLocation":"10719:7:45","nodeType":"VariableDeclaration","scope":11110,"src":"10702:24:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11014,"name":"uint256","nodeType":"ElementaryTypeName","src":"10702:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11015,"nodeType":"ArrayTypeName","src":"10702:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11018,"mutability":"mutable","name":"data","nameLocation":"10749:4:45","nodeType":"VariableDeclaration","scope":11110,"src":"10736:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11017,"name":"bytes","nodeType":"ElementaryTypeName","src":"10736:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10594:165:45"},"returnParameters":{"id":11023,"nodeType":"ParameterList","parameters":[],"src":"10824:0:45"},"scope":11321,"src":"10565:919:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1559,7304],"body":{"id":11134,"nodeType":"Block","src":"12009:128:45","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11121,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11113,"src":"12037:11:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":11123,"name":"IERC2981Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1297,"src":"12057:19:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC2981Upgradeable_$1297_$","typeString":"type(contract IERC2981Upgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC2981Upgradeable_$1297_$","typeString":"type(contract IERC2981Upgradeable)"}],"id":11122,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12052:4:45","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12052:25:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC2981Upgradeable_$1297","typeString":"type(contract IERC2981Upgradeable)"}},"id":11125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12078:11:45","memberName":"interfaceId","nodeType":"MemberAccess","src":"12052:37:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"12037:52:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":11129,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11113,"src":"12117:11:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":11127,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"12093:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC1155_$11321_$","typeString":"type(contract super N2MERC1155)"}},"id":11128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12099:17:45","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1559,"src":"12093:23:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":11130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12093:36:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12037:92:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":11132,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12026:104:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11120,"id":11133,"nodeType":"Return","src":"12019:111:45"}]},"documentation":{"id":11111,"nodeType":"StructuredDocumentation","src":"11490:355:45","text":"@notice Query if a contract implements an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @dev Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\n @return `true` if the contract implements `interfaceId` and `interfaceId` is not 0xffffffff, `false` otherwise"},"functionSelector":"01ffc9a7","id":11135,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"11859:17:45","nodeType":"FunctionDefinition","overrides":{"id":11117,"nodeType":"OverrideSpecifier","overrides":[{"id":11115,"name":"ERC1155Upgradeable","nameLocations":["11942:18:45"],"nodeType":"IdentifierPath","referencedDeclaration":2711,"src":"11942:18:45"},{"id":11116,"name":"IERC165Upgradeable","nameLocations":["11962:18:45"],"nodeType":"IdentifierPath","referencedDeclaration":7305,"src":"11962:18:45"}],"src":"11933:48:45"},"parameters":{"id":11114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11113,"mutability":"mutable","name":"interfaceId","nameLocation":"11884:11:45","nodeType":"VariableDeclaration","scope":11135,"src":"11877:18:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11112,"name":"bytes4","nodeType":"ElementaryTypeName","src":"11877:6:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"11876:20:45"},"returnParameters":{"id":11120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11119,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11135,"src":"11999:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11118,"name":"bool","nodeType":"ElementaryTypeName","src":"11999:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11998:6:45"},"scope":11321,"src":"11850:287:45","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1680],"body":{"id":11154,"nodeType":"Block","src":"12588:60:45","statements":[{"expression":{"arguments":[{"id":11150,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11138,"src":"12622:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11151,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11140,"src":"12632:8:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11147,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"12598:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC1155_$11321_$","typeString":"type(contract super N2MERC1155)"}},"id":11149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12604:17:45","memberName":"setApprovalForAll","nodeType":"MemberAccess","referencedDeclaration":1680,"src":"12598:23:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":11152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12598:43:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11153,"nodeType":"ExpressionStatement","src":"12598:43:45"}]},"documentation":{"id":11136,"nodeType":"StructuredDocumentation","src":"12143:326:45","text":"@notice Enable or disable approval for a third party (\"operator\") to manage all of the caller's tokens.\n @dev MUST emit the ApprovalForAll event on success.\n @param operator Address to add to the set of authorized operators\n @param approved True if the operator is approved, false to revoke approval"},"functionSelector":"a22cb465","id":11155,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":11144,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11138,"src":"12578:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11145,"kind":"modifierInvocation","modifierName":{"id":11143,"name":"onlyAllowedOperatorApproval","nameLocations":["12550:27:45"],"nodeType":"IdentifierPath","referencedDeclaration":13538,"src":"12550:27:45"},"nodeType":"ModifierInvocation","src":"12550:37:45"}],"name":"setApprovalForAll","nameLocation":"12483:17:45","nodeType":"FunctionDefinition","overrides":{"id":11142,"nodeType":"OverrideSpecifier","overrides":[],"src":"12541:8:45"},"parameters":{"id":11141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11138,"mutability":"mutable","name":"operator","nameLocation":"12509:8:45","nodeType":"VariableDeclaration","scope":11155,"src":"12501:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11137,"name":"address","nodeType":"ElementaryTypeName","src":"12501:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11140,"mutability":"mutable","name":"approved","nameLocation":"12524:8:45","nodeType":"VariableDeclaration","scope":11155,"src":"12519:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11139,"name":"bool","nodeType":"ElementaryTypeName","src":"12519:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12500:33:45"},"returnParameters":{"id":11146,"nodeType":"ParameterList","parameters":[],"src":"12588:0:45"},"scope":11321,"src":"12474:174:45","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1698],"body":{"id":11184,"nodeType":"Block","src":"13040:169:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11166,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11160,"src":"13055:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11167,"name":"N2M_CONDUIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10245,"src":"13067:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13055:23:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11171,"nodeType":"IfStatement","src":"13051:40:45","trueBody":{"expression":{"hexValue":"74727565","id":11169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13087:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11165,"id":11170,"nodeType":"Return","src":"13080:11:45"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11172,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11160,"src":"13105:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11173,"name":"OPENSEA_CONDUIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10239,"src":"13117:15:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13105:27:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11177,"nodeType":"IfStatement","src":"13101:44:45","trueBody":{"expression":{"hexValue":"74727565","id":11175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13141:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11165,"id":11176,"nodeType":"Return","src":"13134:11:45"}},{"expression":{"arguments":[{"id":11180,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11158,"src":"13186:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11181,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11160,"src":"13193:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11178,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"13163:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC1155_$11321_$","typeString":"type(contract super N2MERC1155)"}},"id":11179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13169:16:45","memberName":"isApprovedForAll","nodeType":"MemberAccess","referencedDeclaration":1698,"src":"13163:22:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":11182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13163:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11165,"id":11183,"nodeType":"Return","src":"13156:46:45"}]},"documentation":{"id":11156,"nodeType":"StructuredDocumentation","src":"12658:250:45","text":"@notice Queries the approval status of an operator for a given owner.\n @param owner The owner of the tokens\n @param operator Address of authorized operator\n @return True if the operator is approved, false if not"},"functionSelector":"e985e9c5","id":11185,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"12922:16:45","nodeType":"FunctionDefinition","overrides":{"id":11162,"nodeType":"OverrideSpecifier","overrides":[],"src":"13008:8:45"},"parameters":{"id":11161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11158,"mutability":"mutable","name":"owner","nameLocation":"12947:5:45","nodeType":"VariableDeclaration","scope":11185,"src":"12939:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11157,"name":"address","nodeType":"ElementaryTypeName","src":"12939:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11160,"mutability":"mutable","name":"operator","nameLocation":"12962:8:45","nodeType":"VariableDeclaration","scope":11185,"src":"12954:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11159,"name":"address","nodeType":"ElementaryTypeName","src":"12954:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12938:33:45"},"returnParameters":{"id":11165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11185,"src":"13030:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11163,"name":"bool","nodeType":"ElementaryTypeName","src":"13030:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13029:6:45"},"scope":11321,"src":"12913:296:45","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1736],"body":{"id":11211,"nodeType":"Block","src":"13398:67:45","statements":[{"expression":{"arguments":[{"id":11204,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11187,"src":"13431:4:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11205,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11189,"src":"13437:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11206,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11191,"src":"13441:2:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11207,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11193,"src":"13445:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11208,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11195,"src":"13453:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11201,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"13408:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC1155_$11321_$","typeString":"type(contract super N2MERC1155)"}},"id":11203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13414:16:45","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":1736,"src":"13408:22:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint256,bytes memory)"}},"id":11209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13408:50:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11210,"nodeType":"ExpressionStatement","src":"13408:50:45"}]},"functionSelector":"f242432a","id":11212,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":11199,"kind":"modifierInvocation","modifierName":{"id":11198,"name":"onlyAllowedOperator","nameLocations":["13376:19:45"],"nodeType":"IdentifierPath","referencedDeclaration":13528,"src":"13376:19:45"},"nodeType":"ModifierInvocation","src":"13376:21:45"}],"name":"safeTransferFrom","nameLocation":"13224:16:45","nodeType":"FunctionDefinition","overrides":{"id":11197,"nodeType":"OverrideSpecifier","overrides":[],"src":"13367:8:45"},"parameters":{"id":11196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11187,"mutability":"mutable","name":"from","nameLocation":"13258:4:45","nodeType":"VariableDeclaration","scope":11212,"src":"13250:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11186,"name":"address","nodeType":"ElementaryTypeName","src":"13250:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11189,"mutability":"mutable","name":"to","nameLocation":"13280:2:45","nodeType":"VariableDeclaration","scope":11212,"src":"13272:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11188,"name":"address","nodeType":"ElementaryTypeName","src":"13272:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11191,"mutability":"mutable","name":"id","nameLocation":"13300:2:45","nodeType":"VariableDeclaration","scope":11212,"src":"13292:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11190,"name":"uint256","nodeType":"ElementaryTypeName","src":"13292:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11193,"mutability":"mutable","name":"amount","nameLocation":"13320:6:45","nodeType":"VariableDeclaration","scope":11212,"src":"13312:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11192,"name":"uint256","nodeType":"ElementaryTypeName","src":"13312:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11195,"mutability":"mutable","name":"data","nameLocation":"13349:4:45","nodeType":"VariableDeclaration","scope":11212,"src":"13336:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11194,"name":"bytes","nodeType":"ElementaryTypeName","src":"13336:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13240:119:45"},"returnParameters":{"id":11200,"nodeType":"ParameterList","parameters":[],"src":"13398:0:45"},"scope":11321,"src":"13215:250:45","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1776],"body":{"id":11240,"nodeType":"Block","src":"13679:74:45","statements":[{"expression":{"arguments":[{"id":11233,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11214,"src":"13717:4:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11234,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11216,"src":"13723:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11235,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"13727:3:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":11236,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11222,"src":"13732:7:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":11237,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11224,"src":"13741:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11230,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"13689:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC1155_$11321_$","typeString":"type(contract super N2MERC1155)"}},"id":11232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13695:21:45","memberName":"safeBatchTransferFrom","nodeType":"MemberAccess","referencedDeclaration":1776,"src":"13689:27:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":11238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13689:57:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11239,"nodeType":"ExpressionStatement","src":"13689:57:45"}]},"functionSelector":"2eb2c2d6","id":11241,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":11228,"kind":"modifierInvocation","modifierName":{"id":11227,"name":"onlyAllowedOperator","nameLocations":["13657:19:45"],"nodeType":"IdentifierPath","referencedDeclaration":13528,"src":"13657:19:45"},"nodeType":"ModifierInvocation","src":"13657:21:45"}],"name":"safeBatchTransferFrom","nameLocation":"13480:21:45","nodeType":"FunctionDefinition","overrides":{"id":11226,"nodeType":"OverrideSpecifier","overrides":[],"src":"13648:8:45"},"parameters":{"id":11225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11214,"mutability":"mutable","name":"from","nameLocation":"13519:4:45","nodeType":"VariableDeclaration","scope":11241,"src":"13511:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11213,"name":"address","nodeType":"ElementaryTypeName","src":"13511:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11216,"mutability":"mutable","name":"to","nameLocation":"13541:2:45","nodeType":"VariableDeclaration","scope":11241,"src":"13533:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11215,"name":"address","nodeType":"ElementaryTypeName","src":"13533:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11219,"mutability":"mutable","name":"ids","nameLocation":"13570:3:45","nodeType":"VariableDeclaration","scope":11241,"src":"13553:20:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11217,"name":"uint256","nodeType":"ElementaryTypeName","src":"13553:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11218,"nodeType":"ArrayTypeName","src":"13553:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11222,"mutability":"mutable","name":"amounts","nameLocation":"13600:7:45","nodeType":"VariableDeclaration","scope":11241,"src":"13583:24:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11220,"name":"uint256","nodeType":"ElementaryTypeName","src":"13583:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11221,"nodeType":"ArrayTypeName","src":"13583:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11224,"mutability":"mutable","name":"data","nameLocation":"13630:4:45","nodeType":"VariableDeclaration","scope":11241,"src":"13617:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11223,"name":"bytes","nodeType":"ElementaryTypeName","src":"13617:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13501:139:45"},"returnParameters":{"id":11229,"nodeType":"ParameterList","parameters":[],"src":"13679:0:45"},"scope":11321,"src":"13471:282:45","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11319,"nodeType":"Block","src":"14015:485:45","statements":[{"expression":{"id":11258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11255,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11251,"src":"14025:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":11256,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"14039:5:45","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14045:6:45","memberName":"number","nodeType":"MemberAccess","src":"14039:12:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14025:26:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11259,"nodeType":"ExpressionStatement","src":"14025:26:45"},{"expression":{"id":11263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11260,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11253,"src":"14061:14:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":11261,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"14078:5:45","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14084:9:45","memberName":"timestamp","nodeType":"MemberAccess","src":"14078:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14061:32:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11264,"nodeType":"ExpressionStatement","src":"14061:32:45"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11265,"name":"endId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11245,"src":"14108:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":11266,"name":"startId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11243,"src":"14117:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14108:16:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11317,"nodeType":"Block","src":"14407:87:45","statements":[{"assignments":[11311],"declarations":[{"constant":false,"id":11311,"mutability":"mutable","name":"emptyArray","nameLocation":"14438:10:45","nodeType":"VariableDeclaration","scope":11317,"src":"14421:27:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11309,"name":"uint256","nodeType":"ElementaryTypeName","src":"14421:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11310,"nodeType":"ArrayTypeName","src":"14421:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":11312,"nodeType":"VariableDeclarationStatement","src":"14421:27:45"},{"expression":{"id":11315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11313,"name":"supplies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11249,"src":"14462:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11314,"name":"emptyArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11311,"src":"14473:10:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"14462:21:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11316,"nodeType":"ExpressionStatement","src":"14462:21:45"}]},"id":11318,"nodeType":"IfStatement","src":"14104:390:45","trueBody":{"id":11306,"nodeType":"Block","src":"14126:275:45","statements":[{"assignments":[11269],"declarations":[{"constant":false,"id":11269,"mutability":"mutable","name":"total","nameLocation":"14148:5:45","nodeType":"VariableDeclaration","scope":11306,"src":"14140:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11268,"name":"uint256","nodeType":"ElementaryTypeName","src":"14140:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11275,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":11270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14156:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11271,"name":"endId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11245,"src":"14160:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14156:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11273,"name":"startId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11243,"src":"14168:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14156:19:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14140:35:45"},{"id":11305,"nodeType":"UncheckedBlock","src":"14189:202:45","statements":[{"expression":{"id":11282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11276,"name":"supplies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11249,"src":"14217:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11280,"name":"total","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11269,"src":"14242:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11279,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14228:13:45","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11277,"name":"uint256","nodeType":"ElementaryTypeName","src":"14232:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11278,"nodeType":"ArrayTypeName","src":"14232:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14228:20:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"14217:31:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11283,"nodeType":"ExpressionStatement","src":"14217:31:45"},{"body":{"id":11303,"nodeType":"Block","src":"14298:79:45","statements":[{"expression":{"id":11301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11293,"name":"supplies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11249,"src":"14320:8:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11295,"indexExpression":{"id":11294,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11285,"src":"14329:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14320:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11297,"name":"startId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11243,"src":"14346:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11298,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11285,"src":"14356:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14346:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11296,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"14334:11:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":11300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14334:24:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14320:38:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11302,"nodeType":"ExpressionStatement","src":"14320:38:45"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11287,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11285,"src":"14282:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11288,"name":"total","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11269,"src":"14286:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14282:9:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11304,"initializationExpression":{"assignments":[11285],"declarations":[{"constant":false,"id":11285,"mutability":"mutable","name":"i","nameLocation":"14279:1:45","nodeType":"VariableDeclaration","scope":11304,"src":"14271:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11284,"name":"uint256","nodeType":"ElementaryTypeName","src":"14271:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11286,"nodeType":"VariableDeclarationStatement","src":"14271:9:45"},"loopExpression":{"expression":{"id":11291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14293:3:45","subExpression":{"id":11290,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11285,"src":"14293:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11292,"nodeType":"ExpressionStatement","src":"14293:3:45"},"nodeType":"ForStatement","src":"14266:111:45"}]}]}}]},"functionSelector":"798f4794","id":11320,"implemented":true,"kind":"function","modifiers":[],"name":"getSupplies","nameLocation":"13802:11:45","nodeType":"FunctionDefinition","parameters":{"id":11246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11243,"mutability":"mutable","name":"startId","nameLocation":"13822:7:45","nodeType":"VariableDeclaration","scope":11320,"src":"13814:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11242,"name":"uint256","nodeType":"ElementaryTypeName","src":"13814:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11245,"mutability":"mutable","name":"endId","nameLocation":"13839:5:45","nodeType":"VariableDeclaration","scope":11320,"src":"13831:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11244,"name":"uint256","nodeType":"ElementaryTypeName","src":"13831:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13813:32:45"},"returnParameters":{"id":11254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11249,"mutability":"mutable","name":"supplies","nameLocation":"13923:8:45","nodeType":"VariableDeclaration","scope":11320,"src":"13906:25:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11247,"name":"uint256","nodeType":"ElementaryTypeName","src":"13906:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11248,"nodeType":"ArrayTypeName","src":"13906:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11251,"mutability":"mutable","name":"blockNumber","nameLocation":"13953:11:45","nodeType":"VariableDeclaration","scope":11320,"src":"13945:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11250,"name":"uint256","nodeType":"ElementaryTypeName","src":"13945:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11253,"mutability":"mutable","name":"blockTimestamp","nameLocation":"13986:14:45","nodeType":"VariableDeclaration","scope":11320,"src":"13978:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11252,"name":"uint256","nodeType":"ElementaryTypeName","src":"13978:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13892:118:45"},"scope":11321,"src":"13793:707:45","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11322,"src":"5433:9075:45","usedErrors":[271,274,277,280,283,286,289,292,295,298,301,304,307,310,313,316,319,322,325,328,331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376,379,384]}],"src":"4913:9596:45"},"id":45},"contracts/N2MERC721.sol":{"ast":{"absolutePath":"contracts/N2MERC721.sol","exportedSymbols":{"AddressUpgradeable":[5076],"CheckpointsUpgradeable":[6447],"ContextUpgradeable":[6489],"CountersUpgradeable":[6563],"ECDSAUpgradeable":[7099],"EIP712Upgradeable":[7249],"ERC165Upgradeable":[7293],"ERC721URIStorageUpgradeable":[4692],"ERC721Upgradeable":[4413],"ERC721VotesUpgradeable":[4765],"IERC165Upgradeable":[7305],"IERC20":[10056],"IERC20PermitUpgradeable":[3180],"IERC20Upgradeable":[3144],"IERC2981Upgradeable":[1297],"IERC721MetadataUpgradeable":[4792],"IERC721ReceiverUpgradeable":[4431],"IERC721Upgradeable":[4547],"IN2MCrossFactory":[43],"IN2MLibrary":[11961],"IN2M_ERCBase":[258],"IN2M_ERCStorage":[424],"IOperatorFilterRegistry":[613],"IVotesUpgradeable":[804],"Initializable":[1466],"MathUpgradeable":[8170],"N2MCommonStorage":[10512],"N2MERC721":[11939],"N2MTokenCommon":[13618],"N2MVersion":[13634],"NFTOwnableUpgradeable":[726],"Readme":[8],"SafeCastUpgradeable":[9711],"SafeERC20Upgradeable":[3461],"StringsUpgradeable":[6738],"VotesUpgradeable":[1278]},"id":11940,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":11323,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:46"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol","id":11324,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11940,"sourceUnit":4414,"src":"4939:80:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","id":11325,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11940,"sourceUnit":7250,"src":"5020:86:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol","id":11326,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11940,"sourceUnit":4766,"src":"5107:96:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":11327,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11940,"sourceUnit":10057,"src":"5204:56:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/N2MTokenCommon.sol","file":"./N2MTokenCommon.sol","id":11328,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11940,"sourceUnit":13619,"src":"5262:30:46","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11330,"name":"N2MTokenCommon","nameLocations":["5597:14:46"],"nodeType":"IdentifierPath","referencedDeclaration":13618,"src":"5597:14:46"},"id":11331,"nodeType":"InheritanceSpecifier","src":"5597:14:46"},{"baseName":{"id":11332,"name":"ERC721Upgradeable","nameLocations":["5617:17:46"],"nodeType":"IdentifierPath","referencedDeclaration":4413,"src":"5617:17:46"},"id":11333,"nodeType":"InheritanceSpecifier","src":"5617:17:46"},{"baseName":{"id":11334,"name":"EIP712Upgradeable","nameLocations":["5640:17:46"],"nodeType":"IdentifierPath","referencedDeclaration":7249,"src":"5640:17:46"},"id":11335,"nodeType":"InheritanceSpecifier","src":"5640:17:46"},{"baseName":{"id":11336,"name":"ERC721VotesUpgradeable","nameLocations":["5663:22:46"],"nodeType":"IdentifierPath","referencedDeclaration":4765,"src":"5663:22:46"},"id":11337,"nodeType":"InheritanceSpecifier","src":"5663:22:46"}],"canonicalName":"N2MERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":11329,"nodeType":"StructuredDocumentation","src":"5294:277:46","text":"@title NFTs2Me.com Smart Contracts for ERC-721.\n @author The NFTs2Me Team\n @notice Read our terms of service\n @custom:security-contact security@nfts2me.com\n @custom:terms-of-service https://nfts2me.com/terms-of-service/\n @custom:website https://nfts2me.com/"},"fullyImplemented":true,"id":11939,"linearizedBaseContracts":[11939,4765,1278,7249,4413,4792,4547,7293,13618,258,10512,13634,424,8,1297,7305,726,6489,804,1466],"name":"N2MERC721","nameLocation":"5580:9:46","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[80],"body":{"id":11516,"nodeType":"Block","src":"6219:1603:46","statements":[{"expression":{"arguments":[{"id":11370,"name":"tokenName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11340,"src":"6243:9:46","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":11371,"name":"tokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11342,"src":"6254:11:46","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":11369,"name":"__ERC721_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3526,"src":"6229:13:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":11372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6229:37:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11373,"nodeType":"ExpressionStatement","src":"6229:37:46"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":11376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11374,"name":"iTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11356,"src":"6281:12:46","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6297:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6281:17:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11380,"nodeType":"IfStatement","src":"6277:64:46","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11377,"name":"TotalSupplyMustBeGreaterThanZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"6307:32:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6307:34:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11379,"nodeType":"RevertStatement","src":"6300:41:46"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11381,"name":"baseURICIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11346,"src":"6355:14:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":11382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6373:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6355:19:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11384,"name":"placeholderImageCIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11348,"src":"6378:23:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":11385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6405:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6378:28:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6355:51:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11391,"nodeType":"IfStatement","src":"6351:107:46","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11388,"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":319,"src":"6415:41:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6415:43:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11390,"nodeType":"RevertStatement","src":"6408:50:46"}},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":11394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11392,"name":"iRoyaltyFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11358,"src":"6472:11:46","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35305f3030","id":11393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6486:5:46","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"50_00"},"src":"6472:19:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11398,"nodeType":"IfStatement","src":"6468:51:46","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11395,"name":"RoyaltyFeeTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"6500:17:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6500:19:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11397,"nodeType":"RevertStatement","src":"6493:26:46"}},{"expression":{"id":11401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11399,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"6530:15:46","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11400,"name":"iTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11356,"src":"6548:12:46","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6530:30:46","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":11402,"nodeType":"ExpressionStatement","src":"6530:30:46"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11403,"name":"baseURICIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11346,"src":"6574:14:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6592:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6574:19:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11429,"nodeType":"Block","src":"6880:57:46","statements":[{"expression":{"id":11427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11425,"name":"_baseURICIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10280,"src":"6894:15:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11426,"name":"baseURICIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11346,"src":"6912:14:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6894:32:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":11428,"nodeType":"ExpressionStatement","src":"6894:32:46"}]},"id":11430,"nodeType":"IfStatement","src":"6570:367:46","trueBody":{"id":11424,"nodeType":"Block","src":"6595:279:46","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11406,"name":"placeholderImageCIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11348,"src":"6613:23:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6640:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6613:28:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11422,"nodeType":"Block","src":"6781:83:46","statements":[{"expression":{"id":11420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11418,"name":"_placeholderImageCIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10282,"src":"6799:24:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11419,"name":"placeholderImageCIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11348,"src":"6826:23:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6799:50:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":11421,"nodeType":"ExpressionStatement","src":"6799:50:46"}]},"id":11423,"nodeType":"IfStatement","src":"6609:255:46","trueBody":{"id":11417,"nodeType":"Block","src":"6643:132:46","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":11412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11409,"name":"iMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11363,"src":"6665:12:46","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":11410,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"6681:11:46","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":11411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6693:10:46","memberName":"CUSTOM_URI","nodeType":"MemberAccess","referencedDeclaration":411,"src":"6681:22:46","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"6665:38:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11416,"nodeType":"IfStatement","src":"6661:99:46","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11413,"name":"NoBaseURINorPlaceholderSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":322,"src":"6732:26:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6732:28:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11415,"nodeType":"RevertStatement","src":"6725:35:46"}}]}}]}},{"expression":{"id":11433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11431,"name":"_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10301,"src":"6947:10:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11432,"name":"iMintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11344,"src":"6960:10:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6947:23:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11434,"nodeType":"ExpressionStatement","src":"6947:23:46"},{"expression":{"id":11437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11435,"name":"_royaltyFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10345,"src":"6980:11:46","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11436,"name":"iRoyaltyFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11358,"src":"6994:11:46","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"6980:25:46","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":11438,"nodeType":"ExpressionStatement","src":"6980:25:46"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":11442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11439,"name":"iMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11363,"src":"7019:12:46","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":11440,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"7035:11:46","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":11441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7047:10:46","memberName":"SEQUENTIAL","nodeType":"MemberAccess","referencedDeclaration":408,"src":"7035:22:46","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"7019:38:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11448,"nodeType":"IfStatement","src":"7015:96:46","trueBody":{"id":11447,"nodeType":"Block","src":"7059:52:46","statements":[{"expression":{"id":11445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11443,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"7073:12:46","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11444,"name":"iMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11363,"src":"7088:12:46","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"7073:27:46","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"id":11446,"nodeType":"ExpressionStatement","src":"7073:27:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11449,"name":"iErc20PaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11354,"src":"7124:20:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":11452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7156:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7148:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11450,"name":"address","nodeType":"ElementaryTypeName","src":"7148:7:46","typeDescriptions":{}}},"id":11453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7148:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7124:34:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11464,"nodeType":"IfStatement","src":"7120:144:46","trueBody":{"id":11463,"nodeType":"Block","src":"7160:104:46","statements":[{"expression":{"id":11457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11455,"name":"_isERC20Payment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10351,"src":"7174:15:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7192:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7174:22:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11458,"nodeType":"ExpressionStatement","src":"7174:22:46"},{"expression":{"id":11461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11459,"name":"_erc20PaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10315,"src":"7210:20:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11460,"name":"iErc20PaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11354,"src":"7233:20:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7210:43:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11462,"nodeType":"ExpressionStatement","src":"7210:43:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11465,"name":"soulboundCollection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11360,"src":"7277:19:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"74727565","id":11466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7300:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7277:27:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11473,"nodeType":"IfStatement","src":"7273:85:46","trueBody":{"id":11472,"nodeType":"Block","src":"7306:52:46","statements":[{"expression":{"id":11470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11468,"name":"_soulboundCollection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10353,"src":"7320:20:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7343:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7320:27:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11471,"nodeType":"ExpressionStatement","src":"7320:27:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11474,"name":"revenueAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11352,"src":"7372:16:46","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress calldata[] calldata"}},"id":11475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7389:6:46","memberName":"length","nodeType":"MemberAccess","src":"7372:23:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7398:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7372:27:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11515,"nodeType":"IfStatement","src":"7368:447:46","trueBody":{"id":11514,"nodeType":"Block","src":"7401:414:46","statements":[{"assignments":[11479],"declarations":[{"constant":false,"id":11479,"mutability":"mutable","name":"revenuePercentageTotal","nameLocation":"7423:22:46","nodeType":"VariableDeclaration","scope":11514,"src":"7415:30:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11478,"name":"uint256","nodeType":"ElementaryTypeName","src":"7415:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11480,"nodeType":"VariableDeclarationStatement","src":"7415:30:46"},{"body":{"id":11499,"nodeType":"Block","src":"7506:160:46","statements":[{"expression":{"id":11493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11488,"name":"revenuePercentageTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"7524:22:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":11489,"name":"revenueAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11352,"src":"7550:16:46","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress calldata[] calldata"}},"id":11491,"indexExpression":{"id":11490,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"7567:1:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7550:19:46","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueAddress_$394_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress calldata"}},"id":11492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7570:10:46","memberName":"percentage","nodeType":"MemberAccess","referencedDeclaration":393,"src":"7550:30:46","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"7524:56:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11494,"nodeType":"ExpressionStatement","src":"7524:56:46"},{"id":11498,"nodeType":"UncheckedBlock","src":"7598:54:46","statements":[{"expression":{"id":11496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7630:3:46","subExpression":{"id":11495,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"7632:1:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11497,"nodeType":"ExpressionStatement","src":"7630:3:46"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11484,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"7475:1:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11485,"name":"revenueAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11352,"src":"7479:16:46","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress calldata[] calldata"}},"id":11486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7496:6:46","memberName":"length","nodeType":"MemberAccess","src":"7479:23:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7475:27:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11500,"initializationExpression":{"assignments":[11482],"declarations":[{"constant":false,"id":11482,"mutability":"mutable","name":"i","nameLocation":"7472:1:46","nodeType":"VariableDeclaration","scope":11500,"src":"7464:9:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11481,"name":"uint256","nodeType":"ElementaryTypeName","src":"7464:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11483,"nodeType":"VariableDeclarationStatement","src":"7464:9:46"},"nodeType":"ForStatement","src":"7459:207:46"},{"expression":{"id":11503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11501,"name":"_revenueInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10294,"src":"7679:12:46","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_storage_$dyn_storage","typeString":"struct IN2M_ERCStorage.RevenueAddress storage ref[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11502,"name":"revenueAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11352,"src":"7694:16:46","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress calldata[] calldata"}},"src":"7679:31:46","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_storage_$dyn_storage","typeString":"struct IN2M_ERCStorage.RevenueAddress storage ref[] storage ref"}},"id":11504,"nodeType":"ExpressionStatement","src":"7679:31:46"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11505,"name":"revenuePercentageTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"7728:22:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130305f3030","id":11506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7753:6:46","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"100_00"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11507,"name":"N2M_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10266,"src":"7762:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7753:16:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7728:41:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11513,"nodeType":"IfStatement","src":"7724:80:46","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11510,"name":"InvalidRevenuePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":328,"src":"7778:24:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7778:26:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11512,"nodeType":"RevertStatement","src":"7771:33:46"}}]}}]},"documentation":{"id":11338,"nodeType":"StructuredDocumentation","src":"5693:75:46","text":"@notice To be called to create the collection. Can only be called once."},"functionSelector":"5066e5c2","id":11517,"implemented":true,"kind":"function","modifiers":[{"id":11367,"kind":"modifierInvocation","modifierName":{"id":11366,"name":"initializer","nameLocations":["6207:11:46"],"nodeType":"IdentifierPath","referencedDeclaration":1368,"src":"6207:11:46"},"nodeType":"ModifierInvocation","src":"6207:11:46"}],"name":"initialize","nameLocation":"5782:10:46","nodeType":"FunctionDefinition","overrides":{"id":11365,"nodeType":"OverrideSpecifier","overrides":[],"src":"6198:8:46"},"parameters":{"id":11364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11340,"mutability":"mutable","name":"tokenName","nameLocation":"5816:9:46","nodeType":"VariableDeclaration","scope":11517,"src":"5802:23:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11339,"name":"string","nodeType":"ElementaryTypeName","src":"5802:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":11342,"mutability":"mutable","name":"tokenSymbol","nameLocation":"5849:11:46","nodeType":"VariableDeclaration","scope":11517,"src":"5835:25:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11341,"name":"string","nodeType":"ElementaryTypeName","src":"5835:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":11344,"mutability":"mutable","name":"iMintPrice","nameLocation":"5878:10:46","nodeType":"VariableDeclaration","scope":11517,"src":"5870:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11343,"name":"uint256","nodeType":"ElementaryTypeName","src":"5870:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11346,"mutability":"mutable","name":"baseURICIDHash","nameLocation":"5906:14:46","nodeType":"VariableDeclaration","scope":11517,"src":"5898:22:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11345,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5898:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11348,"mutability":"mutable","name":"placeholderImageCIDHash","nameLocation":"5938:23:46","nodeType":"VariableDeclaration","scope":11517,"src":"5930:31:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11347,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5930:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11352,"mutability":"mutable","name":"revenueAddresses","nameLocation":"5997:16:46","nodeType":"VariableDeclaration","scope":11517,"src":"5971:42:46","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress[]"},"typeName":{"baseType":{"id":11350,"nodeType":"UserDefinedTypeName","pathNode":{"id":11349,"name":"RevenueAddress","nameLocations":["5971:14:46"],"nodeType":"IdentifierPath","referencedDeclaration":394,"src":"5971:14:46"},"referencedDeclaration":394,"src":"5971:14:46","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueAddress_$394_storage_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress"}},"id":11351,"nodeType":"ArrayTypeName","src":"5971:16:46","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$394_storage_$dyn_storage_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress[]"}},"visibility":"internal"},{"constant":false,"id":11354,"mutability":"mutable","name":"iErc20PaymentAddress","nameLocation":"6031:20:46","nodeType":"VariableDeclaration","scope":11517,"src":"6023:28:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11353,"name":"address","nodeType":"ElementaryTypeName","src":"6023:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11356,"mutability":"mutable","name":"iTotalSupply","nameLocation":"6068:12:46","nodeType":"VariableDeclaration","scope":11517,"src":"6061:19:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11355,"name":"uint32","nodeType":"ElementaryTypeName","src":"6061:6:46","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":11358,"mutability":"mutable","name":"iRoyaltyFee","nameLocation":"6097:11:46","nodeType":"VariableDeclaration","scope":11517,"src":"6090:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11357,"name":"uint16","nodeType":"ElementaryTypeName","src":"6090:6:46","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":11360,"mutability":"mutable","name":"soulboundCollection","nameLocation":"6123:19:46","nodeType":"VariableDeclaration","scope":11517,"src":"6118:24:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11359,"name":"bool","nodeType":"ElementaryTypeName","src":"6118:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11363,"mutability":"mutable","name":"iMintingType","nameLocation":"6164:12:46","nodeType":"VariableDeclaration","scope":11517,"src":"6152:24:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"typeName":{"id":11362,"nodeType":"UserDefinedTypeName","pathNode":{"id":11361,"name":"MintingType","nameLocations":["6152:11:46"],"nodeType":"IdentifierPath","referencedDeclaration":412,"src":"6152:11:46"},"referencedDeclaration":412,"src":"6152:11:46","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"visibility":"internal"}],"src":"5792:390:46"},"returnParameters":{"id":11368,"nodeType":"ParameterList","parameters":[],"src":"6219:0:46"},"scope":11939,"src":"5773:2049:46","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":11528,"nodeType":"Block","src":"7943:2:46","statements":[]},"id":11529,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":11524,"name":"libraryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11519,"src":"7911:14:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11525,"name":"factoryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11521,"src":"7927:14:46","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":11526,"kind":"baseConstructorSpecifier","modifierName":{"id":11523,"name":"N2MTokenCommon","nameLocations":["7896:14:46"],"nodeType":"IdentifierPath","referencedDeclaration":13618,"src":"7896:14:46"},"nodeType":"ModifierInvocation","src":"7896:46:46"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11519,"mutability":"mutable","name":"libraryAddress","nameLocation":"7848:14:46","nodeType":"VariableDeclaration","scope":11529,"src":"7840:22:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11518,"name":"address","nodeType":"ElementaryTypeName","src":"7840:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11521,"mutability":"mutable","name":"factoryAddress","nameLocation":"7880:14:46","nodeType":"VariableDeclaration","scope":11529,"src":"7864:30:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":11520,"name":"address","nodeType":"ElementaryTypeName","src":"7864:15:46","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"7839:56:46"},"returnParameters":{"id":11527,"nodeType":"ParameterList","parameters":[],"src":"7943:0:46"},"scope":11939,"src":"7828:117:46","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3686,12013],"body":{"id":11554,"nodeType":"Block","src":"8369:105:46","statements":[{"expression":{"arguments":[{"id":11541,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11532,"src":"8394:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11540,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4304,"src":"8379:14:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":11542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8379:23:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11543,"nodeType":"ExpressionStatement","src":"8379:23:46"},{"expression":{"arguments":[{"id":11551,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11532,"src":"8459:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"id":11547,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8439:4:46","typeDescriptions":{"typeIdentifier":"t_contract$_N2MERC721_$11939","typeString":"contract N2MERC721"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_N2MERC721_$11939","typeString":"contract N2MERC721"}],"id":11546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8431:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11545,"name":"address","nodeType":"ElementaryTypeName","src":"8431:7:46","typeDescriptions":{}}},"id":11548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8431:13:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11544,"name":"IN2MLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11961,"src":"8419:11:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IN2MLibrary_$11961_$","typeString":"type(contract IN2MLibrary)"}},"id":11549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8419:26:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IN2MLibrary_$11961","typeString":"contract IN2MLibrary"}},"id":11550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8446:12:46","memberName":"tokenURIImpl","nodeType":"MemberAccess","referencedDeclaration":11960,"src":"8419:39:46","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) view external returns (string memory)"}},"id":11552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8419:48:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":11539,"id":11553,"nodeType":"Return","src":"8412:55:46"}]},"documentation":{"id":11530,"nodeType":"StructuredDocumentation","src":"7951:262:46","text":"@notice A distinct Uniform Resource Identifier (URI) for a given asset.\n @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\n 3986. The URI may point to a JSON file that conforms to the \"ERC721\n Metadata JSON Schema\"."},"functionSelector":"c87b56dd","id":11555,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"8227:8:46","nodeType":"FunctionDefinition","overrides":{"id":11536,"nodeType":"OverrideSpecifier","overrides":[{"id":11534,"name":"N2MTokenCommon","nameLocations":["8298:14:46"],"nodeType":"IdentifierPath","referencedDeclaration":13618,"src":"8298:14:46"},{"id":11535,"name":"ERC721Upgradeable","nameLocations":["8314:17:46"],"nodeType":"IdentifierPath","referencedDeclaration":4413,"src":"8314:17:46"}],"src":"8289:43:46"},"parameters":{"id":11533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11532,"mutability":"mutable","name":"tokenId","nameLocation":"8244:7:46","nodeType":"VariableDeclaration","scope":11555,"src":"8236:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11531,"name":"uint256","nodeType":"ElementaryTypeName","src":"8236:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8235:17:46"},"returnParameters":{"id":11539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11538,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11555,"src":"8350:13:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11537,"name":"string","nodeType":"ElementaryTypeName","src":"8350:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8349:15:46"},"scope":11939,"src":"8218:256:46","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[3927,11999],"body":{"id":11570,"nodeType":"Block","src":"8623:46:46","statements":[{"expression":{"arguments":[{"id":11567,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11557,"src":"8654:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11565,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"8640:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8646:7:46","memberName":"_exists","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"8640:13:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":11568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8640:22:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11564,"id":11569,"nodeType":"Return","src":"8633:29:46"}]},"id":11571,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"8489:7:46","nodeType":"FunctionDefinition","overrides":{"id":11561,"nodeType":"OverrideSpecifier","overrides":[{"id":11559,"name":"ERC721Upgradeable","nameLocations":["8561:17:46"],"nodeType":"IdentifierPath","referencedDeclaration":4413,"src":"8561:17:46"},{"id":11560,"name":"N2MTokenCommon","nameLocations":["8580:14:46"],"nodeType":"IdentifierPath","referencedDeclaration":13618,"src":"8580:14:46"}],"src":"8552:43:46"},"parameters":{"id":11558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11557,"mutability":"mutable","name":"tokenId","nameLocation":"8505:7:46","nodeType":"VariableDeclaration","scope":11571,"src":"8497:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11556,"name":"uint256","nodeType":"ElementaryTypeName","src":"8497:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8496:17:46"},"returnParameters":{"id":11564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11571,"src":"8613:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11562,"name":"bool","nodeType":"ElementaryTypeName","src":"8613:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8612:6:46"},"scope":11939,"src":"8480:189:46","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[4082,11992],"body":{"id":11588,"nodeType":"Block","src":"8792:41:46","statements":[{"expression":{"arguments":[{"id":11584,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11573,"src":"8814:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11585,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11575,"src":"8818:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11581,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"8802:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8808:5:46","memberName":"_mint","nodeType":"MemberAccess","referencedDeclaration":4082,"src":"8802:11:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":11586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8802:24:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11587,"nodeType":"ExpressionStatement","src":"8802:24:46"}]},"id":11589,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8684:5:46","nodeType":"FunctionDefinition","overrides":{"id":11579,"nodeType":"OverrideSpecifier","overrides":[{"id":11577,"name":"ERC721Upgradeable","nameLocations":["8753:17:46"],"nodeType":"IdentifierPath","referencedDeclaration":4413,"src":"8753:17:46"},{"id":11578,"name":"N2MTokenCommon","nameLocations":["8772:14:46"],"nodeType":"IdentifierPath","referencedDeclaration":13618,"src":"8772:14:46"}],"src":"8744:43:46"},"parameters":{"id":11576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11573,"mutability":"mutable","name":"to","nameLocation":"8698:2:46","nodeType":"VariableDeclaration","scope":11589,"src":"8690:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11572,"name":"address","nodeType":"ElementaryTypeName","src":"8690:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11575,"mutability":"mutable","name":"tokenId","nameLocation":"8710:7:46","nodeType":"VariableDeclaration","scope":11589,"src":"8702:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11574,"name":"uint256","nodeType":"ElementaryTypeName","src":"8702:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8689:29:46"},"returnParameters":{"id":11580,"nodeType":"ParameterList","parameters":[],"src":"8792:0:46"},"scope":11939,"src":"8675:158:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3637,12005],"body":{"id":11602,"nodeType":"Block","src":"9048:36:46","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11598,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"9065:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9071:4:46","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":3637,"src":"9065:10:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":11600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9065:12:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":11597,"id":11601,"nodeType":"Return","src":"9058:19:46"}]},"documentation":{"id":11590,"nodeType":"StructuredDocumentation","src":"8839:72:46","text":"@notice A descriptive name for a collection of NFTs in this contract"},"functionSelector":"06fdde03","id":11603,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"8925:4:46","nodeType":"FunctionDefinition","overrides":{"id":11594,"nodeType":"OverrideSpecifier","overrides":[{"id":11592,"name":"ERC721Upgradeable","nameLocations":["8977:17:46"],"nodeType":"IdentifierPath","referencedDeclaration":4413,"src":"8977:17:46"},{"id":11593,"name":"N2MTokenCommon","nameLocations":["8996:14:46"],"nodeType":"IdentifierPath","referencedDeclaration":13618,"src":"8996:14:46"}],"src":"8968:43:46"},"parameters":{"id":11591,"nodeType":"ParameterList","parameters":[],"src":"8929:2:46"},"returnParameters":{"id":11597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11596,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11603,"src":"9029:13:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11595,"name":"string","nodeType":"ElementaryTypeName","src":"9029:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9028:15:46"},"scope":11939,"src":"8916:168:46","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4379],"body":{"id":11641,"nodeType":"Block","src":"9243:238:46","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11615,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11605,"src":"9270:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":11618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9286:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9278:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11616,"name":"address","nodeType":"ElementaryTypeName","src":"9278:7:46","typeDescriptions":{}}},"id":11619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9278:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9270:18:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11621,"name":"_soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"9305:10:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":11623,"indexExpression":{"id":11622,"name":"firstTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11609,"src":"9316:12:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9305:24:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":11624,"name":"_soulboundCollection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10353,"src":"9333:20:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9305:48:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":11626,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9304:50:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9270:84:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11631,"nodeType":"IfStatement","src":"9253:149:46","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11628,"name":"NonTransferrableSoulboundNFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"9372:28:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9372:30:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11630,"nodeType":"RevertStatement","src":"9365:37:46"}},{"expression":{"arguments":[{"id":11635,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11605,"src":"9440:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11636,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11607,"src":"9446:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11637,"name":"firstTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11609,"src":"9450:12:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11638,"name":"batchSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11611,"src":"9464:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11632,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"9413:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9419:20:46","memberName":"_beforeTokenTransfer","nodeType":"MemberAccess","referencedDeclaration":4379,"src":"9413:26:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":11639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9413:61:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11640,"nodeType":"ExpressionStatement","src":"9413:61:46"}]},"id":11642,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"9099:20:46","nodeType":"FunctionDefinition","overrides":{"id":11613,"nodeType":"OverrideSpecifier","overrides":[],"src":"9234:8:46"},"parameters":{"id":11612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11605,"mutability":"mutable","name":"from","nameLocation":"9137:4:46","nodeType":"VariableDeclaration","scope":11642,"src":"9129:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11604,"name":"address","nodeType":"ElementaryTypeName","src":"9129:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11607,"mutability":"mutable","name":"to","nameLocation":"9159:2:46","nodeType":"VariableDeclaration","scope":11642,"src":"9151:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11606,"name":"address","nodeType":"ElementaryTypeName","src":"9151:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11609,"mutability":"mutable","name":"firstTokenId","nameLocation":"9179:12:46","nodeType":"VariableDeclaration","scope":11642,"src":"9171:20:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11608,"name":"uint256","nodeType":"ElementaryTypeName","src":"9171:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11611,"mutability":"mutable","name":"batchSize","nameLocation":"9209:9:46","nodeType":"VariableDeclaration","scope":11642,"src":"9201:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11610,"name":"uint256","nodeType":"ElementaryTypeName","src":"9201:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9119:105:46"},"returnParameters":{"id":11614,"nodeType":"ParameterList","parameters":[],"src":"9243:0:46"},"scope":11939,"src":"9090:391:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4392,4745],"body":{"id":11679,"nodeType":"Block","src":"9682:204:46","statements":[{"expression":{"arguments":[{"id":11659,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11644,"src":"9718:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11660,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11646,"src":"9724:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11661,"name":"firstTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11648,"src":"9728:12:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11662,"name":"batchSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11650,"src":"9742:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11656,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"9692:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9698:19:46","memberName":"_afterTokenTransfer","nodeType":"MemberAccess","referencedDeclaration":4745,"src":"9692:25:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":11663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9692:60:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11664,"nodeType":"ExpressionStatement","src":"9692:60:46"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":11667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11665,"name":"_maxPerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"9767:14:46","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":11666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9785:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9767:19:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11678,"nodeType":"IfStatement","src":"9763:117:46","trueBody":{"id":11677,"nodeType":"Block","src":"9788:92:46","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11669,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11646,"src":"9817:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11668,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[11777],"referencedDeclaration":11777,"src":"9807:9:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":11670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9807:13:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":11671,"name":"_maxPerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"9823:14:46","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"9807:30:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11676,"nodeType":"IfStatement","src":"9803:66:46","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11673,"name":"MaxPerAddressExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":343,"src":"9846:21:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9846:23:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11675,"nodeType":"RevertStatement","src":"9839:30:46"}}]}}]},"id":11680,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"9496:19:46","nodeType":"FunctionDefinition","overrides":{"id":11654,"nodeType":"OverrideSpecifier","overrides":[{"id":11652,"name":"ERC721Upgradeable","nameLocations":["9639:17:46"],"nodeType":"IdentifierPath","referencedDeclaration":4413,"src":"9639:17:46"},{"id":11653,"name":"ERC721VotesUpgradeable","nameLocations":["9658:22:46"],"nodeType":"IdentifierPath","referencedDeclaration":4765,"src":"9658:22:46"}],"src":"9630:51:46"},"parameters":{"id":11651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11644,"mutability":"mutable","name":"from","nameLocation":"9533:4:46","nodeType":"VariableDeclaration","scope":11680,"src":"9525:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11643,"name":"address","nodeType":"ElementaryTypeName","src":"9525:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11646,"mutability":"mutable","name":"to","nameLocation":"9555:2:46","nodeType":"VariableDeclaration","scope":11680,"src":"9547:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11645,"name":"address","nodeType":"ElementaryTypeName","src":"9547:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11648,"mutability":"mutable","name":"firstTokenId","nameLocation":"9575:12:46","nodeType":"VariableDeclaration","scope":11680,"src":"9567:20:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11647,"name":"uint256","nodeType":"ElementaryTypeName","src":"9567:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11650,"mutability":"mutable","name":"batchSize","nameLocation":"9605:9:46","nodeType":"VariableDeclaration","scope":11680,"src":"9597:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11649,"name":"uint256","nodeType":"ElementaryTypeName","src":"9597:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9515:105:46"},"returnParameters":{"id":11655,"nodeType":"ParameterList","parameters":[],"src":"9682:0:46"},"scope":11939,"src":"9487:399:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4149],"body":{"id":11705,"nodeType":"Block","src":"9981:153:46","statements":[{"expression":{"arguments":[{"id":11690,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11682,"src":"10003:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11687,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"9991:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9997:5:46","memberName":"_burn","nodeType":"MemberAccess","referencedDeclaration":4149,"src":"9991:11:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":11691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9991:20:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11692,"nodeType":"ExpressionStatement","src":"9991:20:46"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":11697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11693,"name":"_customURICIDHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10332,"src":"10025:19:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":11695,"indexExpression":{"id":11694,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11682,"src":"10045:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10025:28:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":11696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10057:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10025:33:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11704,"nodeType":"IfStatement","src":"10021:99:46","trueBody":{"id":11703,"nodeType":"Block","src":"10060:60:46","statements":[{"expression":{"id":11701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10074:35:46","subExpression":{"baseExpression":{"id":11698,"name":"_customURICIDHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10332,"src":"10081:19:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":11700,"indexExpression":{"id":11699,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11682,"src":"10101:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10081:28:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11702,"nodeType":"ExpressionStatement","src":"10074:35:46"}]}}]},"id":11706,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9901:5:46","nodeType":"FunctionDefinition","overrides":{"id":11685,"nodeType":"OverrideSpecifier","overrides":[{"id":11684,"name":"ERC721Upgradeable","nameLocations":["9958:17:46"],"nodeType":"IdentifierPath","referencedDeclaration":4413,"src":"9958:17:46"}],"src":"9949:27:46"},"parameters":{"id":11683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11682,"mutability":"mutable","name":"tokenId","nameLocation":"9915:7:46","nodeType":"VariableDeclaration","scope":11706,"src":"9907:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11681,"name":"uint256","nodeType":"ElementaryTypeName","src":"9907:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9906:17:46"},"returnParameters":{"id":11686,"nodeType":"ParameterList","parameters":[],"src":"9981:0:46"},"scope":11939,"src":"9892:242:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3575,7304],"body":{"id":11730,"nodeType":"Block","src":"10658:128:46","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11717,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"10686:11:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":11719,"name":"IERC2981Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1297,"src":"10706:19:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC2981Upgradeable_$1297_$","typeString":"type(contract IERC2981Upgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC2981Upgradeable_$1297_$","typeString":"type(contract IERC2981Upgradeable)"}],"id":11718,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10701:4:46","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10701:25:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC2981Upgradeable_$1297","typeString":"type(contract IERC2981Upgradeable)"}},"id":11721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10727:11:46","memberName":"interfaceId","nodeType":"MemberAccess","src":"10701:37:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"10686:52:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":11725,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"10766:11:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":11723,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"10742:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10748:17:46","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":3575,"src":"10742:23:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":11726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10742:36:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10686:92:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":11728,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10675:104:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11716,"id":11729,"nodeType":"Return","src":"10668:111:46"}]},"documentation":{"id":11707,"nodeType":"StructuredDocumentation","src":"10140:355:46","text":"@notice Query if a contract implements an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @dev Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\n @return `true` if the contract implements `interfaceId` and `interfaceId` is not 0xffffffff, `false` otherwise"},"functionSelector":"01ffc9a7","id":11731,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"10509:17:46","nodeType":"FunctionDefinition","overrides":{"id":11713,"nodeType":"OverrideSpecifier","overrides":[{"id":11711,"name":"ERC721Upgradeable","nameLocations":["10592:17:46"],"nodeType":"IdentifierPath","referencedDeclaration":4413,"src":"10592:17:46"},{"id":11712,"name":"IERC165Upgradeable","nameLocations":["10611:18:46"],"nodeType":"IdentifierPath","referencedDeclaration":7305,"src":"10611:18:46"}],"src":"10583:47:46"},"parameters":{"id":11710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11709,"mutability":"mutable","name":"interfaceId","nameLocation":"10534:11:46","nodeType":"VariableDeclaration","scope":11731,"src":"10527:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11708,"name":"bytes4","nodeType":"ElementaryTypeName","src":"10527:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"10526:20:46"},"returnParameters":{"id":11716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11715,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11731,"src":"10648:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11714,"name":"bool","nodeType":"ElementaryTypeName","src":"10648:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10647:6:46"},"scope":11939,"src":"10500:286:46","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[92,3647],"body":{"id":11744,"nodeType":"Block","src":"11040:38:46","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11740,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"11057:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11063:6:46","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":3647,"src":"11057:12:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":11742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11057:14:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":11739,"id":11743,"nodeType":"Return","src":"11050:21:46"}]},"documentation":{"id":11732,"nodeType":"StructuredDocumentation","src":"10792:95:46","text":"@notice An abbreviated name for NFTs in this contract\n @return the collection symbol"},"functionSelector":"95d89b41","id":11745,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"10901:6:46","nodeType":"FunctionDefinition","overrides":{"id":11736,"nodeType":"OverrideSpecifier","overrides":[{"id":11734,"name":"IN2M_ERCBase","nameLocations":["10971:12:46"],"nodeType":"IdentifierPath","referencedDeclaration":258,"src":"10971:12:46"},{"id":11735,"name":"ERC721Upgradeable","nameLocations":["10985:17:46"],"nodeType":"IdentifierPath","referencedDeclaration":4413,"src":"10985:17:46"}],"src":"10962:41:46"},"parameters":{"id":11733,"nodeType":"ParameterList","parameters":[],"src":"10907:2:46"},"returnParameters":{"id":11739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11738,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11745,"src":"11021:13:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11737,"name":"string","nodeType":"ElementaryTypeName","src":"11021:6:46","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11020:15:46"},"scope":11939,"src":"10892:186:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3599,12020],"body":{"id":11776,"nodeType":"Block","src":"11530:162:46","statements":[{"expression":{"id":11761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11756,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11754,"src":"11540:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11759,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11748,"src":"11566:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11757,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"11550:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11556:9:46","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":3599,"src":"11550:15:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":11760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11550:22:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11540:32:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11762,"nodeType":"ExpressionStatement","src":"11540:32:46"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":11766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11763,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"11586:12:46","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11764,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"11602:11:46","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":11765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11614:6:46","memberName":"RANDOM","nodeType":"MemberAccess","referencedDeclaration":409,"src":"11602:18:46","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"11586:34:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11775,"nodeType":"IfStatement","src":"11582:104:46","trueBody":{"id":11774,"nodeType":"Block","src":"11622:64:46","statements":[{"expression":{"id":11772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11767,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11754,"src":"11636:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":11768,"name":"_randomTickets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"11647:14:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_RandomTicket_$389_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.RandomTicket storage ref)"}},"id":11770,"indexExpression":{"id":11769,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11748,"src":"11662:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11647:21:46","typeDescriptions":{"typeIdentifier":"t_struct$_RandomTicket_$389_storage","typeString":"struct IN2M_ERCStorage.RandomTicket storage ref"}},"id":11771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11669:6:46","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":386,"src":"11647:28:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11636:39:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11773,"nodeType":"ExpressionStatement","src":"11636:39:46"}]}}]},"documentation":{"id":11746,"nodeType":"StructuredDocumentation","src":"11084:325:46","text":"@notice Count all NFTs assigned to an owner\n @dev NFTs assigned to the zero address are considered invalid, and this\n function throws for queries about the zero address.\n @param owner An address for whom to query the balance\n @return balance The number of NFTs owned by `owner`, possibly zero"},"functionSelector":"70a08231","id":11777,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"11423:9:46","nodeType":"FunctionDefinition","overrides":{"id":11752,"nodeType":"OverrideSpecifier","overrides":[{"id":11750,"name":"ERC721Upgradeable","nameLocations":["11469:17:46"],"nodeType":"IdentifierPath","referencedDeclaration":4413,"src":"11469:17:46"},{"id":11751,"name":"N2MTokenCommon","nameLocations":["11488:14:46"],"nodeType":"IdentifierPath","referencedDeclaration":13618,"src":"11488:14:46"}],"src":"11460:43:46"},"parameters":{"id":11749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11748,"mutability":"mutable","name":"owner","nameLocation":"11441:5:46","nodeType":"VariableDeclaration","scope":11777,"src":"11433:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11747,"name":"address","nodeType":"ElementaryTypeName","src":"11433:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11432:15:46"},"returnParameters":{"id":11755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11754,"mutability":"mutable","name":"balance","nameLocation":"11521:7:46","nodeType":"VariableDeclaration","scope":11777,"src":"11513:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11753,"name":"uint256","nodeType":"ElementaryTypeName","src":"11513:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11512:17:46"},"scope":11939,"src":"11414:278:46","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[7234],"body":{"id":11787,"nodeType":"Block","src":"11774:45:46","statements":[{"expression":{"arguments":[{"hexValue":"4e465473324d65","id":11784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11802:9:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_f63dd8159b098696ebb81a400cea3c4ffba1938921072285df391c19c71dce61","typeString":"literal_string \"NFTs2Me\""},"value":"NFTs2Me"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f63dd8159b098696ebb81a400cea3c4ffba1938921072285df391c19c71dce61","typeString":"literal_string \"NFTs2Me\""}],"id":11783,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"11792:9:46","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11792:20:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":11782,"id":11786,"nodeType":"Return","src":"11785:27:46"}]},"id":11788,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712NameHash","nameLocation":"11707:15:46","nodeType":"FunctionDefinition","overrides":{"id":11779,"nodeType":"OverrideSpecifier","overrides":[],"src":"11742:8:46"},"parameters":{"id":11778,"nodeType":"ParameterList","parameters":[],"src":"11722:2:46"},"returnParameters":{"id":11782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11788,"src":"11765:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11780,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11765:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11764:9:46"},"scope":11939,"src":"11698:121:46","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[7243],"body":{"id":11798,"nodeType":"Block","src":"11904:38:46","statements":[{"expression":{"arguments":[{"hexValue":"31","id":11795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11931:3:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""}],"id":11794,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"11921:9:46","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11921:14:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":11793,"id":11797,"nodeType":"Return","src":"11914:21:46"}]},"id":11799,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712VersionHash","nameLocation":"11834:18:46","nodeType":"FunctionDefinition","overrides":{"id":11790,"nodeType":"OverrideSpecifier","overrides":[],"src":"11872:8:46"},"parameters":{"id":11789,"nodeType":"ParameterList","parameters":[],"src":"11852:2:46"},"returnParameters":{"id":11793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11792,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11799,"src":"11895:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11791,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11895:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11894:9:46"},"scope":11939,"src":"11825:117:46","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[3773],"body":{"id":11818,"nodeType":"Block","src":"12453:60:46","statements":[{"expression":{"arguments":[{"id":11814,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"12487:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11815,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"12497:8:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11811,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"12463:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12469:17:46","memberName":"setApprovalForAll","nodeType":"MemberAccess","referencedDeclaration":3773,"src":"12463:23:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":11816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12463:43:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11817,"nodeType":"ExpressionStatement","src":"12463:43:46"}]},"documentation":{"id":11800,"nodeType":"StructuredDocumentation","src":"11952:382:46","text":"@notice Enable or disable approval for a third party (\"operator\") to manage\n all of `msg.sender`'s assets\n @dev Emits the ApprovalForAll event. The contract MUST allow\n multiple operators per owner.\n @param operator Address to add to the set of authorized operators\n @param approved True if the operator is approved, false to revoke approval"},"functionSelector":"a22cb465","id":11819,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":11808,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"12443:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11809,"kind":"modifierInvocation","modifierName":{"id":11807,"name":"onlyAllowedOperatorApproval","nameLocations":["12415:27:46"],"nodeType":"IdentifierPath","referencedDeclaration":13538,"src":"12415:27:46"},"nodeType":"ModifierInvocation","src":"12415:37:46"}],"name":"setApprovalForAll","nameLocation":"12348:17:46","nodeType":"FunctionDefinition","overrides":{"id":11806,"nodeType":"OverrideSpecifier","overrides":[],"src":"12406:8:46"},"parameters":{"id":11805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11802,"mutability":"mutable","name":"operator","nameLocation":"12374:8:46","nodeType":"VariableDeclaration","scope":11819,"src":"12366:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11801,"name":"address","nodeType":"ElementaryTypeName","src":"12366:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11804,"mutability":"mutable","name":"approved","nameLocation":"12389:8:46","nodeType":"VariableDeclaration","scope":11819,"src":"12384:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11803,"name":"bool","nodeType":"ElementaryTypeName","src":"12384:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12365:33:46"},"returnParameters":{"id":11810,"nodeType":"ParameterList","parameters":[],"src":"12453:0:46"},"scope":11939,"src":"12339:174:46","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3738],"body":{"id":11838,"nodeType":"Block","src":"12979:49:46","statements":[{"expression":{"arguments":[{"id":11834,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11822,"src":"13003:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11835,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11824,"src":"13013:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11831,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"12989:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12995:7:46","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":3738,"src":"12989:13:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":11836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12989:32:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11837,"nodeType":"ExpressionStatement","src":"12989:32:46"}]},"documentation":{"id":11820,"nodeType":"StructuredDocumentation","src":"12519:349:46","text":"@notice Change or reaffirm the approved address for an NFT\n @dev The zero address indicates there is no approved address.\n Throws unless `msg.sender` is the current NFT owner, or an authorized\n operator of the current owner.\n @param operator The new approved NFT controller\n @param tokenId The NFT to approve"},"functionSelector":"095ea7b3","id":11839,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":11828,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11822,"src":"12969:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11829,"kind":"modifierInvocation","modifierName":{"id":11827,"name":"onlyAllowedOperatorApproval","nameLocations":["12941:27:46"],"nodeType":"IdentifierPath","referencedDeclaration":13538,"src":"12941:27:46"},"nodeType":"ModifierInvocation","src":"12941:37:46"}],"name":"approve","nameLocation":"12882:7:46","nodeType":"FunctionDefinition","overrides":{"id":11826,"nodeType":"OverrideSpecifier","overrides":[],"src":"12932:8:46"},"parameters":{"id":11825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11822,"mutability":"mutable","name":"operator","nameLocation":"12898:8:46","nodeType":"VariableDeclaration","scope":11839,"src":"12890:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11821,"name":"address","nodeType":"ElementaryTypeName","src":"12890:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11824,"mutability":"mutable","name":"tokenId","nameLocation":"12916:7:46","nodeType":"VariableDeclaration","scope":11839,"src":"12908:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11823,"name":"uint256","nodeType":"ElementaryTypeName","src":"12908:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12889:35:46"},"returnParameters":{"id":11830,"nodeType":"ParameterList","parameters":[],"src":"12979:0:46"},"scope":11939,"src":"12873:155:46","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3791],"body":{"id":11868,"nodeType":"Block","src":"13452:169:46","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11850,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"13467:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11851,"name":"N2M_CONDUIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10245,"src":"13479:11:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13467:23:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11855,"nodeType":"IfStatement","src":"13463:40:46","trueBody":{"expression":{"hexValue":"74727565","id":11853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13499:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11849,"id":11854,"nodeType":"Return","src":"13492:11:46"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11856,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"13517:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11857,"name":"OPENSEA_CONDUIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10239,"src":"13529:15:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13517:27:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11861,"nodeType":"IfStatement","src":"13513:44:46","trueBody":{"expression":{"hexValue":"74727565","id":11859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13553:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11849,"id":11860,"nodeType":"Return","src":"13546:11:46"}},{"expression":{"arguments":[{"id":11864,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11842,"src":"13598:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11865,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"13605:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11862,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"13575:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13581:16:46","memberName":"isApprovedForAll","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"13575:22:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":11866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13575:39:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11849,"id":11867,"nodeType":"Return","src":"13568:46:46"}]},"documentation":{"id":11840,"nodeType":"StructuredDocumentation","src":"13034:286:46","text":"@notice Query if an address is an authorized operator for another address\n @param owner The address that owns the NFTs\n @param operator The address that acts on behalf of the owner\n @return True if `operator` is an approved operator for `owner`, false otherwise"},"functionSelector":"e985e9c5","id":11869,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"13334:16:46","nodeType":"FunctionDefinition","overrides":{"id":11846,"nodeType":"OverrideSpecifier","overrides":[],"src":"13420:8:46"},"parameters":{"id":11845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11842,"mutability":"mutable","name":"owner","nameLocation":"13359:5:46","nodeType":"VariableDeclaration","scope":11869,"src":"13351:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11841,"name":"address","nodeType":"ElementaryTypeName","src":"13351:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11844,"mutability":"mutable","name":"operator","nameLocation":"13374:8:46","nodeType":"VariableDeclaration","scope":11869,"src":"13366:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11843,"name":"address","nodeType":"ElementaryTypeName","src":"13366:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13350:33:46"},"returnParameters":{"id":11849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11848,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11869,"src":"13442:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11847,"name":"bool","nodeType":"ElementaryTypeName","src":"13442:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13441:6:46"},"scope":11939,"src":"13325:296:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3818],"body":{"id":11890,"nodeType":"Block","src":"14333:54:46","statements":[{"expression":{"arguments":[{"id":11885,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11872,"src":"14362:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11886,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11874,"src":"14368:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11887,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11876,"src":"14372:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11882,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"14343:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14349:12:46","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":3818,"src":"14343:18:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14343:37:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11889,"nodeType":"ExpressionStatement","src":"14343:37:46"}]},"documentation":{"id":11870,"nodeType":"StructuredDocumentation","src":"13627:568:46","text":"@notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE\n TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE\n THEY MAY BE PERMANENTLY LOST\n @dev Throws unless `msg.sender` is the current owner, an authorized\n operator, or the approved address for this NFT. Throws if `from` is\n not the current owner. Throws if `to` is the zero address. Throws if\n `tokenId` is not a valid NFT.\n @param from The current owner of the NFT\n @param to The new owner\n @param tokenId The NFT to transfer"},"functionSelector":"23b872dd","id":11891,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":11880,"kind":"modifierInvocation","modifierName":{"id":11879,"name":"onlyAllowedOperator","nameLocations":["14311:19:46"],"nodeType":"IdentifierPath","referencedDeclaration":13528,"src":"14311:19:46"},"nodeType":"ModifierInvocation","src":"14311:21:46"}],"name":"transferFrom","nameLocation":"14209:12:46","nodeType":"FunctionDefinition","overrides":{"id":11878,"nodeType":"OverrideSpecifier","overrides":[],"src":"14302:8:46"},"parameters":{"id":11877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11872,"mutability":"mutable","name":"from","nameLocation":"14239:4:46","nodeType":"VariableDeclaration","scope":11891,"src":"14231:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11871,"name":"address","nodeType":"ElementaryTypeName","src":"14231:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11874,"mutability":"mutable","name":"to","nameLocation":"14261:2:46","nodeType":"VariableDeclaration","scope":11891,"src":"14253:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11873,"name":"address","nodeType":"ElementaryTypeName","src":"14253:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11876,"mutability":"mutable","name":"tokenId","nameLocation":"14281:7:46","nodeType":"VariableDeclaration","scope":11891,"src":"14273:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11875,"name":"uint256","nodeType":"ElementaryTypeName","src":"14273:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14221:73:46"},"returnParameters":{"id":11881,"nodeType":"ParameterList","parameters":[],"src":"14333:0:46"},"scope":11939,"src":"14200:187:46","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3837],"body":{"id":11912,"nodeType":"Block","src":"14880:58:46","statements":[{"expression":{"arguments":[{"id":11907,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11894,"src":"14913:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11908,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11896,"src":"14919:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11909,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11898,"src":"14923:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11904,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"14890:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14896:16:46","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":3837,"src":"14890:22:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14890:41:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11911,"nodeType":"ExpressionStatement","src":"14890:41:46"}]},"documentation":{"id":11892,"nodeType":"StructuredDocumentation","src":"14393:345:46","text":"@notice Transfers the ownership of an NFT from one address to another address\n @dev This works identically to the other function with an extra data parameter,\n except this function just sets data to \"\".\n @param from The current owner of the NFT\n @param to The new owner\n @param tokenId The NFT to transfer"},"functionSelector":"42842e0e","id":11913,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":11902,"kind":"modifierInvocation","modifierName":{"id":11901,"name":"onlyAllowedOperator","nameLocations":["14858:19:46"],"nodeType":"IdentifierPath","referencedDeclaration":13528,"src":"14858:19:46"},"nodeType":"ModifierInvocation","src":"14858:21:46"}],"name":"safeTransferFrom","nameLocation":"14752:16:46","nodeType":"FunctionDefinition","overrides":{"id":11900,"nodeType":"OverrideSpecifier","overrides":[],"src":"14849:8:46"},"parameters":{"id":11899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11894,"mutability":"mutable","name":"from","nameLocation":"14786:4:46","nodeType":"VariableDeclaration","scope":11913,"src":"14778:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11893,"name":"address","nodeType":"ElementaryTypeName","src":"14778:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11896,"mutability":"mutable","name":"to","nameLocation":"14808:2:46","nodeType":"VariableDeclaration","scope":11913,"src":"14800:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11895,"name":"address","nodeType":"ElementaryTypeName","src":"14800:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11898,"mutability":"mutable","name":"tokenId","nameLocation":"14828:7:46","nodeType":"VariableDeclaration","scope":11913,"src":"14820:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11897,"name":"uint256","nodeType":"ElementaryTypeName","src":"14820:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14768:73:46"},"returnParameters":{"id":11903,"nodeType":"ParameterList","parameters":[],"src":"14880:0:46"},"scope":11939,"src":"14743:195:46","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3867],"body":{"id":11937,"nodeType":"Block","src":"15944:64:46","statements":[{"expression":{"arguments":[{"id":11931,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11916,"src":"15977:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11932,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11918,"src":"15983:2:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11933,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11920,"src":"15987:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11934,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11922,"src":"15996:4:46","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11928,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"15954:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_N2MERC721_$11939_$","typeString":"type(contract super N2MERC721)"}},"id":11930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15960:16:46","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":3867,"src":"15954:22:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":11935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15954:47:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11936,"nodeType":"ExpressionStatement","src":"15954:47:46"}]},"documentation":{"id":11914,"nodeType":"StructuredDocumentation","src":"14944:831:46","text":"@notice Transfers the ownership of an NFT from one address to another address\n @dev Throws unless `msg.sender` is the current owner, an authorized\n operator, or the approved address for this NFT. Throws if `from` is\n not the current owner. Throws if `to` is the zero address. Throws if\n `tokenId` is not a valid NFT. When transfer is complete, this function\n checks if `to` is a smart contract (code size > 0). If so, it calls\n `onERC721Received` on `to` and throws if the return value is not\n `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.\n @param from The current owner of the NFT\n @param to The new owner\n @param tokenId The NFT to transfer\n @param data Additional data with no specified format, sent in call to `to`"},"functionSelector":"b88d4fde","id":11938,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":11926,"kind":"modifierInvocation","modifierName":{"id":11925,"name":"onlyAllowedOperator","nameLocations":["15922:19:46"],"nodeType":"IdentifierPath","referencedDeclaration":13528,"src":"15922:19:46"},"nodeType":"ModifierInvocation","src":"15922:21:46"}],"name":"safeTransferFrom","nameLocation":"15789:16:46","nodeType":"FunctionDefinition","overrides":{"id":11924,"nodeType":"OverrideSpecifier","overrides":[],"src":"15913:8:46"},"parameters":{"id":11923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11916,"mutability":"mutable","name":"from","nameLocation":"15823:4:46","nodeType":"VariableDeclaration","scope":11938,"src":"15815:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11915,"name":"address","nodeType":"ElementaryTypeName","src":"15815:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11918,"mutability":"mutable","name":"to","nameLocation":"15845:2:46","nodeType":"VariableDeclaration","scope":11938,"src":"15837:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11917,"name":"address","nodeType":"ElementaryTypeName","src":"15837:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11920,"mutability":"mutable","name":"tokenId","nameLocation":"15865:7:46","nodeType":"VariableDeclaration","scope":11938,"src":"15857:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11919,"name":"uint256","nodeType":"ElementaryTypeName","src":"15857:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11922,"mutability":"mutable","name":"data","nameLocation":"15895:4:46","nodeType":"VariableDeclaration","scope":11938,"src":"15882:17:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11921,"name":"bytes","nodeType":"ElementaryTypeName","src":"15882:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15805:100:46"},"returnParameters":{"id":11927,"nodeType":"ParameterList","parameters":[],"src":"15944:0:46"},"scope":11939,"src":"15780:228:46","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":11940,"src":"5571:10440:46","usedErrors":[271,274,277,280,283,286,289,292,295,298,301,304,307,310,313,316,319,322,325,328,331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376,379,384]}],"src":"4913:11099:46"},"id":46},"contracts/N2MTokenCommon.sol":{"ast":{"absolutePath":"contracts/N2MTokenCommon.sol","exportedSymbols":{"AddressUpgradeable":[5076],"CheckpointsUpgradeable":[6447],"ContextUpgradeable":[6489],"CountersUpgradeable":[6563],"ECDSAUpgradeable":[7099],"EIP712Upgradeable":[7249],"ERC165Upgradeable":[7293],"ERC721URIStorageUpgradeable":[4692],"ERC721Upgradeable":[4413],"ERC721VotesUpgradeable":[4765],"IERC165Upgradeable":[7305],"IERC20":[10056],"IERC20PermitUpgradeable":[3180],"IERC20Upgradeable":[3144],"IERC2981Upgradeable":[1297],"IERC721MetadataUpgradeable":[4792],"IERC721ReceiverUpgradeable":[4431],"IERC721Upgradeable":[4547],"IN2MCrossFactory":[43],"IN2MLibrary":[11961],"IN2M_ERCBase":[258],"IN2M_ERCStorage":[424],"IOperatorFilterRegistry":[613],"IVotesUpgradeable":[804],"Initializable":[1466],"MathUpgradeable":[8170],"N2MCommonStorage":[10512],"N2MTokenCommon":[13618],"N2MVersion":[13634],"NFTOwnableUpgradeable":[726],"Readme":[8],"SafeCastUpgradeable":[9711],"SafeERC20Upgradeable":[3461],"StringsUpgradeable":[6738],"VotesUpgradeable":[1278]},"id":13619,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":11941,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:47"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol","id":11942,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13619,"sourceUnit":4414,"src":"4939:80:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","id":11943,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13619,"sourceUnit":7250,"src":"5020:86:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol","id":11944,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13619,"sourceUnit":4766,"src":"5107:96:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol","id":11945,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13619,"sourceUnit":4693,"src":"5204:101:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":11946,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13619,"sourceUnit":1467,"src":"5306:75:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol","id":11947,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13619,"sourceUnit":1298,"src":"5382:80:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","id":11948,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13619,"sourceUnit":7100,"src":"5463:85:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","id":11949,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13619,"sourceUnit":3462,"src":"5560:88:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":11950,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13619,"sourceUnit":10057,"src":"5649:56:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol","file":"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol","id":11951,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13619,"sourceUnit":44,"src":"5707:60:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol","file":"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol","id":11952,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13619,"sourceUnit":259,"src":"5768:56:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/N2MCommonStorage.sol","file":"./N2MCommonStorage.sol","id":11953,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13619,"sourceUnit":10513,"src":"5825:32:47","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IN2MLibrary","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11961,"linearizedBaseContracts":[11961],"name":"IN2MLibrary","nameLocation":"5869:11:47","nodeType":"ContractDefinition","nodes":[{"functionSelector":"01284a46","id":11960,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURIImpl","nameLocation":"5896:12:47","nodeType":"FunctionDefinition","parameters":{"id":11956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11955,"mutability":"mutable","name":"tokenId","nameLocation":"5917:7:47","nodeType":"VariableDeclaration","scope":11960,"src":"5909:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11954,"name":"uint256","nodeType":"ElementaryTypeName","src":"5909:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5908:17:47"},"returnParameters":{"id":11959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11960,"src":"5949:13:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11957,"name":"string","nodeType":"ElementaryTypeName","src":"5949:6:47","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5948:15:47"},"scope":11961,"src":"5887:77:47","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13619,"src":"5859:107:47","usedErrors":[]},{"abstract":true,"baseContracts":[{"baseName":{"id":11963,"name":"N2MCommonStorage","nameLocations":["6268:16:47"],"nodeType":"IdentifierPath","referencedDeclaration":10512,"src":"6268:16:47"},"id":11964,"nodeType":"InheritanceSpecifier","src":"6268:16:47"},{"baseName":{"id":11965,"name":"IN2M_ERCBase","nameLocations":["6286:12:47"],"nodeType":"IdentifierPath","referencedDeclaration":258,"src":"6286:12:47"},"id":11966,"nodeType":"InheritanceSpecifier","src":"6286:12:47"}],"canonicalName":"N2MTokenCommon","contractDependencies":[],"contractKind":"contract","documentation":{"id":11962,"nodeType":"StructuredDocumentation","src":"5968:264:47","text":"@title NFTs2Me.com Smart Contracts\n @author The NFTs2Me Team\n @notice Read our terms of service\n @custom:security-contact security@nfts2me.com\n @custom:terms-of-service https://nfts2me.com/terms-of-service/\n @custom:website https://nfts2me.com/"},"fullyImplemented":false,"id":13618,"linearizedBaseContracts":[13618,258,10512,13634,424,8,1297,7305,726,6489,1466],"name":"N2MTokenCommon","nameLocation":"6250:14:47","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":11967,"nodeType":"StructuredDocumentation","src":"6305:13:47","text":"IMMUTABLE"},"id":11969,"mutability":"immutable","name":"LIBRARY_ADDRESS","nameLocation":"6350:15:47","nodeType":"VariableDeclaration","scope":13618,"src":"6323:42:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11968,"name":"address","nodeType":"ElementaryTypeName","src":"6323:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"body":{"id":11984,"nodeType":"Block","src":"6526:49:47","statements":[{"expression":{"id":11982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11980,"name":"LIBRARY_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"6536:15:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11981,"name":"libraryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11972,"src":"6554:14:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6536:32:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11983,"nodeType":"ExpressionStatement","src":"6536:32:47"}]},"documentation":{"id":11970,"nodeType":"StructuredDocumentation","src":"6372:48:47","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":11985,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":11977,"name":"factoryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11974,"src":"6510:14:47","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"id":11978,"kind":"baseConstructorSpecifier","modifierName":{"id":11976,"name":"N2MCommonStorage","nameLocations":["6493:16:47"],"nodeType":"IdentifierPath","referencedDeclaration":10512,"src":"6493:16:47"},"nodeType":"ModifierInvocation","src":"6493:32:47"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11972,"mutability":"mutable","name":"libraryAddress","nameLocation":"6445:14:47","nodeType":"VariableDeclaration","scope":11985,"src":"6437:22:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11971,"name":"address","nodeType":"ElementaryTypeName","src":"6437:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11974,"mutability":"mutable","name":"factoryAddress","nameLocation":"6477:14:47","nodeType":"VariableDeclaration","scope":11985,"src":"6461:30:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":11973,"name":"address","nodeType":"ElementaryTypeName","src":"6461:15:47","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"6436:56:47"},"returnParameters":{"id":11979,"nodeType":"ParameterList","parameters":[],"src":"6526:0:47"},"scope":13618,"src":"6425:150:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11992,"implemented":false,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"6590:5:47","nodeType":"FunctionDefinition","parameters":{"id":11990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11987,"mutability":"mutable","name":"to","nameLocation":"6604:2:47","nodeType":"VariableDeclaration","scope":11992,"src":"6596:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11986,"name":"address","nodeType":"ElementaryTypeName","src":"6596:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11989,"mutability":"mutable","name":"tokenId","nameLocation":"6616:7:47","nodeType":"VariableDeclaration","scope":11992,"src":"6608:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11988,"name":"uint256","nodeType":"ElementaryTypeName","src":"6608:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6595:29:47"},"returnParameters":{"id":11991,"nodeType":"ParameterList","parameters":[],"src":"6641:0:47"},"scope":13618,"src":"6581:61:47","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":11999,"implemented":false,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"6657:7:47","nodeType":"FunctionDefinition","parameters":{"id":11995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11994,"mutability":"mutable","name":"tokenId","nameLocation":"6673:7:47","nodeType":"VariableDeclaration","scope":11999,"src":"6665:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11993,"name":"uint256","nodeType":"ElementaryTypeName","src":"6665:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6664:17:47"},"returnParameters":{"id":11998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11997,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11999,"src":"6713:4:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11996,"name":"bool","nodeType":"ElementaryTypeName","src":"6713:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6712:6:47"},"scope":13618,"src":"6648:71:47","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[86],"functionSelector":"06fdde03","id":12005,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"6734:4:47","nodeType":"FunctionDefinition","overrides":{"id":12001,"nodeType":"OverrideSpecifier","overrides":[],"src":"6763:8:47"},"parameters":{"id":12000,"nodeType":"ParameterList","parameters":[],"src":"6738:2:47"},"returnParameters":{"id":12004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12003,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12005,"src":"6781:13:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12002,"name":"string","nodeType":"ElementaryTypeName","src":"6781:6:47","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6780:15:47"},"scope":13618,"src":"6725:71:47","stateMutability":"view","virtual":true,"visibility":"external"},{"baseFunctions":[100],"functionSelector":"c87b56dd","id":12013,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"6811:8:47","nodeType":"FunctionDefinition","overrides":{"id":12009,"nodeType":"OverrideSpecifier","overrides":[],"src":"6859:8:47"},"parameters":{"id":12008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12007,"mutability":"mutable","name":"tokenId","nameLocation":"6828:7:47","nodeType":"VariableDeclaration","scope":12013,"src":"6820:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12006,"name":"uint256","nodeType":"ElementaryTypeName","src":"6820:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6819:17:47"},"returnParameters":{"id":12012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12011,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12013,"src":"6877:13:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12010,"name":"string","nodeType":"ElementaryTypeName","src":"6877:6:47","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6876:15:47"},"scope":13618,"src":"6802:90:47","stateMutability":"view","virtual":true,"visibility":"external"},{"functionSelector":"70a08231","id":12020,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"6907:9:47","nodeType":"FunctionDefinition","parameters":{"id":12016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12015,"mutability":"mutable","name":"owner","nameLocation":"6925:5:47","nodeType":"VariableDeclaration","scope":12020,"src":"6917:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12014,"name":"address","nodeType":"ElementaryTypeName","src":"6917:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6916:15:47"},"returnParameters":{"id":12019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12018,"mutability":"mutable","name":"balance","nameLocation":"6969:7:47","nodeType":"VariableDeclaration","scope":12020,"src":"6961:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12017,"name":"uint256","nodeType":"ElementaryTypeName","src":"6961:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6960:17:47"},"scope":13618,"src":"6898:80:47","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[104],"body":{"id":12057,"nodeType":"Block","src":"7219:300:47","statements":[{"expression":{"arguments":[{"id":12026,"name":"_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10301,"src":"7245:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":12027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7257:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":12025,"name":"_requirePayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13519,"src":"7229:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7229:30:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12029,"nodeType":"ExpressionStatement","src":"7229:30:47"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12030,"name":"_checkPhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13468,"src":"7269:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7269:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12032,"nodeType":"ExpressionStatement","src":"7269:13:47"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":12036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12033,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"7296:12:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":12034,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"7312:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":12035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7324:10:47","memberName":"SEQUENTIAL","nodeType":"MemberAccess","referencedDeclaration":408,"src":"7312:22:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"7296:38:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12040,"nodeType":"IfStatement","src":"7292:71:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12037,"name":"InvalidMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"7343:18:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7343:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12039,"nodeType":"RevertStatement","src":"7336:27:47"}},{"id":12050,"nodeType":"UncheckedBlock","src":"7373:100:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":12045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":12042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7402:13:47","subExpression":{"id":12041,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"7404:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":12043,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7401:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12044,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"7419:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7401:33:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12049,"nodeType":"IfStatement","src":"7397:65:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12046,"name":"CollectionSoldOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"7443:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7443:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12048,"nodeType":"RevertStatement","src":"7436:26:47"}}]},{"expression":{"arguments":[{"expression":{"id":12052,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7488:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7492:6:47","memberName":"sender","nodeType":"MemberAccess","src":"7488:10:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12054,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"7500:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":12051,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"7482:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7482:30:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12056,"nodeType":"ExpressionStatement","src":"7482:30:47"}]},"documentation":{"id":12021,"nodeType":"StructuredDocumentation","src":"6988:184:47","text":"@notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"functionSelector":"1249c58b","id":12058,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"7186:4:47","nodeType":"FunctionDefinition","overrides":{"id":12023,"nodeType":"OverrideSpecifier","overrides":[],"src":"7210:8:47"},"parameters":{"id":12022,"nodeType":"ParameterList","parameters":[],"src":"7190:2:47"},"returnParameters":{"id":12024,"nodeType":"ParameterList","parameters":[],"src":"7219:0:47"},"scope":13618,"src":"7177:342:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[110],"body":{"id":12076,"nodeType":"Block","src":"7825:107:47","statements":[{"expression":{"arguments":[{"id":12066,"name":"_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10301,"src":"7851:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12067,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12061,"src":"7863:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12065,"name":"_requirePayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13519,"src":"7835:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7835:35:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12069,"nodeType":"ExpressionStatement","src":"7835:35:47"},{"expression":{"arguments":[{"expression":{"id":12071,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7906:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7910:6:47","memberName":"sender","nodeType":"MemberAccess","src":"7906:10:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12073,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12061,"src":"7918:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12070,"name":"_mintSequentialWithChecks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"7880:25:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7880:45:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12075,"nodeType":"ExpressionStatement","src":"7880:45:47"}]},"documentation":{"id":12059,"nodeType":"StructuredDocumentation","src":"7525:239:47","text":"@notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param amount The number of NFTs to mint"},"functionSelector":"a0712d68","id":12077,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"7778:4:47","nodeType":"FunctionDefinition","overrides":{"id":12063,"nodeType":"OverrideSpecifier","overrides":[],"src":"7816:8:47"},"parameters":{"id":12062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12061,"mutability":"mutable","name":"amount","nameLocation":"7791:6:47","nodeType":"VariableDeclaration","scope":12077,"src":"7783:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12060,"name":"uint256","nodeType":"ElementaryTypeName","src":"7783:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7782:16:47"},"returnParameters":{"id":12064,"nodeType":"ParameterList","parameters":[],"src":"7825:0:47"},"scope":13618,"src":"7769:163:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[118],"body":{"id":12097,"nodeType":"Block","src":"8329:120:47","statements":[{"expression":{"arguments":[{"id":12087,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12080,"src":"8369:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12088,"name":"affiliate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12082,"src":"8377:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12086,"name":"_requirePaymentWithAffiliates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13405,"src":"8339:29:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":12089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8339:48:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12090,"nodeType":"ExpressionStatement","src":"8339:48:47"},{"expression":{"arguments":[{"expression":{"id":12092,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8423:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8427:6:47","memberName":"sender","nodeType":"MemberAccess","src":"8423:10:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12094,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12080,"src":"8435:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12091,"name":"_mintSequentialWithChecks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"8397:25:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8397:45:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12096,"nodeType":"ExpressionStatement","src":"8397:45:47"}]},"documentation":{"id":12078,"nodeType":"StructuredDocumentation","src":"7938:311:47","text":"@notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param amount The number of NFTs to mint\n @param affiliate The affiliate address"},"functionSelector":"94bf804d","id":12098,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"8263:4:47","nodeType":"FunctionDefinition","overrides":{"id":12084,"nodeType":"OverrideSpecifier","overrides":[],"src":"8320:8:47"},"parameters":{"id":12083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12080,"mutability":"mutable","name":"amount","nameLocation":"8276:6:47","nodeType":"VariableDeclaration","scope":12098,"src":"8268:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12079,"name":"uint256","nodeType":"ElementaryTypeName","src":"8268:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12082,"mutability":"mutable","name":"affiliate","nameLocation":"8292:9:47","nodeType":"VariableDeclaration","scope":12098,"src":"8284:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12081,"name":"address","nodeType":"ElementaryTypeName","src":"8284:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8267:35:47"},"returnParameters":{"id":12085,"nodeType":"ParameterList","parameters":[],"src":"8329:0:47"},"scope":13618,"src":"8254:195:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[126],"body":{"id":12117,"nodeType":"Block","src":"8813:99:47","statements":[{"expression":{"arguments":[{"id":12108,"name":"_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10301,"src":"8839:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12109,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12103,"src":"8851:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12107,"name":"_requirePayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13519,"src":"8823:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8823:35:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12111,"nodeType":"ExpressionStatement","src":"8823:35:47"},{"expression":{"arguments":[{"id":12113,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12101,"src":"8894:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12114,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12103,"src":"8898:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12112,"name":"_mintSequentialWithChecks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"8868:25:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8868:37:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12116,"nodeType":"ExpressionStatement","src":"8868:37:47"}]},"documentation":{"id":12099,"nodeType":"StructuredDocumentation","src":"8455:283:47","text":"@notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param to The address of the NFTs receiver\n @param amount The number of NFTs to mint "},"functionSelector":"449a52f8","id":12118,"implemented":true,"kind":"function","modifiers":[],"name":"mintTo","nameLocation":"8752:6:47","nodeType":"FunctionDefinition","overrides":{"id":12105,"nodeType":"OverrideSpecifier","overrides":[],"src":"8804:8:47"},"parameters":{"id":12104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12101,"mutability":"mutable","name":"to","nameLocation":"8767:2:47","nodeType":"VariableDeclaration","scope":12118,"src":"8759:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12100,"name":"address","nodeType":"ElementaryTypeName","src":"8759:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12103,"mutability":"mutable","name":"amount","nameLocation":"8779:6:47","nodeType":"VariableDeclaration","scope":12118,"src":"8771:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12102,"name":"uint256","nodeType":"ElementaryTypeName","src":"8771:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8758:28:47"},"returnParameters":{"id":12106,"nodeType":"ParameterList","parameters":[],"src":"8813:0:47"},"scope":13618,"src":"8743:169:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[136],"body":{"id":12139,"nodeType":"Block","src":"9367:112:47","statements":[{"expression":{"arguments":[{"id":12130,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12123,"src":"9407:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12131,"name":"affiliate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12125,"src":"9415:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12129,"name":"_requirePaymentWithAffiliates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13405,"src":"9377:29:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":12132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9377:48:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12133,"nodeType":"ExpressionStatement","src":"9377:48:47"},{"expression":{"arguments":[{"id":12135,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12121,"src":"9461:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12136,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12123,"src":"9465:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12134,"name":"_mintSequentialWithChecks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"9435:25:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9435:37:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12138,"nodeType":"ExpressionStatement","src":"9435:37:47"}]},"documentation":{"id":12119,"nodeType":"StructuredDocumentation","src":"8918:355:47","text":"@notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param to The address of the NFTs receiver\n @param amount The number of NFTs to mint \n @param affiliate The affiliate address"},"functionSelector":"438b1b4b","id":12140,"implemented":true,"kind":"function","modifiers":[],"name":"mintTo","nameLocation":"9287:6:47","nodeType":"FunctionDefinition","overrides":{"id":12127,"nodeType":"OverrideSpecifier","overrides":[],"src":"9358:8:47"},"parameters":{"id":12126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12121,"mutability":"mutable","name":"to","nameLocation":"9302:2:47","nodeType":"VariableDeclaration","scope":12140,"src":"9294:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12120,"name":"address","nodeType":"ElementaryTypeName","src":"9294:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12123,"mutability":"mutable","name":"amount","nameLocation":"9314:6:47","nodeType":"VariableDeclaration","scope":12140,"src":"9306:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12122,"name":"uint256","nodeType":"ElementaryTypeName","src":"9306:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12125,"mutability":"mutable","name":"affiliate","nameLocation":"9330:9:47","nodeType":"VariableDeclaration","scope":12140,"src":"9322:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12124,"name":"address","nodeType":"ElementaryTypeName","src":"9322:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9293:47:47"},"returnParameters":{"id":12128,"nodeType":"ParameterList","parameters":[],"src":"9367:0:47"},"scope":13618,"src":"9278:201:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":12173,"nodeType":"Block","src":"9556:231:47","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12147,"name":"_checkPhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13468,"src":"9566:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9566:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12149,"nodeType":"ExpressionStatement","src":"9566:13:47"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":12153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12150,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"9593:12:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":12151,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"9609:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":12152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9621:10:47","memberName":"SEQUENTIAL","nodeType":"MemberAccess","referencedDeclaration":408,"src":"9609:22:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"9593:38:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12157,"nodeType":"IfStatement","src":"9589:71:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12154,"name":"InvalidMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"9640:18:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9640:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12156,"nodeType":"RevertStatement","src":"9633:27:47"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12158,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"9675:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":12159,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12144,"src":"9689:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9675:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12161,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9674:22:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12162,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"9699:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9674:40:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12167,"nodeType":"IfStatement","src":"9670:72:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12164,"name":"CollectionSoldOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"9723:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9723:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12166,"nodeType":"RevertStatement","src":"9716:26:47"}},{"expression":{"arguments":[{"id":12169,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12142,"src":"9769:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12170,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12144,"src":"9773:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12168,"name":"_mintSequential","nodeType":"Identifier","overloadedDeclarations":[12211,12237],"referencedDeclaration":12237,"src":"9753:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9753:27:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12172,"nodeType":"ExpressionStatement","src":"9753:27:47"}]},"id":12174,"implemented":true,"kind":"function","modifiers":[],"name":"_mintSequentialWithChecks","nameLocation":"9494:25:47","nodeType":"FunctionDefinition","parameters":{"id":12145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12142,"mutability":"mutable","name":"to","nameLocation":"9528:2:47","nodeType":"VariableDeclaration","scope":12174,"src":"9520:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12141,"name":"address","nodeType":"ElementaryTypeName","src":"9520:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12144,"mutability":"mutable","name":"amount","nameLocation":"9540:6:47","nodeType":"VariableDeclaration","scope":12174,"src":"9532:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12143,"name":"uint256","nodeType":"ElementaryTypeName","src":"9532:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9519:28:47"},"returnParameters":{"id":12146,"nodeType":"ParameterList","parameters":[],"src":"9556:0:47"},"scope":13618,"src":"9485:302:47","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":12210,"nodeType":"Block","src":"9870:255:47","statements":[{"body":{"id":12208,"nodeType":"Block","src":"9910:209:47","statements":[{"id":12195,"nodeType":"UncheckedBlock","src":"9924:67:47","statements":[{"expression":{"arguments":[{"id":12190,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12176,"src":"9958:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9962:13:47","subExpression":{"id":12191,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"9964:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":12189,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"9952:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9952:24:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12194,"nodeType":"ExpressionStatement","src":"9952:24:47"}]},{"condition":{"id":12196,"name":"soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12180,"src":"10008:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12203,"nodeType":"IfStatement","src":"10004:45:47","trueBody":{"expression":{"id":12201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12197,"name":"_soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"10019:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":12199,"indexExpression":{"id":12198,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"10030:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10019:23:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10045:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"10019:30:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12202,"nodeType":"ExpressionStatement","src":"10019:30:47"}},{"id":12207,"nodeType":"UncheckedBlock","src":"10063:46:47","statements":[{"expression":{"id":12205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"10091:3:47","subExpression":{"id":12204,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12184,"src":"10093:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12206,"nodeType":"ExpressionStatement","src":"10091:3:47"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12186,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12184,"src":"9896:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12187,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12178,"src":"9900:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9896:10:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12209,"initializationExpression":{"assignments":[12184],"declarations":[{"constant":false,"id":12184,"mutability":"mutable","name":"i","nameLocation":"9893:1:47","nodeType":"VariableDeclaration","scope":12209,"src":"9885:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12183,"name":"uint256","nodeType":"ElementaryTypeName","src":"9885:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12185,"nodeType":"VariableDeclarationStatement","src":"9885:9:47"},"nodeType":"ForStatement","src":"9880:239:47"}]},"id":12211,"implemented":true,"kind":"function","modifiers":[],"name":"_mintSequential","nameLocation":"9802:15:47","nodeType":"FunctionDefinition","parameters":{"id":12181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12176,"mutability":"mutable","name":"to","nameLocation":"9826:2:47","nodeType":"VariableDeclaration","scope":12211,"src":"9818:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12175,"name":"address","nodeType":"ElementaryTypeName","src":"9818:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12178,"mutability":"mutable","name":"amount","nameLocation":"9838:6:47","nodeType":"VariableDeclaration","scope":12211,"src":"9830:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12177,"name":"uint256","nodeType":"ElementaryTypeName","src":"9830:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12180,"mutability":"mutable","name":"soulbound","nameLocation":"9851:9:47","nodeType":"VariableDeclaration","scope":12211,"src":"9846:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12179,"name":"bool","nodeType":"ElementaryTypeName","src":"9846:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9817:44:47"},"returnParameters":{"id":12182,"nodeType":"ParameterList","parameters":[],"src":"9870:0:47"},"scope":13618,"src":"9793:332:47","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":12236,"nodeType":"Block","src":"10201:158:47","statements":[{"body":{"id":12234,"nodeType":"Block","src":"10241:112:47","statements":[{"id":12233,"nodeType":"UncheckedBlock","src":"10255:88:47","statements":[{"expression":{"arguments":[{"id":12225,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12213,"src":"10289:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"10293:13:47","subExpression":{"id":12226,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"10295:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":12224,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"10283:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10283:24:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12229,"nodeType":"ExpressionStatement","src":"10283:24:47"},{"expression":{"id":12231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"10325:3:47","subExpression":{"id":12230,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12219,"src":"10327:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12232,"nodeType":"ExpressionStatement","src":"10325:3:47"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12221,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12219,"src":"10227:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12222,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12215,"src":"10231:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10227:10:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12235,"initializationExpression":{"assignments":[12219],"declarations":[{"constant":false,"id":12219,"mutability":"mutable","name":"i","nameLocation":"10224:1:47","nodeType":"VariableDeclaration","scope":12235,"src":"10216:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12218,"name":"uint256","nodeType":"ElementaryTypeName","src":"10216:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12220,"nodeType":"VariableDeclarationStatement","src":"10216:9:47"},"nodeType":"ForStatement","src":"10211:142:47"}]},"id":12237,"implemented":true,"kind":"function","modifiers":[],"name":"_mintSequential","nameLocation":"10140:15:47","nodeType":"FunctionDefinition","parameters":{"id":12216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12213,"mutability":"mutable","name":"to","nameLocation":"10164:2:47","nodeType":"VariableDeclaration","scope":12237,"src":"10156:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12212,"name":"address","nodeType":"ElementaryTypeName","src":"10156:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12215,"mutability":"mutable","name":"amount","nameLocation":"10176:6:47","nodeType":"VariableDeclaration","scope":12237,"src":"10168:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12214,"name":"uint256","nodeType":"ElementaryTypeName","src":"10168:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10155:28:47"},"returnParameters":{"id":12217,"nodeType":"ParameterList","parameters":[],"src":"10201:0:47"},"scope":13618,"src":"10131:228:47","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[144],"body":{"id":12256,"nodeType":"Block","src":"10859:95:47","statements":[{"expression":{"arguments":[{"id":12247,"name":"_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10301,"src":"10885:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12248,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12242,"src":"10897:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12246,"name":"_requirePayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13519,"src":"10869:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10869:35:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12250,"nodeType":"ExpressionStatement","src":"10869:35:47"},{"expression":{"arguments":[{"id":12252,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12240,"src":"10936:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12253,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12242,"src":"10940:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12251,"name":"_mintRandomWithChecks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12347,"src":"10914:21:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10914:33:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12255,"nodeType":"ExpressionStatement","src":"10914:33:47"}]},"documentation":{"id":12238,"nodeType":"StructuredDocumentation","src":"10365:413:47","text":"@notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\n @param to The address of the NFTs receiver\n @param amount The number of NFTs to mint "},"functionSelector":"1d7df191","id":12257,"implemented":true,"kind":"function","modifiers":[],"name":"mintRandomTo","nameLocation":"10792:12:47","nodeType":"FunctionDefinition","overrides":{"id":12244,"nodeType":"OverrideSpecifier","overrides":[],"src":"10850:8:47"},"parameters":{"id":12243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12240,"mutability":"mutable","name":"to","nameLocation":"10813:2:47","nodeType":"VariableDeclaration","scope":12257,"src":"10805:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12239,"name":"address","nodeType":"ElementaryTypeName","src":"10805:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12242,"mutability":"mutable","name":"amount","nameLocation":"10825:6:47","nodeType":"VariableDeclaration","scope":12257,"src":"10817:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12241,"name":"uint256","nodeType":"ElementaryTypeName","src":"10817:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10804:28:47"},"returnParameters":{"id":12245,"nodeType":"ParameterList","parameters":[],"src":"10859:0:47"},"scope":13618,"src":"10783:171:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[154],"body":{"id":12278,"nodeType":"Block","src":"11545:108:47","statements":[{"expression":{"arguments":[{"id":12269,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12262,"src":"11585:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12270,"name":"affiliate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12264,"src":"11593:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12268,"name":"_requirePaymentWithAffiliates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13405,"src":"11555:29:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":12271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11555:48:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12272,"nodeType":"ExpressionStatement","src":"11555:48:47"},{"expression":{"arguments":[{"id":12274,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12260,"src":"11635:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12275,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12262,"src":"11639:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12273,"name":"_mintRandomWithChecks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12347,"src":"11613:21:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11613:33:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12277,"nodeType":"ExpressionStatement","src":"11613:33:47"}]},"documentation":{"id":12258,"nodeType":"StructuredDocumentation","src":"10960:485:47","text":"@notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\n @param to The address of the NFTs receiver\n @param amount The number of NFTs to mint \n @param affiliate The affiliate address"},"functionSelector":"fefa5d72","id":12279,"implemented":true,"kind":"function","modifiers":[],"name":"mintRandomTo","nameLocation":"11459:12:47","nodeType":"FunctionDefinition","overrides":{"id":12266,"nodeType":"OverrideSpecifier","overrides":[],"src":"11536:8:47"},"parameters":{"id":12265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12260,"mutability":"mutable","name":"to","nameLocation":"11480:2:47","nodeType":"VariableDeclaration","scope":12279,"src":"11472:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12259,"name":"address","nodeType":"ElementaryTypeName","src":"11472:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12262,"mutability":"mutable","name":"amount","nameLocation":"11492:6:47","nodeType":"VariableDeclaration","scope":12279,"src":"11484:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12261,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12264,"mutability":"mutable","name":"affiliate","nameLocation":"11508:9:47","nodeType":"VariableDeclaration","scope":12279,"src":"11500:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12263,"name":"address","nodeType":"ElementaryTypeName","src":"11500:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11471:47:47"},"returnParameters":{"id":12267,"nodeType":"ParameterList","parameters":[],"src":"11545:0:47"},"scope":13618,"src":"11450:203:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":12346,"nodeType":"Block","src":"11726:518:47","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12286,"name":"_checkPhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13468,"src":"11736:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11736:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12288,"nodeType":"ExpressionStatement","src":"11736:13:47"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":12292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12289,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"11763:12:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":12290,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"11779:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":12291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11791:6:47","memberName":"RANDOM","nodeType":"MemberAccess","referencedDeclaration":409,"src":"11779:18:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"11763:34:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12296,"nodeType":"IfStatement","src":"11759:67:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12293,"name":"InvalidMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"11806:18:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11806:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12295,"nodeType":"RevertStatement","src":"11799:27:47"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12297,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"11840:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"id":12298,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12283,"src":"11855:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11854:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11840:22:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12301,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"11865:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11840:40:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12306,"nodeType":"IfStatement","src":"11836:72:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12303,"name":"CollectionSoldOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"11889:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11889:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12305,"nodeType":"RevertStatement","src":"11882:26:47"}},{"id":12331,"nodeType":"UncheckedBlock","src":"11919:184:47","statements":[{"expression":{"id":12315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":12307,"name":"_randomTickets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"11943:14:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_RandomTicket_$389_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.RandomTicket storage ref)"}},"id":12309,"indexExpression":{"id":12308,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12281,"src":"11958:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11943:18:47","typeDescriptions":{"typeIdentifier":"t_struct$_RandomTicket_$389_storage","typeString":"struct IN2M_ERCStorage.RandomTicket storage ref"}},"id":12310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11962:19:47","memberName":"blockNumberToReveal","nodeType":"MemberAccess","referencedDeclaration":388,"src":"11943:38:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12311,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"11984:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":12312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11990:6:47","memberName":"number","nodeType":"MemberAccess","src":"11984:12:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":12313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11999:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11984:16:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11943:57:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12316,"nodeType":"ExpressionStatement","src":"11943:57:47"},{"expression":{"id":12322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":12317,"name":"_randomTickets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"12014:14:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_RandomTicket_$389_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.RandomTicket storage ref)"}},"id":12319,"indexExpression":{"id":12318,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12281,"src":"12029:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12014:18:47","typeDescriptions":{"typeIdentifier":"t_struct$_RandomTicket_$389_storage","typeString":"struct IN2M_ERCStorage.RandomTicket storage ref"}},"id":12320,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12033:6:47","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":386,"src":"12014:25:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":12321,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12283,"src":"12043:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12014:35:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12323,"nodeType":"ExpressionStatement","src":"12014:35:47"},{"expression":{"id":12329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12324,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"12063:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":12327,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12283,"src":"12085:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12078:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":12325,"name":"uint32","nodeType":"ElementaryTypeName","src":"12078:6:47","typeDescriptions":{}}},"id":12328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12078:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"12063:29:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":12330,"nodeType":"ExpressionStatement","src":"12063:29:47"}]},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":12334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12332,"name":"_maxPerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"12117:14:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":12333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12135:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12117:19:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12345,"nodeType":"IfStatement","src":"12113:117:47","trueBody":{"id":12344,"nodeType":"Block","src":"12138:92:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12336,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12281,"src":"12167:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12335,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12020,"src":"12157:9:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":12337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12157:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12338,"name":"_maxPerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"12173:14:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"12157:30:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12343,"nodeType":"IfStatement","src":"12153:66:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12340,"name":"MaxPerAddressExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":343,"src":"12196:21:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12196:23:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12342,"nodeType":"RevertStatement","src":"12189:30:47"}}]}}]},"id":12347,"implemented":true,"kind":"function","modifiers":[],"name":"_mintRandomWithChecks","nameLocation":"11668:21:47","nodeType":"FunctionDefinition","parameters":{"id":12284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12281,"mutability":"mutable","name":"to","nameLocation":"11698:2:47","nodeType":"VariableDeclaration","scope":12347,"src":"11690:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12280,"name":"address","nodeType":"ElementaryTypeName","src":"11690:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12283,"mutability":"mutable","name":"amount","nameLocation":"11710:6:47","nodeType":"VariableDeclaration","scope":12347,"src":"11702:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12282,"name":"uint256","nodeType":"ElementaryTypeName","src":"11702:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11689:28:47"},"returnParameters":{"id":12285,"nodeType":"ParameterList","parameters":[],"src":"11726:0:47"},"scope":13618,"src":"11659:585:47","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[158],"body":{"id":12472,"nodeType":"Block","src":"12420:1070:47","statements":[{"assignments":[12353],"declarations":[{"constant":false,"id":12353,"mutability":"mutable","name":"blockNumberToReveal","nameLocation":"12438:19:47","nodeType":"VariableDeclaration","scope":12472,"src":"12430:27:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12352,"name":"uint256","nodeType":"ElementaryTypeName","src":"12430:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12359,"initialValue":{"expression":{"baseExpression":{"id":12354,"name":"_randomTickets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"12460:14:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_RandomTicket_$389_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.RandomTicket storage ref)"}},"id":12357,"indexExpression":{"expression":{"id":12355,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12475:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12479:6:47","memberName":"sender","nodeType":"MemberAccess","src":"12475:10:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12460:26:47","typeDescriptions":{"typeIdentifier":"t_struct$_RandomTicket_$389_storage","typeString":"struct IN2M_ERCStorage.RandomTicket storage ref"}},"id":12358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12487:19:47","memberName":"blockNumberToReveal","nodeType":"MemberAccess","referencedDeclaration":388,"src":"12460:46:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12430:76:47"},{"assignments":[12361],"declarations":[{"constant":false,"id":12361,"mutability":"mutable","name":"amountToRedeem","nameLocation":"12524:14:47","nodeType":"VariableDeclaration","scope":12472,"src":"12516:22:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12360,"name":"uint256","nodeType":"ElementaryTypeName","src":"12516:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12367,"initialValue":{"expression":{"baseExpression":{"id":12362,"name":"_randomTickets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"12541:14:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_RandomTicket_$389_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.RandomTicket storage ref)"}},"id":12365,"indexExpression":{"expression":{"id":12363,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12556:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12560:6:47","memberName":"sender","nodeType":"MemberAccess","src":"12556:10:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12541:26:47","typeDescriptions":{"typeIdentifier":"t_struct$_RandomTicket_$389_storage","typeString":"struct IN2M_ERCStorage.RandomTicket storage ref"}},"id":12366,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12568:6:47","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":386,"src":"12541:33:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12516:58:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12368,"name":"amountToRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12361,"src":"12589:14:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12607:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12589:19:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12374,"nodeType":"IfStatement","src":"12585:49:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12371,"name":"NothingToRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":283,"src":"12617:15:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12617:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12373,"nodeType":"RevertStatement","src":"12610:24:47"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12375,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12648:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":12376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12654:6:47","memberName":"number","nodeType":"MemberAccess","src":"12648:12:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"baseExpression":{"id":12377,"name":"_randomTickets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"12664:14:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_RandomTicket_$389_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.RandomTicket storage ref)"}},"id":12380,"indexExpression":{"expression":{"id":12378,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12679:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12683:6:47","memberName":"sender","nodeType":"MemberAccess","src":"12679:10:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12664:26:47","typeDescriptions":{"typeIdentifier":"t_struct$_RandomTicket_$389_storage","typeString":"struct IN2M_ERCStorage.RandomTicket storage ref"}},"id":12381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12691:19:47","memberName":"blockNumberToReveal","nodeType":"MemberAccess","referencedDeclaration":388,"src":"12664:46:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12648:62:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12386,"nodeType":"IfStatement","src":"12644:114:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12383,"name":"CantRevealYetWaitABitToBeAbleToRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":286,"src":"12719:37:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12719:39:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12385,"nodeType":"RevertStatement","src":"12712:46:47"}},{"assignments":[12388],"declarations":[{"constant":false,"id":12388,"mutability":"mutable","name":"seedFromBlockNumber","nameLocation":"12777:19:47","nodeType":"VariableDeclaration","scope":12472,"src":"12769:27:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12769:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12392,"initialValue":{"arguments":[{"id":12390,"name":"blockNumberToReveal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12353,"src":"12809:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12389,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"12799:9:47","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":12391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12799:30:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"12769:60:47"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":12395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12393,"name":"seedFromBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12388,"src":"12844:19:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12867:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12844:24:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12435,"nodeType":"IfStatement","src":"12840:323:47","trueBody":{"id":12434,"nodeType":"Block","src":"12870:293:47","statements":[{"assignments":[12397],"declarations":[{"constant":false,"id":12397,"mutability":"mutable","name":"newBlockNumber","nameLocation":"12893:14:47","nodeType":"VariableDeclaration","scope":12434,"src":"12885:22:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12396,"name":"uint256","nodeType":"ElementaryTypeName","src":"12885:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12416,"initialValue":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12398,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12912:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":12399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12918:6:47","memberName":"number","nodeType":"MemberAccess","src":"12912:12:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"arguments":[{"id":12405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"12942:6:47","subExpression":{"hexValue":"3078313030","id":12404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12943:5:47","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_256_by_1","typeString":"int_const -256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_256_by_1","typeString":"int_const -256"}],"id":12403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12935:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":12402,"name":"int256","nodeType":"ElementaryTypeName","src":"12935:6:47","typeDescriptions":{}}},"id":12406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12935:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12927:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12400,"name":"uint256","nodeType":"ElementaryTypeName","src":"12927:7:47","typeDescriptions":{}}},"id":12407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12927:23:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12912:38:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12409,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12911:40:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12410,"name":"blockNumberToReveal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12353,"src":"12955:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30786666","id":12411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12977:4:47","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"12955:26:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12413,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12954:28:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12911:71:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12415,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12910:73:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12885:98:47"},{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12417,"name":"newBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"13003:14:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":12418,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"13021:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":12419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13027:6:47","memberName":"number","nodeType":"MemberAccess","src":"13021:12:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13003:30:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12421,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13002:32:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12427,"nodeType":"IfStatement","src":"12998:93:47","trueBody":{"id":12426,"nodeType":"Block","src":"13036:55:47","statements":[{"expression":{"id":12424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12422,"name":"newBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"13054:14:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"323536","id":12423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13072:3:47","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"13054:21:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12425,"nodeType":"ExpressionStatement","src":"13054:21:47"}]}},{"expression":{"id":12432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12428,"name":"seedFromBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12388,"src":"13104:19:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12430,"name":"newBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"13136:14:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12429,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"13126:9:47","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":12431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13126:25:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13104:47:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":12433,"nodeType":"ExpressionStatement","src":"13104:47:47"}]}},{"expression":{"id":12442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13173:54:47","subExpression":{"components":[{"expression":{"baseExpression":{"id":12436,"name":"_randomTickets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"13180:14:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_RandomTicket_$389_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.RandomTicket storage ref)"}},"id":12439,"indexExpression":{"expression":{"id":12437,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13195:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13199:6:47","memberName":"sender","nodeType":"MemberAccess","src":"13195:10:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13180:26:47","typeDescriptions":{"typeIdentifier":"t_struct$_RandomTicket_$389_storage","typeString":"struct IN2M_ERCStorage.RandomTicket storage ref"}},"id":12440,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13207:19:47","memberName":"blockNumberToReveal","nodeType":"MemberAccess","referencedDeclaration":388,"src":"13180:46:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12441,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13179:48:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12443,"nodeType":"ExpressionStatement","src":"13173:54:47"},{"expression":{"id":12450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13237:41:47","subExpression":{"components":[{"expression":{"baseExpression":{"id":12444,"name":"_randomTickets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"13244:14:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_RandomTicket_$389_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.RandomTicket storage ref)"}},"id":12447,"indexExpression":{"expression":{"id":12445,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13259:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13263:6:47","memberName":"sender","nodeType":"MemberAccess","src":"13259:10:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13244:26:47","typeDescriptions":{"typeIdentifier":"t_struct$_RandomTicket_$389_storage","typeString":"struct IN2M_ERCStorage.RandomTicket storage ref"}},"id":12448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13271:6:47","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":386,"src":"13244:33:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12449,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13243:35:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12451,"nodeType":"ExpressionStatement","src":"13237:41:47"},{"assignments":[12453],"declarations":[{"constant":false,"id":12453,"mutability":"mutable","name":"maxPerAddressTemp","nameLocation":"13296:17:47","nodeType":"VariableDeclaration","scope":12472,"src":"13289:24:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12452,"name":"uint16","nodeType":"ElementaryTypeName","src":"13289:6:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":12455,"initialValue":{"id":12454,"name":"_maxPerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"13316:14:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"13289:41:47"},{"expression":{"id":12458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13340:22:47","subExpression":{"components":[{"id":12456,"name":"_maxPerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"13347:14:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":12457,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13346:16:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12459,"nodeType":"ExpressionStatement","src":"13340:22:47"},{"expression":{"arguments":[{"expression":{"id":12461,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13384:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13388:6:47","memberName":"sender","nodeType":"MemberAccess","src":"13384:10:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12463,"name":"amountToRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12361,"src":"13396:14:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12464,"name":"seedFromBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12388,"src":"13412:19:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":12465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13433:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12460,"name":"_mintRandom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12514,"src":"13372:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (address,uint256,bytes32,bool)"}},"id":12466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13372:67:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12467,"nodeType":"ExpressionStatement","src":"13372:67:47"},{"expression":{"id":12470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12468,"name":"_maxPerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"13449:14:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12469,"name":"maxPerAddressTemp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12453,"src":"13466:17:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"13449:34:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":12471,"nodeType":"ExpressionStatement","src":"13449:34:47"}]},"documentation":{"id":12348,"nodeType":"StructuredDocumentation","src":"12250:115:47","text":"@notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs."},"functionSelector":"1ff4cc7d","id":12473,"implemented":true,"kind":"function","modifiers":[],"name":"redeemRandom","nameLocation":"12379:12:47","nodeType":"FunctionDefinition","overrides":{"id":12350,"nodeType":"OverrideSpecifier","overrides":[],"src":"12411:8:47"},"parameters":{"id":12349,"nodeType":"ParameterList","parameters":[],"src":"12391:2:47"},"returnParameters":{"id":12351,"nodeType":"ParameterList","parameters":[],"src":"12420:0:47"},"scope":13618,"src":"12370:1120:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":12513,"nodeType":"Block","src":"13583:259:47","statements":[{"body":{"id":12511,"nodeType":"Block","src":"13614:222:47","statements":[{"assignments":[12488],"declarations":[{"constant":false,"id":12488,"mutability":"mutable","name":"tokenId","nameLocation":"13636:7:47","nodeType":"VariableDeclaration","scope":12511,"src":"13628:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12487,"name":"uint256","nodeType":"ElementaryTypeName","src":"13628:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12493,"initialValue":{"arguments":[{"id":12490,"name":"seed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12479,"src":"13661:4:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12491,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12477,"src":"13667:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12489,"name":"_randomTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"13646:14:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bytes32,uint256) view returns (uint256)"}},"id":12492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13646:28:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13628:46:47"},{"expression":{"arguments":[{"id":12495,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12475,"src":"13694:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12496,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12488,"src":"13698:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12494,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"13688:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13688:18:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12498,"nodeType":"ExpressionStatement","src":"13688:18:47"},{"condition":{"id":12499,"name":"soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12481,"src":"13724:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12506,"nodeType":"IfStatement","src":"13720:41:47","trueBody":{"expression":{"id":12504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12500,"name":"_soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"13735:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":12502,"indexExpression":{"id":12501,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12488,"src":"13746:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13735:19:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13757:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"13735:26:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12505,"nodeType":"ExpressionStatement","src":"13735:26:47"}},{"id":12510,"nodeType":"UncheckedBlock","src":"13775:51:47","statements":[{"expression":{"id":12508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"13803:8:47","subExpression":{"id":12507,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12477,"src":"13805:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12509,"nodeType":"ExpressionStatement","src":"13803:8:47"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12484,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12477,"src":"13600:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13609:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13600:10:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12512,"nodeType":"ForStatement","src":"13593:243:47"}]},"id":12514,"implemented":true,"kind":"function","modifiers":[],"name":"_mintRandom","nameLocation":"13505:11:47","nodeType":"FunctionDefinition","parameters":{"id":12482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12475,"mutability":"mutable","name":"to","nameLocation":"13525:2:47","nodeType":"VariableDeclaration","scope":12514,"src":"13517:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12474,"name":"address","nodeType":"ElementaryTypeName","src":"13517:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12477,"mutability":"mutable","name":"amount","nameLocation":"13537:6:47","nodeType":"VariableDeclaration","scope":12514,"src":"13529:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12476,"name":"uint256","nodeType":"ElementaryTypeName","src":"13529:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12479,"mutability":"mutable","name":"seed","nameLocation":"13553:4:47","nodeType":"VariableDeclaration","scope":12514,"src":"13545:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12478,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13545:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12481,"mutability":"mutable","name":"soulbound","nameLocation":"13564:9:47","nodeType":"VariableDeclaration","scope":12514,"src":"13559:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12480,"name":"bool","nodeType":"ElementaryTypeName","src":"13559:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13516:58:47"},"returnParameters":{"id":12483,"nodeType":"ParameterList","parameters":[],"src":"13583:0:47"},"scope":13618,"src":"13496:346:47","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":12556,"nodeType":"Block","src":"13948:252:47","statements":[{"expression":{"id":12539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12523,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12521,"src":"13959:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":12529,"name":"seed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12516,"src":"14005:4:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12530,"name":"extraModifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12518,"src":"14011:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12527,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13988:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13992:12:47","memberName":"encodePacked","nodeType":"MemberAccess","src":"13988:16:47","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13988:37:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13978:9:47","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13978:48:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":12525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13970:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12524,"name":"uint256","nodeType":"ElementaryTypeName","src":"13970:7:47","typeDescriptions":{}}},"id":12533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13970:57:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":12534,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"14030:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"13970:75:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12536,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13969:77:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":12537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14049:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13969:81:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13959:91:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12540,"nodeType":"ExpressionStatement","src":"13959:91:47"},{"body":{"id":12554,"nodeType":"Block","src":"14086:108:47","statements":[{"id":12553,"nodeType":"UncheckedBlock","src":"14100:84:47","statements":[{"expression":{"id":12551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12544,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12521,"src":"14128:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12545,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12521,"src":"14139:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":12546,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"14149:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"14139:25:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12548,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14138:27:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":12549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14168:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14138:31:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14128:41:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12552,"nodeType":"ExpressionStatement","src":"14128:41:47"}]}]},"condition":{"arguments":[{"id":12542,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12521,"src":"14076:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12541,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11999,"src":"14068:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":12543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14068:16:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12555,"nodeType":"WhileStatement","src":"14061:133:47"}]},"id":12557,"implemented":true,"kind":"function","modifiers":[],"name":"_randomTokenId","nameLocation":"13857:14:47","nodeType":"FunctionDefinition","parameters":{"id":12519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12516,"mutability":"mutable","name":"seed","nameLocation":"13880:4:47","nodeType":"VariableDeclaration","scope":12557,"src":"13872:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12515,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13872:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12518,"mutability":"mutable","name":"extraModifier","nameLocation":"13894:13:47","nodeType":"VariableDeclaration","scope":12557,"src":"13886:21:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12517,"name":"uint256","nodeType":"ElementaryTypeName","src":"13886:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13871:37:47"},"returnParameters":{"id":12522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12521,"mutability":"mutable","name":"tokenId","nameLocation":"13939:7:47","nodeType":"VariableDeclaration","scope":12557,"src":"13931:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12520,"name":"uint256","nodeType":"ElementaryTypeName","src":"13931:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13930:17:47"},"scope":13618,"src":"13848:352:47","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[167],"body":{"id":12578,"nodeType":"Block","src":"14664:107:47","statements":[{"expression":{"arguments":[{"id":12568,"name":"_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10301,"src":"14690:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12569,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12563,"src":"14702:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14711:6:47","memberName":"length","nodeType":"MemberAccess","src":"14702:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12567,"name":"_requirePayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13519,"src":"14674:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14674:44:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12572,"nodeType":"ExpressionStatement","src":"14674:44:47"},{"expression":{"arguments":[{"id":12574,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12560,"src":"14751:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12575,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12563,"src":"14755:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":12573,"name":"_mintSpecifyWithChecks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12639,"src":"14728:22:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,uint256[] memory)"}},"id":12576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14728:36:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12577,"nodeType":"ExpressionStatement","src":"14728:36:47"}]},"documentation":{"id":12558,"nodeType":"StructuredDocumentation","src":"14206:337:47","text":"@notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param to The address of the NFTs receiver\n @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert."},"functionSelector":"4402d254","id":12579,"implemented":true,"kind":"function","modifiers":[],"name":"mintSpecifyTo","nameLocation":"14557:13:47","nodeType":"FunctionDefinition","overrides":{"id":12565,"nodeType":"OverrideSpecifier","overrides":[],"src":"14651:8:47"},"parameters":{"id":12564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12560,"mutability":"mutable","name":"to","nameLocation":"14579:2:47","nodeType":"VariableDeclaration","scope":12579,"src":"14571:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12559,"name":"address","nodeType":"ElementaryTypeName","src":"14571:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12563,"mutability":"mutable","name":"tokenIds","nameLocation":"14600:8:47","nodeType":"VariableDeclaration","scope":12579,"src":"14583:25:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12561,"name":"uint256","nodeType":"ElementaryTypeName","src":"14583:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12562,"nodeType":"ArrayTypeName","src":"14583:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14570:39:47"},"returnParameters":{"id":12566,"nodeType":"ParameterList","parameters":[],"src":"14664:0:47"},"scope":13618,"src":"14548:223:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[178],"body":{"id":12602,"nodeType":"Block","src":"15327:120:47","statements":[{"expression":{"arguments":[{"expression":{"id":12592,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12585,"src":"15367:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15376:6:47","memberName":"length","nodeType":"MemberAccess","src":"15367:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12594,"name":"affiliate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12587,"src":"15384:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12591,"name":"_requirePaymentWithAffiliates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13405,"src":"15337:29:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":12595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15337:57:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12596,"nodeType":"ExpressionStatement","src":"15337:57:47"},{"expression":{"arguments":[{"id":12598,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12582,"src":"15427:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12599,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12585,"src":"15431:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":12597,"name":"_mintSpecifyWithChecks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12639,"src":"15404:22:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,uint256[] memory)"}},"id":12600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15404:36:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12601,"nodeType":"ExpressionStatement","src":"15404:36:47"}]},"documentation":{"id":12580,"nodeType":"StructuredDocumentation","src":"14777:409:47","text":"@notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param to The address of the NFTs receiver\n @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n @param affiliate The affiliate address"},"functionSelector":"4a50aa85","id":12603,"implemented":true,"kind":"function","modifiers":[],"name":"mintSpecifyTo","nameLocation":"15200:13:47","nodeType":"FunctionDefinition","overrides":{"id":12589,"nodeType":"OverrideSpecifier","overrides":[],"src":"15314:8:47"},"parameters":{"id":12588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12582,"mutability":"mutable","name":"to","nameLocation":"15222:2:47","nodeType":"VariableDeclaration","scope":12603,"src":"15214:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12581,"name":"address","nodeType":"ElementaryTypeName","src":"15214:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12585,"mutability":"mutable","name":"tokenIds","nameLocation":"15243:8:47","nodeType":"VariableDeclaration","scope":12603,"src":"15226:25:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12583,"name":"uint256","nodeType":"ElementaryTypeName","src":"15226:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12584,"nodeType":"ArrayTypeName","src":"15226:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":12587,"mutability":"mutable","name":"affiliate","nameLocation":"15261:9:47","nodeType":"VariableDeclaration","scope":12603,"src":"15253:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12586,"name":"address","nodeType":"ElementaryTypeName","src":"15253:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15213:58:47"},"returnParameters":{"id":12590,"nodeType":"ParameterList","parameters":[],"src":"15327:0:47"},"scope":13618,"src":"15191:256:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":12638,"nodeType":"Block","src":"15544:237:47","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12611,"name":"_checkPhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13468,"src":"15554:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15554:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12613,"nodeType":"ExpressionStatement","src":"15554:13:47"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":12617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12614,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"15581:12:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":12615,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"15597:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":12616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15609:7:47","memberName":"SPECIFY","nodeType":"MemberAccess","referencedDeclaration":410,"src":"15597:19:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"15581:35:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12621,"nodeType":"IfStatement","src":"15577:68:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12618,"name":"InvalidMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"15625:18:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15625:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12620,"nodeType":"RevertStatement","src":"15618:27:47"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12622,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"15660:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"expression":{"id":12623,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12608,"src":"15675:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15684:6:47","memberName":"length","nodeType":"MemberAccess","src":"15675:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12625,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15674:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15660:31:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12627,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"15694:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15660:49:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12632,"nodeType":"IfStatement","src":"15656:81:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12629,"name":"CollectionSoldOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"15718:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15718:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12631,"nodeType":"RevertStatement","src":"15711:26:47"}},{"expression":{"arguments":[{"id":12634,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12605,"src":"15761:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12635,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12608,"src":"15765:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":12633,"name":"_mintSpecify","nodeType":"Identifier","overloadedDeclarations":[12683,12739],"referencedDeclaration":12739,"src":"15748:12:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,uint256[] memory)"}},"id":12636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15748:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12637,"nodeType":"ExpressionStatement","src":"15748:26:47"}]},"id":12639,"implemented":true,"kind":"function","modifiers":[],"name":"_mintSpecifyWithChecks","nameLocation":"15462:22:47","nodeType":"FunctionDefinition","parameters":{"id":12609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12605,"mutability":"mutable","name":"to","nameLocation":"15493:2:47","nodeType":"VariableDeclaration","scope":12639,"src":"15485:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12604,"name":"address","nodeType":"ElementaryTypeName","src":"15485:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12608,"mutability":"mutable","name":"tokenIds","nameLocation":"15514:8:47","nodeType":"VariableDeclaration","scope":12639,"src":"15497:25:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12606,"name":"uint256","nodeType":"ElementaryTypeName","src":"15497:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12607,"nodeType":"ArrayTypeName","src":"15497:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"15484:39:47"},"returnParameters":{"id":12610,"nodeType":"ParameterList","parameters":[],"src":"15544:0:47"},"scope":13618,"src":"15453:328:47","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":12682,"nodeType":"Block","src":"15902:315:47","statements":[{"expression":{"arguments":[{"id":12650,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12641,"src":"15925:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12651,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"15929:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":12649,"name":"_mintSpecify","nodeType":"Identifier","overloadedDeclarations":[12683,12739],"referencedDeclaration":12739,"src":"15912:12:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,uint256[] memory)"}},"id":12652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15912:26:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12653,"nodeType":"ExpressionStatement","src":"15912:26:47"},{"assignments":[12655],"declarations":[{"constant":false,"id":12655,"mutability":"mutable","name":"inputLength","nameLocation":"15956:11:47","nodeType":"VariableDeclaration","scope":12682,"src":"15948:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12654,"name":"uint256","nodeType":"ElementaryTypeName","src":"15948:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12658,"initialValue":{"expression":{"id":12656,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"15970:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15979:6:47","memberName":"length","nodeType":"MemberAccess","src":"15970:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15948:37:47"},{"condition":{"id":12659,"name":"soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"16007:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12681,"nodeType":"IfStatement","src":"16003:208:47","trueBody":{"id":12680,"nodeType":"Block","src":"16018:193:47","statements":[{"body":{"id":12678,"nodeType":"Block","src":"16067:134:47","statements":[{"expression":{"id":12672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12666,"name":"_soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"16085:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":12670,"indexExpression":{"baseExpression":{"id":12667,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"16096:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12669,"indexExpression":{"id":12668,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12661,"src":"16105:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16096:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16085:23:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16111:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"16085:30:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12673,"nodeType":"ExpressionStatement","src":"16085:30:47"},{"id":12677,"nodeType":"UncheckedBlock","src":"16133:54:47","statements":[{"expression":{"id":12675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"16165:3:47","subExpression":{"id":12674,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12661,"src":"16167:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12676,"nodeType":"ExpressionStatement","src":"16165:3:47"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12663,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12661,"src":"16048:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12664,"name":"inputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12655,"src":"16052:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16048:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12679,"initializationExpression":{"assignments":[12661],"declarations":[{"constant":false,"id":12661,"mutability":"mutable","name":"i","nameLocation":"16045:1:47","nodeType":"VariableDeclaration","scope":12679,"src":"16037:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12660,"name":"uint256","nodeType":"ElementaryTypeName","src":"16037:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12662,"nodeType":"VariableDeclarationStatement","src":"16037:9:47"},"nodeType":"ForStatement","src":"16032:169:47"}]}}]},"id":12683,"implemented":true,"kind":"function","modifiers":[],"name":"_mintSpecify","nameLocation":"15796:12:47","nodeType":"FunctionDefinition","parameters":{"id":12647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12641,"mutability":"mutable","name":"to","nameLocation":"15826:2:47","nodeType":"VariableDeclaration","scope":12683,"src":"15818:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12640,"name":"address","nodeType":"ElementaryTypeName","src":"15818:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12644,"mutability":"mutable","name":"tokenIds","nameLocation":"15855:8:47","nodeType":"VariableDeclaration","scope":12683,"src":"15838:25:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12642,"name":"uint256","nodeType":"ElementaryTypeName","src":"15838:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12643,"nodeType":"ArrayTypeName","src":"15838:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":12646,"mutability":"mutable","name":"soulbound","nameLocation":"15878:9:47","nodeType":"VariableDeclaration","scope":12683,"src":"15873:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12645,"name":"bool","nodeType":"ElementaryTypeName","src":"15873:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15808:85:47"},"returnParameters":{"id":12648,"nodeType":"ParameterList","parameters":[],"src":"15902:0:47"},"scope":13618,"src":"15787:430:47","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":12738,"nodeType":"Block","src":"16321:407:47","statements":[{"assignments":[12692],"declarations":[{"constant":false,"id":12692,"mutability":"mutable","name":"inputLength","nameLocation":"16340:11:47","nodeType":"VariableDeclaration","scope":12738,"src":"16332:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12691,"name":"uint256","nodeType":"ElementaryTypeName","src":"16332:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12695,"initialValue":{"expression":{"id":12693,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12688,"src":"16354:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16363:6:47","memberName":"length","nodeType":"MemberAccess","src":"16354:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16332:37:47"},{"id":12703,"nodeType":"UncheckedBlock","src":"16379:69:47","statements":[{"expression":{"id":12701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12696,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"16403:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":12699,"name":"inputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12692,"src":"16425:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16418:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":12697,"name":"uint32","nodeType":"ElementaryTypeName","src":"16418:6:47","typeDescriptions":{}}},"id":12700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16418:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"16403:34:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":12702,"nodeType":"ExpressionStatement","src":"16403:34:47"}]},{"body":{"id":12736,"nodeType":"Block","src":"16492:230:47","statements":[{"assignments":[12711],"declarations":[{"constant":false,"id":12711,"mutability":"mutable","name":"tokenId","nameLocation":"16514:7:47","nodeType":"VariableDeclaration","scope":12736,"src":"16506:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12710,"name":"uint256","nodeType":"ElementaryTypeName","src":"16506:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12715,"initialValue":{"baseExpression":{"id":12712,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12688,"src":"16524:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12714,"indexExpression":{"id":12713,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12705,"src":"16533:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16524:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16506:29:47"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12716,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12711,"src":"16554:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16565:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16554:12:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12719,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12711,"src":"16570:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12720,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"16580:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"16570:25:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16554:41:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12726,"nodeType":"IfStatement","src":"16550:70:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12723,"name":"InvalidTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":280,"src":"16604:14:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16604:16:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12725,"nodeType":"RevertStatement","src":"16597:23:47"}},{"expression":{"arguments":[{"id":12728,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12685,"src":"16640:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12729,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12711,"src":"16644:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12727,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"16634:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16634:18:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12731,"nodeType":"ExpressionStatement","src":"16634:18:47"},{"id":12735,"nodeType":"UncheckedBlock","src":"16666:46:47","statements":[{"expression":{"id":12733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"16694:3:47","subExpression":{"id":12732,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12705,"src":"16696:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12734,"nodeType":"ExpressionStatement","src":"16694:3:47"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12707,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12705,"src":"16473:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12708,"name":"inputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12692,"src":"16477:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16473:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12737,"initializationExpression":{"assignments":[12705],"declarations":[{"constant":false,"id":12705,"mutability":"mutable","name":"i","nameLocation":"16470:1:47","nodeType":"VariableDeclaration","scope":12737,"src":"16462:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12704,"name":"uint256","nodeType":"ElementaryTypeName","src":"16462:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12706,"nodeType":"VariableDeclarationStatement","src":"16462:9:47"},"nodeType":"ForStatement","src":"16457:265:47"}]},"id":12739,"implemented":true,"kind":"function","modifiers":[],"name":"_mintSpecify","nameLocation":"16232:12:47","nodeType":"FunctionDefinition","parameters":{"id":12689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12685,"mutability":"mutable","name":"to","nameLocation":"16253:2:47","nodeType":"VariableDeclaration","scope":12739,"src":"16245:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12684,"name":"address","nodeType":"ElementaryTypeName","src":"16245:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12688,"mutability":"mutable","name":"tokenIds","nameLocation":"16274:8:47","nodeType":"VariableDeclaration","scope":12739,"src":"16257:25:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12686,"name":"uint256","nodeType":"ElementaryTypeName","src":"16257:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12687,"nodeType":"ArrayTypeName","src":"16257:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"16244:39:47"},"returnParameters":{"id":12690,"nodeType":"ParameterList","parameters":[],"src":"16321:0:47"},"scope":13618,"src":"16223:505:47","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[188],"body":{"id":12796,"nodeType":"Block","src":"17170:443:47","statements":[{"expression":{"arguments":[{"id":12751,"name":"_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10301,"src":"17196:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":12752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17208:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":12750,"name":"_requirePayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13519,"src":"17180:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17180:30:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12754,"nodeType":"ExpressionStatement","src":"17180:30:47"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12755,"name":"_checkPhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13468,"src":"17220:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17220:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12757,"nodeType":"ExpressionStatement","src":"17220:13:47"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":12761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12758,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"17247:12:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":12759,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"17263:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":12760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17275:10:47","memberName":"CUSTOM_URI","nodeType":"MemberAccess","referencedDeclaration":411,"src":"17263:22:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"17247:38:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12765,"nodeType":"IfStatement","src":"17243:71:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12762,"name":"InvalidMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"17294:18:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17294:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12764,"nodeType":"RevertStatement","src":"17287:27:47"}},{"id":12775,"nodeType":"UncheckedBlock","src":"17324:100:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":12770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"id":12767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"17353:13:47","subExpression":{"id":12766,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"17355:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":12768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17352:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12769,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"17370:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"17352:33:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12774,"nodeType":"IfStatement","src":"17348:65:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12771,"name":"CollectionSoldOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"17394:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17394:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12773,"nodeType":"RevertStatement","src":"17387:26:47"}}]},{"expression":{"arguments":[{"id":12777,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12742,"src":"17439:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12778,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"17443:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":12776,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"17433:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17433:22:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12780,"nodeType":"ExpressionStatement","src":"17433:22:47"},{"id":12789,"nodeType":"UncheckedBlock","src":"17466:80:47","statements":[{"condition":{"id":12781,"name":"soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"17494:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12788,"nodeType":"IfStatement","src":"17490:45:47","trueBody":{"expression":{"id":12786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12782,"name":"_soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"17505:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":12784,"indexExpression":{"id":12783,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"17516:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17505:23:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17531:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"17505:30:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12787,"nodeType":"ExpressionStatement","src":"17505:30:47"}}]},{"expression":{"id":12794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12790,"name":"_customURICIDHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10332,"src":"17555:19:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":12792,"indexExpression":{"id":12791,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"17575:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17555:32:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12793,"name":"customURICIDHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12744,"src":"17590:16:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"17555:51:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":12795,"nodeType":"ExpressionStatement","src":"17555:51:47"}]},"documentation":{"id":12740,"nodeType":"StructuredDocumentation","src":"16734:298:47","text":"@notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\n @param to The address of the NFTs receiver\n @param customURICIDHash The CID of the given token.\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred."},"functionSelector":"6ad54240","id":12797,"implemented":true,"kind":"function","modifiers":[],"name":"mintCustomURITo","nameLocation":"17046:15:47","nodeType":"FunctionDefinition","overrides":{"id":12748,"nodeType":"OverrideSpecifier","overrides":[],"src":"17157:8:47"},"parameters":{"id":12747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12742,"mutability":"mutable","name":"to","nameLocation":"17070:2:47","nodeType":"VariableDeclaration","scope":12797,"src":"17062:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12741,"name":"address","nodeType":"ElementaryTypeName","src":"17062:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12744,"mutability":"mutable","name":"customURICIDHash","nameLocation":"17082:16:47","nodeType":"VariableDeclaration","scope":12797,"src":"17074:24:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12743,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17074:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12746,"mutability":"mutable","name":"soulbound","nameLocation":"17105:9:47","nodeType":"VariableDeclaration","scope":12797,"src":"17100:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12745,"name":"bool","nodeType":"ElementaryTypeName","src":"17100:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17061:54:47"},"returnParameters":{"id":12749,"nodeType":"ParameterList","parameters":[],"src":"17170:0:47"},"scope":13618,"src":"17037:576:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[197],"body":{"id":12861,"nodeType":"Block","src":"18066:448:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":12812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12809,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"18080:12:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":12810,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"18096:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":12811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18108:10:47","memberName":"SEQUENTIAL","nodeType":"MemberAccess","referencedDeclaration":408,"src":"18096:22:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"18080:38:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12816,"nodeType":"IfStatement","src":"18076:71:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12813,"name":"InvalidMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"18127:18:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18127:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12815,"nodeType":"RevertStatement","src":"18120:27:47"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12817,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"18161:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"expression":{"id":12818,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12801,"src":"18176:2:47","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18179:6:47","memberName":"length","nodeType":"MemberAccess","src":"18176:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12820,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18175:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18161:25:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12822,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"18189:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18161:43:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12827,"nodeType":"IfStatement","src":"18157:75:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12824,"name":"CollectionSoldOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"18213:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18213:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12826,"nodeType":"RevertStatement","src":"18206:26:47"}},{"assignments":[12829],"declarations":[{"constant":false,"id":12829,"mutability":"mutable","name":"toLength","nameLocation":"18251:8:47","nodeType":"VariableDeclaration","scope":12861,"src":"18243:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12828,"name":"uint256","nodeType":"ElementaryTypeName","src":"18243:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12832,"initialValue":{"expression":{"id":12830,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12801,"src":"18262:2:47","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18265:6:47","memberName":"length","nodeType":"MemberAccess","src":"18262:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18243:28:47"},{"body":{"id":12859,"nodeType":"Block","src":"18313:195:47","statements":[{"id":12858,"nodeType":"UncheckedBlock","src":"18328:170:47","statements":[{"expression":{"arguments":[{"baseExpression":{"id":12840,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12801,"src":"18362:2:47","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12842,"indexExpression":{"id":12841,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12834,"src":"18365:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18362:5:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"18369:13:47","subExpression":{"id":12843,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"18371:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":12839,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"18356:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18356:27:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12846,"nodeType":"ExpressionStatement","src":"18356:27:47"},{"condition":{"id":12847,"name":"soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12803,"src":"18421:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12854,"nodeType":"IfStatement","src":"18417:45:47","trueBody":{"expression":{"id":12852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12848,"name":"_soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"18432:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":12850,"indexExpression":{"id":12849,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"18443:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18432:23:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18458:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"18432:30:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12853,"nodeType":"ExpressionStatement","src":"18432:30:47"}},{"expression":{"id":12856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"18480:3:47","subExpression":{"id":12855,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12834,"src":"18482:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12857,"nodeType":"ExpressionStatement","src":"18480:3:47"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12836,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12834,"src":"18297:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12837,"name":"toLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"18301:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18297:12:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12860,"initializationExpression":{"assignments":[12834],"declarations":[{"constant":false,"id":12834,"mutability":"mutable","name":"i","nameLocation":"18294:1:47","nodeType":"VariableDeclaration","scope":12860,"src":"18286:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12833,"name":"uint256","nodeType":"ElementaryTypeName","src":"18286:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12835,"nodeType":"VariableDeclarationStatement","src":"18286:9:47"},"nodeType":"ForStatement","src":"18281:227:47"}]},"documentation":{"id":12798,"nodeType":"StructuredDocumentation","src":"17619:300:47","text":"@notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\n @param to The addresses of the NFTs receivers\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred."},"functionSelector":"68fdda33","id":12862,"implemented":true,"kind":"function","modifiers":[{"id":12807,"kind":"modifierInvocation","modifierName":{"id":12806,"name":"onlyStrictOwner","nameLocations":["18046:15:47"],"nodeType":"IdentifierPath","referencedDeclaration":637,"src":"18046:15:47"},"nodeType":"ModifierInvocation","src":"18046:15:47"}],"name":"airdropSequential","nameLocation":"17933:17:47","nodeType":"FunctionDefinition","overrides":{"id":12805,"nodeType":"OverrideSpecifier","overrides":[],"src":"18029:8:47"},"parameters":{"id":12804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12801,"mutability":"mutable","name":"to","nameLocation":"17968:2:47","nodeType":"VariableDeclaration","scope":12862,"src":"17951:19:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12799,"name":"address","nodeType":"ElementaryTypeName","src":"17951:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12800,"nodeType":"ArrayTypeName","src":"17951:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":12803,"mutability":"mutable","name":"soulbound","nameLocation":"17977:9:47","nodeType":"VariableDeclaration","scope":12862,"src":"17972:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12802,"name":"bool","nodeType":"ElementaryTypeName","src":"17972:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17950:37:47"},"returnParameters":{"id":12808,"nodeType":"ParameterList","parameters":[],"src":"18066:0:47"},"scope":13618,"src":"17924:590:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[206],"body":{"id":12948,"nodeType":"Block","src":"18974:614:47","statements":[{"assignments":[12875],"declarations":[{"constant":false,"id":12875,"mutability":"mutable","name":"toLength","nameLocation":"18992:8:47","nodeType":"VariableDeclaration","scope":12948,"src":"18984:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12874,"name":"uint256","nodeType":"ElementaryTypeName","src":"18984:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12878,"initialValue":{"expression":{"id":12876,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12866,"src":"19003:2:47","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19006:6:47","memberName":"length","nodeType":"MemberAccess","src":"19003:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18984:28:47"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":12882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12879,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"19026:12:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":12880,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"19042:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":12881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19054:6:47","memberName":"RANDOM","nodeType":"MemberAccess","referencedDeclaration":409,"src":"19042:18:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"19026:34:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12886,"nodeType":"IfStatement","src":"19022:67:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12883,"name":"InvalidMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"19069:18:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19069:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12885,"nodeType":"RevertStatement","src":"19062:27:47"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12887,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"19105:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":12888,"name":"toLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12875,"src":"19119:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19105:22:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12890,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19104:24:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12891,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"19131:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"19104:42:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12896,"nodeType":"IfStatement","src":"19100:74:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12893,"name":"CollectionSoldOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"19155:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19155:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12895,"nodeType":"RevertStatement","src":"19148:26:47"}},{"id":12904,"nodeType":"UncheckedBlock","src":"19185:66:47","statements":[{"expression":{"id":12902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12897,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"19209:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":12900,"name":"toLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12875,"src":"19231:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19224:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":12898,"name":"uint32","nodeType":"ElementaryTypeName","src":"19224:6:47","typeDescriptions":{}}},"id":12901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19224:16:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"19209:31:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":12903,"nodeType":"ExpressionStatement","src":"19209:31:47"}]},{"assignments":[12906],"declarations":[{"constant":false,"id":12906,"mutability":"mutable","name":"randomSeed","nameLocation":"19269:10:47","nodeType":"VariableDeclaration","scope":12948,"src":"19261:18:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12905,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19261:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12913,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12908,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"19292:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":12909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19298:6:47","memberName":"number","nodeType":"MemberAccess","src":"19292:12:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":12910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19307:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19292:16:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12907,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"19282:9:47","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":12912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19282:27:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"19261:48:47"},{"body":{"id":12946,"nodeType":"Block","src":"19352:230:47","statements":[{"assignments":[12921],"declarations":[{"constant":false,"id":12921,"mutability":"mutable","name":"newTokenId","nameLocation":"19374:10:47","nodeType":"VariableDeclaration","scope":12946,"src":"19366:18:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12920,"name":"uint256","nodeType":"ElementaryTypeName","src":"19366:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12926,"initialValue":{"arguments":[{"id":12923,"name":"randomSeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12906,"src":"19402:10:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12924,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12915,"src":"19414:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12922,"name":"_randomTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"19387:14:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bytes32,uint256) view returns (uint256)"}},"id":12925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19387:29:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19366:50:47"},{"expression":{"arguments":[{"baseExpression":{"id":12928,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12866,"src":"19436:2:47","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12930,"indexExpression":{"id":12929,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12915,"src":"19439:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19436:5:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12931,"name":"newTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12921,"src":"19443:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12927,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"19430:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19430:24:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12933,"nodeType":"ExpressionStatement","src":"19430:24:47"},{"condition":{"id":12934,"name":"soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12868,"src":"19472:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12941,"nodeType":"IfStatement","src":"19468:44:47","trueBody":{"expression":{"id":12939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12935,"name":"_soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"19483:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":12937,"indexExpression":{"id":12936,"name":"newTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12921,"src":"19494:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19483:22:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19508:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"19483:29:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12940,"nodeType":"ExpressionStatement","src":"19483:29:47"}},{"id":12945,"nodeType":"UncheckedBlock","src":"19526:46:47","statements":[{"expression":{"id":12943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"19554:3:47","subExpression":{"id":12942,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12915,"src":"19556:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12944,"nodeType":"ExpressionStatement","src":"19554:3:47"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12917,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12915,"src":"19336:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12918,"name":"toLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12875,"src":"19340:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19336:12:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12947,"initializationExpression":{"assignments":[12915],"declarations":[{"constant":false,"id":12915,"mutability":"mutable","name":"i","nameLocation":"19333:1:47","nodeType":"VariableDeclaration","scope":12947,"src":"19325:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12914,"name":"uint256","nodeType":"ElementaryTypeName","src":"19325:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12916,"nodeType":"VariableDeclarationStatement","src":"19325:9:47"},"nodeType":"ForStatement","src":"19320:262:47"}]},"documentation":{"id":12863,"nodeType":"StructuredDocumentation","src":"18520:317:47","text":"@notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\n @param to The addresses of the NFTs receivers\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred."},"functionSelector":"be172edf","id":12949,"implemented":true,"kind":"function","modifiers":[{"id":12872,"kind":"modifierInvocation","modifierName":{"id":12871,"name":"onlyOwner","nameLocations":["18960:9:47"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"18960:9:47"},"nodeType":"ModifierInvocation","src":"18960:9:47"}],"name":"airdropRandom","nameLocation":"18851:13:47","nodeType":"FunctionDefinition","overrides":{"id":12870,"nodeType":"OverrideSpecifier","overrides":[],"src":"18943:8:47"},"parameters":{"id":12869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12866,"mutability":"mutable","name":"to","nameLocation":"18882:2:47","nodeType":"VariableDeclaration","scope":12949,"src":"18865:19:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12864,"name":"address","nodeType":"ElementaryTypeName","src":"18865:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12865,"nodeType":"ArrayTypeName","src":"18865:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":12868,"mutability":"mutable","name":"soulbound","nameLocation":"18891:9:47","nodeType":"VariableDeclaration","scope":12949,"src":"18886:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12867,"name":"bool","nodeType":"ElementaryTypeName","src":"18886:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18864:37:47"},"returnParameters":{"id":12873,"nodeType":"ParameterList","parameters":[],"src":"18974:0:47"},"scope":13618,"src":"18842:746:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[218],"body":{"id":13050,"nodeType":"Block","src":"20184:672:47","statements":[{"assignments":[12965],"declarations":[{"constant":false,"id":12965,"mutability":"mutable","name":"toLength","nameLocation":"20202:8:47","nodeType":"VariableDeclaration","scope":13050,"src":"20194:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12964,"name":"uint256","nodeType":"ElementaryTypeName","src":"20194:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12968,"initialValue":{"expression":{"id":12966,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12953,"src":"20213:2:47","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20216:6:47","memberName":"length","nodeType":"MemberAccess","src":"20213:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20194:28:47"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":12972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12969,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"20236:12:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":12970,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"20252:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":12971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20264:7:47","memberName":"SPECIFY","nodeType":"MemberAccess","referencedDeclaration":410,"src":"20252:19:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"20236:35:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12976,"nodeType":"IfStatement","src":"20232:68:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12973,"name":"InvalidMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"20280:18:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20280:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12975,"nodeType":"RevertStatement","src":"20273:27:47"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12977,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"20315:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"expression":{"id":12978,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12956,"src":"20330:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20339:6:47","memberName":"length","nodeType":"MemberAccess","src":"20330:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12980,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20329:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20315:31:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12982,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"20349:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"20315:49:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12987,"nodeType":"IfStatement","src":"20311:81:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12984,"name":"CollectionSoldOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"20373:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20373:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12986,"nodeType":"RevertStatement","src":"20366:26:47"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12988,"name":"toLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12965,"src":"20406:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":12989,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12956,"src":"20418:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20427:6:47","memberName":"length","nodeType":"MemberAccess","src":"20418:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20406:27:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12995,"nodeType":"IfStatement","src":"20402:68:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12992,"name":"InvalidInputSizesDontMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"20442:26:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20442:28:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12994,"nodeType":"RevertStatement","src":"20435:35:47"}},{"id":13003,"nodeType":"UncheckedBlock","src":"20481:66:47","statements":[{"expression":{"id":13001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12996,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"20505:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":12999,"name":"toLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12965,"src":"20527:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20520:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":12997,"name":"uint32","nodeType":"ElementaryTypeName","src":"20520:6:47","typeDescriptions":{}}},"id":13000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20520:16:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"20505:31:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":13002,"nodeType":"ExpressionStatement","src":"20505:31:47"}]},{"body":{"id":13048,"nodeType":"Block","src":"20589:261:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":13010,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12956,"src":"20608:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13012,"indexExpression":{"id":13011,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13005,"src":"20617:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20608:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20623:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20608:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":13015,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12956,"src":"20628:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13017,"indexExpression":{"id":13016,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13005,"src":"20637:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20628:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13018,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"20642:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"20628:29:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"20608:49:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13024,"nodeType":"IfStatement","src":"20604:78:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13021,"name":"InvalidTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":280,"src":"20666:14:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20666:16:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13023,"nodeType":"RevertStatement","src":"20659:23:47"}},{"expression":{"arguments":[{"baseExpression":{"id":13026,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12953,"src":"20702:2:47","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13028,"indexExpression":{"id":13027,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13005,"src":"20705:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20702:5:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":13029,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12956,"src":"20709:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13031,"indexExpression":{"id":13030,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13005,"src":"20718:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20709:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13025,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"20696:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20696:25:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13033,"nodeType":"ExpressionStatement","src":"20696:25:47"},{"condition":{"id":13034,"name":"soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12958,"src":"20739:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13043,"nodeType":"IfStatement","src":"20735:45:47","trueBody":{"expression":{"id":13041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13035,"name":"_soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"20750:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":13039,"indexExpression":{"baseExpression":{"id":13036,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12956,"src":"20761:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13038,"indexExpression":{"id":13037,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13005,"src":"20770:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20761:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20750:23:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":13040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20776:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"20750:30:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13042,"nodeType":"ExpressionStatement","src":"20750:30:47"}},{"id":13047,"nodeType":"UncheckedBlock","src":"20794:46:47","statements":[{"expression":{"id":13045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"20822:3:47","subExpression":{"id":13044,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13005,"src":"20824:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13046,"nodeType":"ExpressionStatement","src":"20822:3:47"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13007,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13005,"src":"20573:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13008,"name":"toLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12965,"src":"20577:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20573:12:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13049,"initializationExpression":{"assignments":[13005],"declarations":[{"constant":false,"id":13005,"mutability":"mutable","name":"i","nameLocation":"20570:1:47","nodeType":"VariableDeclaration","scope":13049,"src":"20562:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13004,"name":"uint256","nodeType":"ElementaryTypeName","src":"20562:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13006,"nodeType":"VariableDeclarationStatement","src":"20562:9:47"},"nodeType":"ForStatement","src":"20557:293:47"}]},"documentation":{"id":12950,"nodeType":"StructuredDocumentation","src":"19594:431:47","text":"@notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\n @param to The addresses of the NFTs receivers\n @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred."},"functionSelector":"71e6775f","id":13051,"implemented":true,"kind":"function","modifiers":[{"id":12962,"kind":"modifierInvocation","modifierName":{"id":12961,"name":"onlyOwner","nameLocations":["20174:9:47"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"20174:9:47"},"nodeType":"ModifierInvocation","src":"20174:9:47"}],"name":"airdropSpecify","nameLocation":"20039:14:47","nodeType":"FunctionDefinition","overrides":{"id":12960,"nodeType":"OverrideSpecifier","overrides":[],"src":"20165:8:47"},"parameters":{"id":12959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12953,"mutability":"mutable","name":"to","nameLocation":"20080:2:47","nodeType":"VariableDeclaration","scope":13051,"src":"20063:19:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12951,"name":"address","nodeType":"ElementaryTypeName","src":"20063:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12952,"nodeType":"ArrayTypeName","src":"20063:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":12956,"mutability":"mutable","name":"tokenIds","nameLocation":"20109:8:47","nodeType":"VariableDeclaration","scope":13051,"src":"20092:25:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12954,"name":"uint256","nodeType":"ElementaryTypeName","src":"20092:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12955,"nodeType":"ArrayTypeName","src":"20092:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":12958,"mutability":"mutable","name":"soulbound","nameLocation":"20132:9:47","nodeType":"VariableDeclaration","scope":13051,"src":"20127:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12957,"name":"bool","nodeType":"ElementaryTypeName","src":"20127:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20053:94:47"},"returnParameters":{"id":12963,"nodeType":"ParameterList","parameters":[],"src":"20184:0:47"},"scope":13618,"src":"20030:826:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[239],"body":{"id":13243,"nodeType":"Block","src":"21940:1936:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13073,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13065,"src":"21954:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21964:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21954:11:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13079,"nodeType":"IfStatement","src":"21950:39:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13076,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"21974:13:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21974:15:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13078,"nodeType":"RevertStatement","src":"21967:22:47"}},{"expression":{"id":13084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13080,"name":"_usedAmountSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10324,"src":"22000:20:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_uint256_$","typeString":"mapping(bytes memory => uint256)"}},"id":13082,"indexExpression":{"id":13081,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13069,"src":"22021:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"22000:31:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":13083,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13065,"src":"22035:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22000:41:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13085,"nodeType":"ExpressionStatement","src":"22000:41:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":13086,"name":"_usedAmountSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10324,"src":"22055:20:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_uint256_$","typeString":"mapping(bytes memory => uint256)"}},"id":13088,"indexExpression":{"id":13087,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13069,"src":"22076:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22055:31:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13089,"name":"maxAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"22089:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22055:43:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13094,"nodeType":"IfStatement","src":"22051:79:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13091,"name":"NotEnoughAmountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"22107:21:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22107:23:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13093,"nodeType":"RevertStatement","src":"22100:30:47"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13095,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"22145:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":13096,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13065,"src":"22159:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22145:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13098,"name":"_collectionSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"22168:15:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"22145:38:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13103,"nodeType":"IfStatement","src":"22141:70:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13100,"name":"CollectionSoldOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"22192:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22192:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13102,"nodeType":"RevertStatement","src":"22185:26:47"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"},"id":13107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13104,"name":"_currentPhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10337,"src":"22226:13:47","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13105,"name":"SalePhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"22243:9:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SalePhase_$407_$","typeString":"type(enum IN2M_ERCStorage.SalePhase)"}},"id":13106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22253:6:47","memberName":"CLOSED","nodeType":"MemberAccess","referencedDeclaration":402,"src":"22243:16:47","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"}},"src":"22226:33:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13111,"nodeType":"IfStatement","src":"22222:62:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13108,"name":"PresaleNotOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"22268:14:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22268:16:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13110,"nodeType":"RevertStatement","src":"22261:23:47"}},{"assignments":[13113],"declarations":[{"constant":false,"id":13113,"mutability":"mutable","name":"signer","nameLocation":"22303:6:47","nodeType":"VariableDeclaration","scope":13243,"src":"22295:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13112,"name":"address","nodeType":"ElementaryTypeName","src":"22295:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13140,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"expression":{"id":13121,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"22480:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}},"id":13122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22485:11:47","memberName":"mintPresale","nodeType":"MemberAccess","referencedDeclaration":13244,"src":"22480:16:47","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bool_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256[] memory,bool,uint256,uint256,uint256,bool,bytes memory) payable external"}},"id":13123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22497:8:47","memberName":"selector","nodeType":"MemberAccess","src":"22480:25:47","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[{"id":13126,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"22568:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}],"id":13125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22560:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13124,"name":"address","nodeType":"ElementaryTypeName","src":"22560:7:47","typeDescriptions":{}}},"id":13127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22560:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13128,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"22640:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22646:7:47","memberName":"chainid","nodeType":"MemberAccess","src":"22640:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13130,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13054,"src":"22720:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13131,"name":"freeMinting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13059,"src":"22748:11:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":13132,"name":"customFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13061,"src":"22785:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13133,"name":"maxAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"22820:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13134,"name":"soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13067,"src":"22855:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":13119,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"22438:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22442:12:47","memberName":"encodePacked","nodeType":"MemberAccess","src":"22438:16:47","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22438:448:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13118,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"22407:9:47","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":13136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22407:497:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":13116,"name":"ECDSAUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"22350:16:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSAUpgradeable_$7099_$","typeString":"type(library ECDSAUpgradeable)"}},"id":13117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22367:22:47","memberName":"toEthSignedMessageHash","nodeType":"MemberAccess","referencedDeclaration":7056,"src":"22350:39:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":13137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22350:568:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":13138,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13069,"src":"22932:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":13114,"name":"ECDSAUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"22312:16:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSAUpgradeable_$7099_$","typeString":"type(library ECDSAUpgradeable)"}},"id":13115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22329:7:47","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":6865,"src":"22312:24:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes32,bytes memory) pure returns (address)"}},"id":13139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22312:639:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"22295:656:47"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13141,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13113,"src":"22966:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13142,"name":"N2M_PRESALE_SIGNER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10257,"src":"22976:18:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"22966:28:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13144,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13113,"src":"22998:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":13145,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[10401],"referencedDeclaration":10401,"src":"23008:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":13146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23008:7:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"22998:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22966:49:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13152,"nodeType":"IfStatement","src":"22962:81:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13149,"name":"SignatureMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"23024:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23024:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13151,"nodeType":"RevertStatement","src":"23017:26:47"}},{"condition":{"id":13153,"name":"freeMinting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13059,"src":"23058:11:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13176,"nodeType":"Block","src":"23160:116:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13163,"name":"customFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13061,"src":"23179:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23192:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23179:14:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13170,"nodeType":"IfStatement","src":"23175:42:47","trueBody":{"expression":{"id":13168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13166,"name":"customFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13061,"src":"23195:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13167,"name":"_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10301,"src":"23207:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23195:22:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13169,"nodeType":"ExpressionStatement","src":"23195:22:47"}},{"expression":{"arguments":[{"id":13172,"name":"customFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13061,"src":"23247:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13173,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13065,"src":"23258:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13171,"name":"_requirePayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13519,"src":"23231:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":13174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23231:34:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13175,"nodeType":"ExpressionStatement","src":"23231:34:47"}]},"id":13177,"nodeType":"IfStatement","src":"23054:222:47","trueBody":{"id":13162,"nodeType":"Block","src":"23071:83:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13154,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23090:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23094:5:47","memberName":"value","nodeType":"MemberAccess","src":"23090:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23103:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23090:14:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13161,"nodeType":"IfStatement","src":"23086:57:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13158,"name":"InvalidMintFeeForFreeMinting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":307,"src":"23113:28:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23113:30:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13160,"nodeType":"RevertStatement","src":"23106:37:47"}}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":13181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13178,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"23290:12:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13179,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"23306:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":13180,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23318:7:47","memberName":"SPECIFY","nodeType":"MemberAccess","referencedDeclaration":410,"src":"23306:19:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"23290:35:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":13200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13197,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"23480:12:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13198,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"23496:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":13199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23508:6:47","memberName":"RANDOM","nodeType":"MemberAccess","referencedDeclaration":409,"src":"23496:18:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"23480:34:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"},"id":13228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13225,"name":"_mintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10343,"src":"23701:12:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13226,"name":"MintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"23717:11:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_MintingType_$412_$","typeString":"type(enum IN2M_ERCStorage.MintingType)"}},"id":13227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23729:10:47","memberName":"SEQUENTIAL","nodeType":"MemberAccess","referencedDeclaration":408,"src":"23717:22:47","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$412","typeString":"enum IN2M_ERCStorage.MintingType"}},"src":"23701:38:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13239,"nodeType":"Block","src":"23810:60:47","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13236,"name":"PresaleInvalidMintingType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"23832:25:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23832:27:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13238,"nodeType":"RevertStatement","src":"23825:34:47"}]},"id":13240,"nodeType":"IfStatement","src":"23697:173:47","trueBody":{"id":13235,"nodeType":"Block","src":"23741:63:47","statements":[{"expression":{"arguments":[{"id":13230,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13054,"src":"23771:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13231,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13065,"src":"23775:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13232,"name":"soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13067,"src":"23783:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13229,"name":"_mintSequential","nodeType":"Identifier","overloadedDeclarations":[12211,12237],"referencedDeclaration":12211,"src":"23755:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,uint256,bool)"}},"id":13233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23755:38:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13234,"nodeType":"ExpressionStatement","src":"23755:38:47"}]}},"id":13241,"nodeType":"IfStatement","src":"23476:394:47","trueBody":{"id":13224,"nodeType":"Block","src":"23516:175:47","statements":[{"assignments":[13202],"declarations":[{"constant":false,"id":13202,"mutability":"mutable","name":"seed","nameLocation":"23538:4:47","nodeType":"VariableDeclaration","scope":13224,"src":"23530:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13201,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23530:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":13209,"initialValue":{"arguments":[{"arguments":[{"id":13206,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13069,"src":"23572:9:47","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":13204,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"23555:3:47","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23559:12:47","memberName":"encodePacked","nodeType":"MemberAccess","src":"23555:16:47","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23555:27:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13203,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"23545:9:47","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":13208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23545:38:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"23530:53:47"},{"expression":{"id":13215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13210,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"23597:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":13213,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13065,"src":"23619:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23612:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":13211,"name":"uint32","nodeType":"ElementaryTypeName","src":"23612:6:47","typeDescriptions":{}}},"id":13214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23612:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"23597:29:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":13216,"nodeType":"ExpressionStatement","src":"23597:29:47"},{"expression":{"arguments":[{"id":13218,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13054,"src":"23652:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13219,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13065,"src":"23656:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13220,"name":"seed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13202,"src":"23664:4:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":13221,"name":"soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13067,"src":"23670:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13217,"name":"_mintRandom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12514,"src":"23640:11:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (address,uint256,bytes32,bool)"}},"id":13222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23640:40:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13223,"nodeType":"ExpressionStatement","src":"23640:40:47"}]}},"id":13242,"nodeType":"IfStatement","src":"23286:584:47","trueBody":{"id":13196,"nodeType":"Block","src":"23327:143:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13182,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13057,"src":"23346:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23355:6:47","memberName":"length","nodeType":"MemberAccess","src":"23346:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13184,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13065,"src":"23365:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23346:25:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13189,"nodeType":"IfStatement","src":"23342:66:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13186,"name":"InvalidInputSizesDontMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"23380:26:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23380:28:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13188,"nodeType":"RevertStatement","src":"23373:35:47"}},{"expression":{"arguments":[{"id":13191,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13054,"src":"23435:2:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13192,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13057,"src":"23439:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":13193,"name":"soulbound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13067,"src":"23449:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13190,"name":"_mintSpecify","nodeType":"Identifier","overloadedDeclarations":[12683,12739],"referencedDeclaration":12683,"src":"23422:12:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,uint256[] memory,bool)"}},"id":13194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23422:37:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13195,"nodeType":"ExpressionStatement","src":"23422:37:47"}]}}]},"documentation":{"id":13052,"nodeType":"StructuredDocumentation","src":"20862:803:47","text":"@notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\n @param to The addresses of the NFTs receivers\n @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\n @param freeMinting True is minting is free\n @param customFee Zero is fee is different from `mintingPrice`.\n @param maxAmount Max Amount to be minted with the given `signature`.\n @param amount Amount to mint.\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n @param signature Valid `signature` for the presale/whitelist."},"functionSelector":"9d13a5ba","id":13244,"implemented":true,"kind":"function","modifiers":[],"name":"mintPresale","nameLocation":"21679:11:47","nodeType":"FunctionDefinition","overrides":{"id":13071,"nodeType":"OverrideSpecifier","overrides":[],"src":"21931:8:47"},"parameters":{"id":13070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13054,"mutability":"mutable","name":"to","nameLocation":"21708:2:47","nodeType":"VariableDeclaration","scope":13244,"src":"21700:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13053,"name":"address","nodeType":"ElementaryTypeName","src":"21700:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13057,"mutability":"mutable","name":"tokenIds","nameLocation":"21737:8:47","nodeType":"VariableDeclaration","scope":13244,"src":"21720:25:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13055,"name":"uint256","nodeType":"ElementaryTypeName","src":"21720:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13056,"nodeType":"ArrayTypeName","src":"21720:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":13059,"mutability":"mutable","name":"freeMinting","nameLocation":"21760:11:47","nodeType":"VariableDeclaration","scope":13244,"src":"21755:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13058,"name":"bool","nodeType":"ElementaryTypeName","src":"21755:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13061,"mutability":"mutable","name":"customFee","nameLocation":"21789:9:47","nodeType":"VariableDeclaration","scope":13244,"src":"21781:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13060,"name":"uint256","nodeType":"ElementaryTypeName","src":"21781:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13063,"mutability":"mutable","name":"maxAmount","nameLocation":"21816:9:47","nodeType":"VariableDeclaration","scope":13244,"src":"21808:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13062,"name":"uint256","nodeType":"ElementaryTypeName","src":"21808:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13065,"mutability":"mutable","name":"amount","nameLocation":"21843:6:47","nodeType":"VariableDeclaration","scope":13244,"src":"21835:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13064,"name":"uint256","nodeType":"ElementaryTypeName","src":"21835:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13067,"mutability":"mutable","name":"soulbound","nameLocation":"21864:9:47","nodeType":"VariableDeclaration","scope":13244,"src":"21859:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13066,"name":"bool","nodeType":"ElementaryTypeName","src":"21859:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13069,"mutability":"mutable","name":"signature","nameLocation":"21898:9:47","nodeType":"VariableDeclaration","scope":13244,"src":"21883:24:47","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13068,"name":"bytes","nodeType":"ElementaryTypeName","src":"21883:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21690:223:47"},"returnParameters":{"id":13072,"nodeType":"ParameterList","parameters":[],"src":"21940:0:47"},"scope":13618,"src":"21670:2206:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[245],"body":{"id":13252,"nodeType":"Block","src":"24054:34:47","statements":[{"expression":{"id":13250,"name":"_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10301,"src":"24071:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13249,"id":13251,"nodeType":"Return","src":"24064:17:47"}]},"documentation":{"id":13245,"nodeType":"StructuredDocumentation","src":"23882:114:47","text":"@notice Returns the minting price of one NFT.\n @return Mint price for one NFT in native coin or ERC-20."},"functionSelector":"6817c76c","id":13253,"implemented":true,"kind":"function","modifiers":[],"name":"mintPrice","nameLocation":"24010:9:47","nodeType":"FunctionDefinition","parameters":{"id":13246,"nodeType":"ParameterList","parameters":[],"src":"24019:2:47"},"returnParameters":{"id":13249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13248,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13253,"src":"24045:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13247,"name":"uint256","nodeType":"ElementaryTypeName","src":"24045:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24044:9:47"},"scope":13618,"src":"24001:87:47","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[251],"body":{"id":13261,"nodeType":"Block","src":"24237:35:47","statements":[{"expression":{"id":13259,"name":"_soldTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"24254:11:47","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":13258,"id":13260,"nodeType":"Return","src":"24247:18:47"}]},"documentation":{"id":13254,"nodeType":"StructuredDocumentation","src":"24094:83:47","text":"@notice Returns the current total supply.\n @return Current total supply."},"functionSelector":"18160ddd","id":13262,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"24191:11:47","nodeType":"FunctionDefinition","parameters":{"id":13255,"nodeType":"ParameterList","parameters":[],"src":"24202:2:47"},"returnParameters":{"id":13258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13257,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13262,"src":"24228:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13256,"name":"uint256","nodeType":"ElementaryTypeName","src":"24228:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24227:9:47"},"scope":13618,"src":"24182:90:47","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[257],"body":{"id":13271,"nodeType":"Block","src":"24443:38:47","statements":[{"expression":{"id":13269,"name":"_maxPerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10347,"src":"24460:14:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":13268,"id":13270,"nodeType":"Return","src":"24453:21:47"}]},"documentation":{"id":13263,"nodeType":"StructuredDocumentation","src":"24278:95:47","text":"@notice Max amount of NFTs to be hold per address.\n @return Max per address allowed."},"functionSelector":"639814e0","id":13272,"implemented":true,"kind":"function","modifiers":[],"name":"maxPerAddress","nameLocation":"24387:13:47","nodeType":"FunctionDefinition","overrides":{"id":13265,"nodeType":"OverrideSpecifier","overrides":[],"src":"24417:8:47"},"parameters":{"id":13264,"nodeType":"ParameterList","parameters":[],"src":"24400:2:47"},"returnParameters":{"id":13268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13272,"src":"24435:6:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13266,"name":"uint16","nodeType":"ElementaryTypeName","src":"24435:6:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"24434:8:47"},"scope":13618,"src":"24378:103:47","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1296],"body":{"id":13299,"nodeType":"Block","src":"25023:85:47","statements":[{"expression":{"components":[{"arguments":[{"id":13286,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25050:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}],"id":13285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25042:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13284,"name":"address","nodeType":"ElementaryTypeName","src":"25042:7:47","typeDescriptions":{}}},"id":13287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25042:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13290,"name":"salePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13277,"src":"25066:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13291,"name":"_royaltyFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10345,"src":"25078:11:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"25066:23:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13293,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25065:25:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130305f3030","id":13294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25093:6:47","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"100_00"},"src":"25065:34:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25057:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13288,"name":"uint256","nodeType":"ElementaryTypeName","src":"25057:7:47","typeDescriptions":{}}},"id":13296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25057:43:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13297,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25041:60:47","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"functionReturnParameters":13283,"id":13298,"nodeType":"Return","src":"25034:67:47"}]},"documentation":{"id":13273,"nodeType":"StructuredDocumentation","src":"24487:387:47","text":"@notice Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\n @param salePrice The sale price\n @return receiver the receiver of the royalties.\n @return royaltyAmount the amount of the royalties for the given input."},"functionSelector":"2a55205a","id":13300,"implemented":true,"kind":"function","modifiers":[],"name":"royaltyInfo","nameLocation":"24888:11:47","nodeType":"FunctionDefinition","parameters":{"id":13278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13275,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13300,"src":"24909:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13274,"name":"uint256","nodeType":"ElementaryTypeName","src":"24909:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13277,"mutability":"mutable","name":"salePrice","nameLocation":"24935:9:47","nodeType":"VariableDeclaration","scope":13300,"src":"24927:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13276,"name":"uint256","nodeType":"ElementaryTypeName","src":"24927:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24899:51:47"},"returnParameters":{"id":13283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13280,"mutability":"mutable","name":"receiver","nameLocation":"24990:8:47","nodeType":"VariableDeclaration","scope":13300,"src":"24982:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13279,"name":"address","nodeType":"ElementaryTypeName","src":"24982:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13282,"mutability":"mutable","name":"royaltyAmount","nameLocation":"25008:13:47","nodeType":"VariableDeclaration","scope":13300,"src":"25000:21:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13281,"name":"uint256","nodeType":"ElementaryTypeName","src":"25000:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24981:41:47"},"scope":13618,"src":"24879:229:47","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":13404,"nodeType":"Block","src":"25209:967:47","statements":[{"assignments":[13308],"declarations":[{"constant":false,"id":13308,"mutability":"mutable","name":"currentUserDiscount","nameLocation":"25226:19:47","nodeType":"VariableDeclaration","scope":13404,"src":"25219:26:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13307,"name":"uint16","nodeType":"ElementaryTypeName","src":"25219:6:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":13309,"nodeType":"VariableDeclarationStatement","src":"25219:26:47"},{"assignments":[13311],"declarations":[{"constant":false,"id":13311,"mutability":"mutable","name":"currentAffiliatePercentage","nameLocation":"25262:26:47","nodeType":"VariableDeclaration","scope":13404,"src":"25255:33:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13310,"name":"uint16","nodeType":"ElementaryTypeName","src":"25255:6:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":13312,"nodeType":"VariableDeclarationStatement","src":"25255:33:47"},{"condition":{"expression":{"baseExpression":{"id":13313,"name":"_affiliatesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10299,"src":"25302:15:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AffiliateInformation_$401_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.AffiliateInformation storage ref)"}},"id":13315,"indexExpression":{"id":13314,"name":"affiliate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13304,"src":"25318:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25302:26:47","typeDescriptions":{"typeIdentifier":"t_struct$_AffiliateInformation_$401_storage","typeString":"struct IN2M_ERCStorage.AffiliateInformation storage ref"}},"id":13316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25329:7:47","memberName":"enabled","nodeType":"MemberAccess","referencedDeclaration":396,"src":"25302:34:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13352,"nodeType":"Block","src":"25519:177:47","statements":[{"expression":{"id":13340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13332,"name":"currentUserDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13308,"src":"25533:19:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":13333,"name":"_affiliatesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10299,"src":"25555:15:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AffiliateInformation_$401_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.AffiliateInformation storage ref)"}},"id":13338,"indexExpression":{"arguments":[{"hexValue":"30","id":13336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25579:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25571:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13334,"name":"address","nodeType":"ElementaryTypeName","src":"25571:7:47","typeDescriptions":{}}},"id":13337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25571:10:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25555:27:47","typeDescriptions":{"typeIdentifier":"t_struct$_AffiliateInformation_$401_storage","typeString":"struct IN2M_ERCStorage.AffiliateInformation storage ref"}},"id":13339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25583:12:47","memberName":"userDiscount","nodeType":"MemberAccess","referencedDeclaration":400,"src":"25555:40:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"25533:62:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":13341,"nodeType":"ExpressionStatement","src":"25533:62:47"},{"expression":{"id":13350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13342,"name":"currentAffiliatePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13311,"src":"25609:26:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":13343,"name":"_affiliatesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10299,"src":"25638:15:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AffiliateInformation_$401_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.AffiliateInformation storage ref)"}},"id":13348,"indexExpression":{"arguments":[{"hexValue":"30","id":13346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25662:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25654:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13344,"name":"address","nodeType":"ElementaryTypeName","src":"25654:7:47","typeDescriptions":{}}},"id":13347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25654:10:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25638:27:47","typeDescriptions":{"typeIdentifier":"t_struct$_AffiliateInformation_$401_storage","typeString":"struct IN2M_ERCStorage.AffiliateInformation storage ref"}},"id":13349,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25666:19:47","memberName":"affiliatePercentage","nodeType":"MemberAccess","referencedDeclaration":398,"src":"25638:47:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"25609:76:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":13351,"nodeType":"ExpressionStatement","src":"25609:76:47"}]},"id":13353,"nodeType":"IfStatement","src":"25298:398:47","trueBody":{"id":13331,"nodeType":"Block","src":"25338:175:47","statements":[{"expression":{"id":13322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13317,"name":"currentUserDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13308,"src":"25352:19:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":13318,"name":"_affiliatesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10299,"src":"25374:15:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AffiliateInformation_$401_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.AffiliateInformation storage ref)"}},"id":13320,"indexExpression":{"id":13319,"name":"affiliate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13304,"src":"25390:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25374:26:47","typeDescriptions":{"typeIdentifier":"t_struct$_AffiliateInformation_$401_storage","typeString":"struct IN2M_ERCStorage.AffiliateInformation storage ref"}},"id":13321,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25401:12:47","memberName":"userDiscount","nodeType":"MemberAccess","referencedDeclaration":400,"src":"25374:39:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"25352:61:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":13323,"nodeType":"ExpressionStatement","src":"25352:61:47"},{"expression":{"id":13329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13324,"name":"currentAffiliatePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13311,"src":"25427:26:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":13325,"name":"_affiliatesInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10299,"src":"25456:15:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AffiliateInformation_$401_storage_$","typeString":"mapping(address => struct IN2M_ERCStorage.AffiliateInformation storage ref)"}},"id":13327,"indexExpression":{"id":13326,"name":"affiliate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13304,"src":"25472:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25456:26:47","typeDescriptions":{"typeIdentifier":"t_struct$_AffiliateInformation_$401_storage","typeString":"struct IN2M_ERCStorage.AffiliateInformation storage ref"}},"id":13328,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25483:19:47","memberName":"affiliatePercentage","nodeType":"MemberAccess","referencedDeclaration":398,"src":"25456:46:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"25427:75:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":13330,"nodeType":"ExpressionStatement","src":"25427:75:47"}]}},{"assignments":[13355],"declarations":[{"constant":false,"id":13355,"mutability":"mutable","name":"discountMintPrice","nameLocation":"25714:17:47","nodeType":"VariableDeclaration","scope":13404,"src":"25706:25:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13354,"name":"uint256","nodeType":"ElementaryTypeName","src":"25706:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13365,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":13358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130305f3030","id":13356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25736:6:47","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"100_00"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13357,"name":"currentUserDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13308,"src":"25745:19:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"25736:28:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":13359,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25735:30:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13360,"name":"_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10301,"src":"25768:10:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25735:43:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13362,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25734:45:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130305f3030","id":13363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25782:6:47","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"100_00"},"src":"25734:54:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25706:82:47"},{"expression":{"arguments":[{"id":13367,"name":"discountMintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13355,"src":"25814:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13368,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13302,"src":"25833:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13366,"name":"_requirePayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13519,"src":"25798:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":13369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25798:42:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13370,"nodeType":"ExpressionStatement","src":"25798:42:47"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13371,"name":"affiliate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13304,"src":"25854:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":13374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25875:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25867:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13372,"name":"address","nodeType":"ElementaryTypeName","src":"25867:7:47","typeDescriptions":{}}},"id":13375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25867:10:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"25854:23:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13403,"nodeType":"IfStatement","src":"25850:320:47","trueBody":{"id":13402,"nodeType":"Block","src":"25879:291:47","statements":[{"assignments":[13378],"declarations":[{"constant":false,"id":13378,"mutability":"mutable","name":"affiliateAmount","nameLocation":"25901:15:47","nodeType":"VariableDeclaration","scope":13402,"src":"25893:23:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13377,"name":"uint256","nodeType":"ElementaryTypeName","src":"25893:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13387,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13379,"name":"currentAffiliatePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13311,"src":"25920:26:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13380,"name":"discountMintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13355,"src":"25949:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25920:46:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13382,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13302,"src":"25969:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25920:55:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13384,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25919:57:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130305f3030","id":13385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25979:6:47","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"100_00"},"src":"25919:66:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25893:92:47"},{"expression":{"id":13390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13388,"name":"_pendingTotalAffiliatesBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10290,"src":"25999:30:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":13389,"name":"affiliateAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13378,"src":"26033:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25999:49:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13391,"nodeType":"ExpressionStatement","src":"25999:49:47"},{"expression":{"id":13396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13392,"name":"_pendingAffiliateBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10288,"src":"26062:24:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13394,"indexExpression":{"id":13393,"name":"affiliate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13304,"src":"26087:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26062:35:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":13395,"name":"affiliateAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13378,"src":"26101:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26062:54:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13397,"nodeType":"ExpressionStatement","src":"26062:54:47"},{"eventCall":{"arguments":[{"id":13399,"name":"affiliate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13304,"src":"26149:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13398,"name":"AffiliateSell","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"26135:13:47","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":13400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26135:24:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13401,"nodeType":"EmitStatement","src":"26130:29:47"}]}}]},"id":13405,"implemented":true,"kind":"function","modifiers":[],"name":"_requirePaymentWithAffiliates","nameLocation":"25123:29:47","nodeType":"FunctionDefinition","parameters":{"id":13305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13302,"mutability":"mutable","name":"amount","nameLocation":"25161:6:47","nodeType":"VariableDeclaration","scope":13405,"src":"25153:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13301,"name":"uint256","nodeType":"ElementaryTypeName","src":"25153:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13304,"mutability":"mutable","name":"affiliate","nameLocation":"25177:9:47","nodeType":"VariableDeclaration","scope":13405,"src":"25169:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13303,"name":"address","nodeType":"ElementaryTypeName","src":"25169:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25152:35:47"},"returnParameters":{"id":13306,"nodeType":"ParameterList","parameters":[],"src":"25209:0:47"},"scope":13618,"src":"25114:1062:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13467,"nodeType":"Block","src":"26213:775:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"},"id":13411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13408,"name":"_currentPhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10337,"src":"26228:13:47","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":13409,"name":"SalePhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"26245:9:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SalePhase_$407_$","typeString":"type(enum IN2M_ERCStorage.SalePhase)"}},"id":13410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26255:6:47","memberName":"PUBLIC","nodeType":"MemberAccess","referencedDeclaration":404,"src":"26245:16:47","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"}},"src":"26228:33:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13466,"nodeType":"IfStatement","src":"26224:758:47","trueBody":{"id":13465,"nodeType":"Block","src":"26263:719:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"},"id":13415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13412,"name":"_currentPhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10337,"src":"26281:13:47","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13413,"name":"SalePhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"26298:9:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SalePhase_$407_$","typeString":"type(enum IN2M_ERCStorage.SalePhase)"}},"id":13414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26308:9:47","memberName":"DROP_DATE","nodeType":"MemberAccess","referencedDeclaration":405,"src":"26298:19:47","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"}},"src":"26281:36:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"},"id":13439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13436,"name":"_currentPhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10337,"src":"26598:13:47","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13437,"name":"SalePhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"26615:9:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SalePhase_$407_$","typeString":"type(enum IN2M_ERCStorage.SalePhase)"}},"id":13438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26625:17:47","memberName":"DROP_AND_END_DATE","nodeType":"MemberAccess","referencedDeclaration":406,"src":"26615:27:47","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"}},"src":"26598:44:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13462,"nodeType":"Block","src":"26912:60:47","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13459,"name":"PublicSaleNotOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"26938:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26938:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13461,"nodeType":"RevertStatement","src":"26931:26:47"}]},"id":13463,"nodeType":"IfStatement","src":"26594:378:47","trueBody":{"id":13458,"nodeType":"Block","src":"26644:262:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13440,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26666:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26672:9:47","memberName":"timestamp","nodeType":"MemberAccess","src":"26666:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13442,"name":"_dropDateTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10307,"src":"26684:18:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26666:36:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13448,"nodeType":"IfStatement","src":"26662:109:47","trueBody":{"id":13447,"nodeType":"Block","src":"26704:67:47","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13444,"name":"WaitUntilDropDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"26733:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26733:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13446,"nodeType":"RevertStatement","src":"26726:26:47"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13449,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26792:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26798:9:47","memberName":"timestamp","nodeType":"MemberAccess","src":"26792:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":13451,"name":"_endDateTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10309,"src":"26811:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26792:36:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13457,"nodeType":"IfStatement","src":"26788:104:47","trueBody":{"id":13456,"nodeType":"Block","src":"26830:62:47","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13453,"name":"SaleFinished","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":301,"src":"26859:12:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26859:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13455,"nodeType":"RevertStatement","src":"26852:21:47"}]}}]}},"id":13464,"nodeType":"IfStatement","src":"26277:695:47","trueBody":{"id":13435,"nodeType":"Block","src":"26319:269:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13416,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26341:5:47","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26347:9:47","memberName":"timestamp","nodeType":"MemberAccess","src":"26341:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":13418,"name":"_dropDateTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10307,"src":"26360:18:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26341:37:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13433,"nodeType":"Block","src":"26507:67:47","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13430,"name":"WaitUntilDropDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"26536:17:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26536:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13432,"nodeType":"RevertStatement","src":"26529:26:47"}]},"id":13434,"nodeType":"IfStatement","src":"26337:237:47","trueBody":{"id":13429,"nodeType":"Block","src":"26380:121:47","statements":[{"expression":{"id":13423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13420,"name":"_currentPhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10337,"src":"26402:13:47","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":13421,"name":"SalePhase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"26418:9:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SalePhase_$407_$","typeString":"type(enum IN2M_ERCStorage.SalePhase)"}},"id":13422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26428:6:47","memberName":"PUBLIC","nodeType":"MemberAccess","referencedDeclaration":404,"src":"26418:16:47","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"}},"src":"26402:32:47","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$407","typeString":"enum IN2M_ERCStorage.SalePhase"}},"id":13424,"nodeType":"ExpressionStatement","src":"26402:32:47"},{"expression":{"id":13427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"26456:26:47","subExpression":{"components":[{"id":13425,"name":"_dropDateTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10307,"src":"26463:18:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13426,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"26462:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13428,"nodeType":"ExpressionStatement","src":"26456:26:47"}]}}]}}]}}]},"id":13468,"implemented":true,"kind":"function","modifiers":[],"name":"_checkPhase","nameLocation":"26191:11:47","nodeType":"FunctionDefinition","parameters":{"id":13406,"nodeType":"ParameterList","parameters":[],"src":"26202:2:47"},"returnParameters":{"id":13407,"nodeType":"ParameterList","parameters":[],"src":"26213:0:47"},"scope":13618,"src":"26182:806:47","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":13518,"nodeType":"Block","src":"27065:463:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13475,"name":"_isERC20Payment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10351,"src":"27079:15:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":13476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27098:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"27079:24:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13516,"nodeType":"Block","src":"27201:321:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13490,"name":"p_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13470,"src":"27220:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27235:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"27220:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13494,"nodeType":"IfStatement","src":"27216:29:47","trueBody":{"functionReturnParameters":13474,"id":13493,"nodeType":"Return","src":"27238:7:47"}},{"assignments":[13496],"declarations":[{"constant":false,"id":13496,"mutability":"mutable","name":"totalAmount","nameLocation":"27266:11:47","nodeType":"VariableDeclaration","scope":13516,"src":"27258:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13495,"name":"uint256","nodeType":"ElementaryTypeName","src":"27258:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13500,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13497,"name":"p_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13470,"src":"27280:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13498,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13472,"src":"27294:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27280:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27258:42:47"},{"expression":{"arguments":[{"arguments":[{"id":13505,"name":"_erc20PaymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10315,"src":"27388:20:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13504,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3144,"src":"27370:17:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Upgradeable_$3144_$","typeString":"type(contract IERC20Upgradeable)"}},"id":13506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27370:39:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"}},{"expression":{"id":13507,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"27427:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27431:6:47","memberName":"sender","nodeType":"MemberAccess","src":"27427:10:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":13511,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27463:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}],"id":13510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27455:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13509,"name":"address","nodeType":"ElementaryTypeName","src":"27455:7:47","typeDescriptions":{}}},"id":13512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27455:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13513,"name":"totalAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13496,"src":"27486:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$3144","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13501,"name":"SafeERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"27315:20:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20Upgradeable_$3461_$","typeString":"type(library SafeERC20Upgradeable)"}},"id":13503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27336:16:47","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":3238,"src":"27315:37:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$3144_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20Upgradeable,address,address,uint256)"}},"id":13514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27315:196:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13515,"nodeType":"ExpressionStatement","src":"27315:196:47"}]},"id":13517,"nodeType":"IfStatement","src":"27075:447:47","trueBody":{"id":13489,"nodeType":"Block","src":"27105:90:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13478,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"27124:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27128:5:47","memberName":"value","nodeType":"MemberAccess","src":"27124:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13480,"name":"p_mintPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13470,"src":"27138:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13481,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13472,"src":"27152:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27138:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13483,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27137:22:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27124:35:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13488,"nodeType":"IfStatement","src":"27120:64:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13485,"name":"InvalidMintFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":310,"src":"27168:14:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27168:16:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13487,"nodeType":"RevertStatement","src":"27161:23:47"}}]}}]},"id":13519,"implemented":true,"kind":"function","modifiers":[],"name":"_requirePayment","nameLocation":"27003:15:47","nodeType":"FunctionDefinition","parameters":{"id":13473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13470,"mutability":"mutable","name":"p_mintPrice","nameLocation":"27027:11:47","nodeType":"VariableDeclaration","scope":13519,"src":"27019:19:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13469,"name":"uint256","nodeType":"ElementaryTypeName","src":"27019:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13472,"mutability":"mutable","name":"amount","nameLocation":"27048:6:47","nodeType":"VariableDeclaration","scope":13519,"src":"27040:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13471,"name":"uint256","nodeType":"ElementaryTypeName","src":"27040:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27018:37:47"},"returnParameters":{"id":13474,"nodeType":"ParameterList","parameters":[],"src":"27065:0:47"},"scope":13618,"src":"26994:534:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13527,"nodeType":"Block","src":"27565:59:47","statements":[{"expression":{"arguments":[{"expression":{"id":13522,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"27595:3:47","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27599:6:47","memberName":"sender","nodeType":"MemberAccess","src":"27595:10:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13521,"name":"_isOperatorAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13604,"src":"27576:18:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":13524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27576:30:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13525,"nodeType":"ExpressionStatement","src":"27576:30:47"},{"id":13526,"nodeType":"PlaceholderStatement","src":"27616:1:47"}]},"id":13528,"name":"onlyAllowedOperator","nameLocation":"27543:19:47","nodeType":"ModifierDefinition","parameters":{"id":13520,"nodeType":"ParameterList","parameters":[],"src":"27562:2:47"},"src":"27534:90:47","virtual":false,"visibility":"internal"},{"body":{"id":13537,"nodeType":"Block","src":"27685:56:47","statements":[{"expression":{"arguments":[{"id":13533,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13530,"src":"27714:8:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13532,"name":"_isOperatorAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13604,"src":"27695:18:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":13534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27695:28:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13535,"nodeType":"ExpressionStatement","src":"27695:28:47"},{"id":13536,"nodeType":"PlaceholderStatement","src":"27733:1:47"}]},"id":13538,"name":"onlyAllowedOperatorApproval","nameLocation":"27639:27:47","nodeType":"ModifierDefinition","parameters":{"id":13531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13530,"mutability":"mutable","name":"operator","nameLocation":"27675:8:47","nodeType":"VariableDeclaration","scope":13538,"src":"27667:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13529,"name":"address","nodeType":"ElementaryTypeName","src":"27667:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"27666:18:47"},"src":"27630:111:47","virtual":false,"visibility":"internal"},{"body":{"id":13603,"nodeType":"Block","src":"27805:666:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_OperatorFilterStatus_$417","typeString":"enum IN2M_ERCStorage.OperatorFilterStatus"},"id":13546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13543,"name":"_operatorFilterStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10340,"src":"27819:21:47","typeDescriptions":{"typeIdentifier":"t_enum$_OperatorFilterStatus_$417","typeString":"enum IN2M_ERCStorage.OperatorFilterStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13544,"name":"OperatorFilterStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"27844:20:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperatorFilterStatus_$417_$","typeString":"type(enum IN2M_ERCStorage.OperatorFilterStatus)"}},"id":13545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27865:14:47","memberName":"ENABLED_EXISTS","nodeType":"MemberAccess","referencedDeclaration":414,"src":"27844:35:47","typeDescriptions":{"typeIdentifier":"t_enum$_OperatorFilterStatus_$417","typeString":"enum IN2M_ERCStorage.OperatorFilterStatus"}},"src":"27819:60:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_OperatorFilterStatus_$417","typeString":"enum IN2M_ERCStorage.OperatorFilterStatus"},"id":13561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13558,"name":"_operatorFilterStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10340,"src":"27983:21:47","typeDescriptions":{"typeIdentifier":"t_enum$_OperatorFilterStatus_$417","typeString":"enum IN2M_ERCStorage.OperatorFilterStatus"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13559,"name":"OperatorFilterStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"28008:20:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperatorFilterStatus_$417_$","typeString":"type(enum IN2M_ERCStorage.OperatorFilterStatus)"}},"id":13560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28029:23:47","memberName":"ENABLED_NOT_INITIALIZED","nodeType":"MemberAccess","referencedDeclaration":413,"src":"28008:44:47","typeDescriptions":{"typeIdentifier":"t_enum$_OperatorFilterStatus_$417","typeString":"enum IN2M_ERCStorage.OperatorFilterStatus"}},"src":"27983:69:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13601,"nodeType":"IfStatement","src":"27979:484:47","trueBody":{"id":13600,"nodeType":"Block","src":"28054:409:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":13564,"name":"operatorFilterRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10251,"src":"28081:22:47","typeDescriptions":{"typeIdentifier":"t_contract$_IOperatorFilterRegistry_$613","typeString":"contract IOperatorFilterRegistry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IOperatorFilterRegistry_$613","typeString":"contract IOperatorFilterRegistry"}],"id":13563,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28073:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13562,"name":"address","nodeType":"ElementaryTypeName","src":"28073:7:47","typeDescriptions":{}}},"id":13565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28073:31:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28105:4:47","memberName":"code","nodeType":"MemberAccess","src":"28073:36:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28110:6:47","memberName":"length","nodeType":"MemberAccess","src":"28073:43:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28119:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"28073:47:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13599,"nodeType":"IfStatement","src":"28069:384:47","trueBody":{"id":13598,"nodeType":"Block","src":"28122:331:47","statements":[{"clauses":[{"block":{"id":13593,"nodeType":"Block","src":"28225:188:47","statements":[{"expression":{"id":13581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13578,"name":"_operatorFilterStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10340,"src":"28248:21:47","typeDescriptions":{"typeIdentifier":"t_enum$_OperatorFilterStatus_$417","typeString":"enum IN2M_ERCStorage.OperatorFilterStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":13579,"name":"OperatorFilterStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"28272:20:47","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperatorFilterStatus_$417_$","typeString":"type(enum IN2M_ERCStorage.OperatorFilterStatus)"}},"id":13580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28293:14:47","memberName":"ENABLED_EXISTS","nodeType":"MemberAccess","referencedDeclaration":414,"src":"28272:35:47","typeDescriptions":{"typeIdentifier":"t_enum$_OperatorFilterStatus_$417","typeString":"enum IN2M_ERCStorage.OperatorFilterStatus"}},"src":"28248:59:47","typeDescriptions":{"typeIdentifier":"t_enum$_OperatorFilterStatus_$417","typeString":"enum IN2M_ERCStorage.OperatorFilterStatus"}},"id":13582,"nodeType":"ExpressionStatement","src":"28248:59:47"},{"expression":{"arguments":[{"arguments":[{"id":13588,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"28378:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}],"id":13587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28370:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13586,"name":"address","nodeType":"ElementaryTypeName","src":"28370:7:47","typeDescriptions":{}}},"id":13589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28370:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13590,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13540,"src":"28385:8:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13583,"name":"operatorFilterRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10251,"src":"28329:22:47","typeDescriptions":{"typeIdentifier":"t_contract$_IOperatorFilterRegistry_$613","typeString":"contract IOperatorFilterRegistry"}},"id":13585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28352:17:47","memberName":"isOperatorAllowed","nodeType":"MemberAccess","referencedDeclaration":435,"src":"28329:40:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view external returns (bool)"}},"id":13591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28329:65:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13592,"nodeType":"ExpressionStatement","src":"28329:65:47"}]},"errorName":"","id":13594,"nodeType":"TryCatchClause","src":"28225:188:47"},{"block":{"id":13595,"nodeType":"Block","src":"28420:19:47","statements":[]},"errorName":"","id":13596,"nodeType":"TryCatchClause","src":"28414:25:47"}],"externalCall":{"arguments":[{"arguments":[{"id":13574,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"28196:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}],"id":13573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28188:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13572,"name":"address","nodeType":"ElementaryTypeName","src":"28188:7:47","typeDescriptions":{}}},"id":13575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28188:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13576,"name":"DEFAULT_SUBSCRIPTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10233,"src":"28203:20:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13570,"name":"operatorFilterRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10251,"src":"28144:22:47","typeDescriptions":{"typeIdentifier":"t_contract$_IOperatorFilterRegistry_$613","typeString":"contract IOperatorFilterRegistry"}},"id":13571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28167:20:47","memberName":"registerAndSubscribe","nodeType":"MemberAccess","referencedDeclaration":447,"src":"28144:43:47","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":13577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28144:80:47","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13597,"nodeType":"TryStatement","src":"28140:299:47"}]}}]}},"id":13602,"nodeType":"IfStatement","src":"27815:648:47","trueBody":{"id":13557,"nodeType":"Block","src":"27881:92:47","statements":[{"expression":{"arguments":[{"arguments":[{"id":13552,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27945:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_N2MTokenCommon_$13618","typeString":"contract N2MTokenCommon"}],"id":13551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27937:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13550,"name":"address","nodeType":"ElementaryTypeName","src":"27937:7:47","typeDescriptions":{}}},"id":13553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27937:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13554,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13540,"src":"27952:8:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13547,"name":"operatorFilterRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10251,"src":"27896:22:47","typeDescriptions":{"typeIdentifier":"t_contract$_IOperatorFilterRegistry_$613","typeString":"contract IOperatorFilterRegistry"}},"id":13549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27919:17:47","memberName":"isOperatorAllowed","nodeType":"MemberAccess","referencedDeclaration":435,"src":"27896:40:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view external returns (bool)"}},"id":13555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27896:65:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13556,"nodeType":"ExpressionStatement","src":"27896:65:47"}]}}]},"id":13604,"implemented":true,"kind":"function","modifiers":[],"name":"_isOperatorAllowed","nameLocation":"27760:18:47","nodeType":"FunctionDefinition","parameters":{"id":13541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13540,"mutability":"mutable","name":"operator","nameLocation":"27787:8:47","nodeType":"VariableDeclaration","scope":13604,"src":"27779:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13539,"name":"address","nodeType":"ElementaryTypeName","src":"27779:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"27778:18:47"},"returnParameters":{"id":13542,"nodeType":"ParameterList","parameters":[],"src":"27805:0:47"},"scope":13618,"src":"27751:720:47","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":13612,"nodeType":"Block","src":"28509:572:47","statements":[{"assignments":[13608],"declarations":[{"constant":false,"id":13608,"mutability":"mutable","name":"libraryAddress","nameLocation":"28527:14:47","nodeType":"VariableDeclaration","scope":13612,"src":"28519:22:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13607,"name":"address","nodeType":"ElementaryTypeName","src":"28519:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13610,"initialValue":{"id":13609,"name":"LIBRARY_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11969,"src":"28544:15:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"28519:40:47"},{"AST":{"nodeType":"YulBlock","src":"28579:496:47","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28607:1:47","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28610:1:47","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"28613:12:47"},"nodeType":"YulFunctionCall","src":"28613:14:47"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"28594:12:47"},"nodeType":"YulFunctionCall","src":"28594:34:47"},"nodeType":"YulExpressionStatement","src":"28594:34:47"},{"nodeType":"YulVariableDeclaration","src":"28642:184:47","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"28686:3:47"},"nodeType":"YulFunctionCall","src":"28686:5:47"},{"name":"libraryAddress","nodeType":"YulIdentifier","src":"28709:14:47"},{"kind":"number","nodeType":"YulLiteral","src":"28741:1:47","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"28760:12:47"},"nodeType":"YulFunctionCall","src":"28760:14:47"},{"kind":"number","nodeType":"YulLiteral","src":"28792:1:47","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28811:1:47","type":"","value":"0"}],"functionName":{"name":"delegatecall","nodeType":"YulIdentifier","src":"28656:12:47"},"nodeType":"YulFunctionCall","src":"28656:170:47"},"variables":[{"name":"result","nodeType":"YulTypedName","src":"28646:6:47","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28855:1:47","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28858:1:47","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"28861:14:47"},"nodeType":"YulFunctionCall","src":"28861:16:47"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"28840:14:47"},"nodeType":"YulFunctionCall","src":"28840:38:47"},"nodeType":"YulExpressionStatement","src":"28840:38:47"},{"cases":[{"body":{"nodeType":"YulBlock","src":"28926:59:47","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28951:1:47","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"28954:14:47"},"nodeType":"YulFunctionCall","src":"28954:16:47"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"28944:6:47"},"nodeType":"YulFunctionCall","src":"28944:27:47"},"nodeType":"YulExpressionStatement","src":"28944:27:47"}]},"nodeType":"YulCase","src":"28919:66:47","value":{"kind":"number","nodeType":"YulLiteral","src":"28924:1:47","type":"","value":"0"}},{"body":{"nodeType":"YulBlock","src":"29006:59:47","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"29031:1:47","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"29034:14:47"},"nodeType":"YulFunctionCall","src":"29034:16:47"}],"functionName":{"name":"return","nodeType":"YulIdentifier","src":"29024:6:47"},"nodeType":"YulFunctionCall","src":"29024:27:47"},"nodeType":"YulExpressionStatement","src":"29024:27:47"}]},"nodeType":"YulCase","src":"28998:67:47","value":"default"}],"expression":{"name":"result","nodeType":"YulIdentifier","src":"28899:6:47"},"nodeType":"YulSwitch","src":"28892:173:47"}]},"evmVersion":"paris","externalReferences":[{"declaration":13608,"isOffset":false,"isSlot":false,"src":"28709:14:47","valueSize":1}],"id":13611,"nodeType":"InlineAssembly","src":"28570:505:47"}]},"id":13613,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13605,"nodeType":"ParameterList","parameters":[],"src":"28485:2:47"},"returnParameters":{"id":13606,"nodeType":"ParameterList","parameters":[],"src":"28509:0:47"},"scope":13618,"src":"28477:604:47","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":13616,"nodeType":"Block","src":"29114:2:47","statements":[]},"id":13617,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13614,"nodeType":"ParameterList","parameters":[],"src":"29094:2:47"},"returnParameters":{"id":13615,"nodeType":"ParameterList","parameters":[],"src":"29114:0:47"},"scope":13618,"src":"29087:29:47","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":13619,"src":"6232:22890:47","usedErrors":[271,274,277,280,283,286,289,292,295,298,301,304,307,310,313,316,319,322,325,328,331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376,379,384]}],"src":"4913:24210:47"},"id":47},"contracts/N2MVersion.sol":{"ast":{"absolutePath":"contracts/N2MVersion.sol","exportedSymbols":{"N2MVersion":[13634],"Readme":[8]},"id":13635,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":13620,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:48"},{"absolutePath":"@nfts2me/contracts/important/README.sol","file":"@nfts2me/contracts/important/README.sol","id":13621,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13635,"sourceUnit":9,"src":"4939:49:48","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13623,"name":"Readme","nameLocations":["5294:6:48"],"nodeType":"IdentifierPath","referencedDeclaration":8,"src":"5294:6:48"},"id":13624,"nodeType":"InheritanceSpecifier","src":"5294:6:48"}],"canonicalName":"N2MVersion","contractDependencies":[],"contractKind":"contract","documentation":{"id":13622,"nodeType":"StructuredDocumentation","src":"4990:272:48","text":"@title NFTs2Me.com Smart Contracts Version\n @author The NFTs2Me Team\n @notice Read our terms of service\n @custom:security-contact security@nfts2me.com\n @custom:terms-of-service https://nfts2me.com/terms-of-service/\n @custom:website https://nfts2me.com/"},"fullyImplemented":true,"id":13634,"linearizedBaseContracts":[13634,8],"name":"N2MVersion","nameLocation":"5280:10:48","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[7],"body":{"id":13632,"nodeType":"Block","src":"5431:28:48","statements":[{"expression":{"hexValue":"31303030","id":13630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5448:4:48","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},"functionReturnParameters":13629,"id":13631,"nodeType":"Return","src":"5441:11:48"}]},"documentation":{"id":13625,"nodeType":"StructuredDocumentation","src":"5307:57:48","text":"@notice Current version of the nfts2me.com contracts."},"functionSelector":"cb93c48f","id":13633,"implemented":true,"kind":"function","modifiers":[],"name":"n2mVersion","nameLocation":"5378:10:48","nodeType":"FunctionDefinition","parameters":{"id":13626,"nodeType":"ParameterList","parameters":[],"src":"5388:2:48"},"returnParameters":{"id":13629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13628,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13633,"src":"5422:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13627,"name":"uint256","nodeType":"ElementaryTypeName","src":"5422:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5421:9:48"},"scope":13634,"src":"5369:90:48","stateMutability":"pure","virtual":true,"visibility":"external"}],"scope":13635,"src":"5262:200:48","usedErrors":[]}],"src":"4913:550:48"},"id":48},"contracts/TextUtils.sol":{"ast":{"absolutePath":"contracts/TextUtils.sol","exportedSymbols":{"BASE64_TABLE":[13639],"TextUtils":[13808]},"id":13809,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":13636,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:49"},{"constant":true,"id":13639,"mutability":"constant","name":"BASE64_TABLE","nameLocation":"4953:12:49","nodeType":"VariableDeclaration","scope":13809,"src":"4938:96:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13637,"name":"bytes","nodeType":"ElementaryTypeName","src":"4938:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":{"hexValue":"4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f","id":13638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4968:66:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_84d8a590de33e00cbdc16e1f28c3506f5ec15c599fab9a6a4bcd575cc2f110ce","typeString":"literal_string \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\""},"value":"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"},"visibility":"internal"},{"abstract":false,"baseContracts":[],"canonicalName":"TextUtils","contractDependencies":[],"contractKind":"library","documentation":{"id":13640,"nodeType":"StructuredDocumentation","src":"5037:266:49","text":"@title NFTs2Me.com TextUtils Library\n @author The NFTs2Me Team\n @notice Read our terms of service\n @custom:security-contact security@nfts2me.com\n @custom:terms-of-service https://nfts2me.com/terms-of-service/\n @custom:website https://nfts2me.com/"},"fullyImplemented":true,"id":13808,"linearizedBaseContracts":[13808],"name":"TextUtils","nameLocation":"5311:9:49","nodeType":"ContractDefinition","nodes":[{"body":{"id":13690,"nodeType":"Block","src":"5499:1583:49","statements":[{"assignments":[13649],"declarations":[{"constant":false,"id":13649,"mutability":"mutable","name":"len","nameLocation":"5517:3:49","nodeType":"VariableDeclaration","scope":13690,"src":"5509:11:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13648,"name":"uint256","nodeType":"ElementaryTypeName","src":"5509:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13652,"initialValue":{"expression":{"id":13650,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13643,"src":"5523:4:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5528:6:49","memberName":"length","nodeType":"MemberAccess","src":"5523:11:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5509:25:49"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13653,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13649,"src":"5548:3:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5555:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5548:8:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13658,"nodeType":"IfStatement","src":"5544:23:49","trueBody":{"expression":{"hexValue":"","id":13656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5565:2:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":13647,"id":13657,"nodeType":"Return","src":"5558:9:49"}},{"assignments":[13660],"declarations":[{"constant":false,"id":13660,"mutability":"mutable","name":"encodedLen","nameLocation":"5586:10:49","nodeType":"VariableDeclaration","scope":13690,"src":"5578:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13659,"name":"uint256","nodeType":"ElementaryTypeName","src":"5578:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13670,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"34","id":13661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5599:1:49","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13662,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13649,"src":"5605:3:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":13663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5611:1:49","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5605:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13665,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5604:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":13666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5616:1:49","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"5604:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13668,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5603:15:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5599:19:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5578:40:49"},{"assignments":[13672],"declarations":[{"constant":false,"id":13672,"mutability":"mutable","name":"result","nameLocation":"5642:6:49","nodeType":"VariableDeclaration","scope":13690,"src":"5629:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13671,"name":"bytes","nodeType":"ElementaryTypeName","src":"5629:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":13679,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13675,"name":"encodedLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13660,"src":"5661:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3332","id":13676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5674:2:49","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"5661:15:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5651:9:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":13673,"name":"bytes","nodeType":"ElementaryTypeName","src":"5655:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":13678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5651:26:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5629:48:49"},{"assignments":[13681],"declarations":[{"constant":false,"id":13681,"mutability":"mutable","name":"table","nameLocation":"5701:5:49","nodeType":"VariableDeclaration","scope":13690,"src":"5688:18:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13680,"name":"bytes","nodeType":"ElementaryTypeName","src":"5688:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":13683,"initialValue":{"id":13682,"name":"BASE64_TABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13639,"src":"5709:12:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5688:33:49"},{"AST":{"nodeType":"YulBlock","src":"5741:1303:49","statements":[{"nodeType":"YulVariableDeclaration","src":"5755:29:49","value":{"arguments":[{"name":"table","nodeType":"YulIdentifier","src":"5775:5:49"},{"kind":"number","nodeType":"YulLiteral","src":"5782:1:49","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5771:3:49"},"nodeType":"YulFunctionCall","src":"5771:13:49"},"variables":[{"name":"tablePtr","nodeType":"YulTypedName","src":"5759:8:49","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5797:32:49","value":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"5818:6:49"},{"kind":"number","nodeType":"YulLiteral","src":"5826:2:49","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5814:3:49"},"nodeType":"YulFunctionCall","src":"5814:15:49"},"variables":[{"name":"resultPtr","nodeType":"YulTypedName","src":"5801:9:49","type":""}]},{"body":{"nodeType":"YulBlock","src":"5918:856:49","statements":[{"nodeType":"YulAssignment","src":"5936:14:49","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5945:1:49"},{"kind":"number","nodeType":"YulLiteral","src":"5948:1:49","type":"","value":"3"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:49"},"nodeType":"YulFunctionCall","src":"5941:9:49"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5936:1:49"}]},{"nodeType":"YulVariableDeclaration","src":"5967:47:49","value":{"arguments":[{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5994:4:49"},{"name":"i","nodeType":"YulIdentifier","src":"6000:1:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5990:3:49"},"nodeType":"YulFunctionCall","src":"5990:12:49"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5984:5:49"},"nodeType":"YulFunctionCall","src":"5984:19:49"},{"kind":"number","nodeType":"YulLiteral","src":"6005:8:49","type":"","value":"0xffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5980:3:49"},"nodeType":"YulFunctionCall","src":"5980:34:49"},"variables":[{"name":"input","nodeType":"YulTypedName","src":"5971:5:49","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6032:58:49","value":{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"6053:8:49"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6071:2:49","type":"","value":"18"},{"name":"input","nodeType":"YulIdentifier","src":"6075:5:49"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6067:3:49"},"nodeType":"YulFunctionCall","src":"6067:14:49"},{"kind":"number","nodeType":"YulLiteral","src":"6083:4:49","type":"","value":"0x3F"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6063:3:49"},"nodeType":"YulFunctionCall","src":"6063:25:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6049:3:49"},"nodeType":"YulFunctionCall","src":"6049:40:49"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6043:5:49"},"nodeType":"YulFunctionCall","src":"6043:47:49"},"variables":[{"name":"out","nodeType":"YulTypedName","src":"6036:3:49","type":""}]},{"nodeType":"YulAssignment","src":"6107:18:49","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6118:1:49","type":"","value":"8"},{"name":"out","nodeType":"YulIdentifier","src":"6121:3:49"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6114:3:49"},"nodeType":"YulFunctionCall","src":"6114:11:49"},"variableNames":[{"name":"out","nodeType":"YulIdentifier","src":"6107:3:49"}]},{"nodeType":"YulAssignment","src":"6142:133:49","value":{"arguments":[{"name":"out","nodeType":"YulIdentifier","src":"6174:3:49"},{"arguments":[{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"6213:8:49"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6231:2:49","type":"","value":"12"},{"name":"input","nodeType":"YulIdentifier","src":"6235:5:49"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6227:3:49"},"nodeType":"YulFunctionCall","src":"6227:14:49"},{"kind":"number","nodeType":"YulLiteral","src":"6243:4:49","type":"","value":"0x3F"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6223:3:49"},"nodeType":"YulFunctionCall","src":"6223:25:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6209:3:49"},"nodeType":"YulFunctionCall","src":"6209:40:49"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6203:5:49"},"nodeType":"YulFunctionCall","src":"6203:47:49"},{"kind":"number","nodeType":"YulLiteral","src":"6252:4:49","type":"","value":"0xFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6199:3:49"},"nodeType":"YulFunctionCall","src":"6199:58:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6149:3:49"},"nodeType":"YulFunctionCall","src":"6149:126:49"},"variableNames":[{"name":"out","nodeType":"YulIdentifier","src":"6142:3:49"}]},{"nodeType":"YulAssignment","src":"6292:18:49","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6303:1:49","type":"","value":"8"},{"name":"out","nodeType":"YulIdentifier","src":"6306:3:49"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6299:3:49"},"nodeType":"YulFunctionCall","src":"6299:11:49"},"variableNames":[{"name":"out","nodeType":"YulIdentifier","src":"6292:3:49"}]},{"nodeType":"YulAssignment","src":"6327:132:49","value":{"arguments":[{"name":"out","nodeType":"YulIdentifier","src":"6359:3:49"},{"arguments":[{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"6398:8:49"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6416:1:49","type":"","value":"6"},{"name":"input","nodeType":"YulIdentifier","src":"6419:5:49"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6412:3:49"},"nodeType":"YulFunctionCall","src":"6412:13:49"},{"kind":"number","nodeType":"YulLiteral","src":"6427:4:49","type":"","value":"0x3F"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6408:3:49"},"nodeType":"YulFunctionCall","src":"6408:24:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6394:3:49"},"nodeType":"YulFunctionCall","src":"6394:39:49"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6388:5:49"},"nodeType":"YulFunctionCall","src":"6388:46:49"},{"kind":"number","nodeType":"YulLiteral","src":"6436:4:49","type":"","value":"0xFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6384:3:49"},"nodeType":"YulFunctionCall","src":"6384:57:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6334:3:49"},"nodeType":"YulFunctionCall","src":"6334:125:49"},"variableNames":[{"name":"out","nodeType":"YulIdentifier","src":"6327:3:49"}]},{"nodeType":"YulAssignment","src":"6476:18:49","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6487:1:49","type":"","value":"8"},{"name":"out","nodeType":"YulIdentifier","src":"6490:3:49"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6483:3:49"},"nodeType":"YulFunctionCall","src":"6483:11:49"},"variableNames":[{"name":"out","nodeType":"YulIdentifier","src":"6476:3:49"}]},{"nodeType":"YulAssignment","src":"6511:124:49","value":{"arguments":[{"name":"out","nodeType":"YulIdentifier","src":"6543:3:49"},{"arguments":[{"arguments":[{"arguments":[{"name":"tablePtr","nodeType":"YulIdentifier","src":"6582:8:49"},{"arguments":[{"name":"input","nodeType":"YulIdentifier","src":"6596:5:49"},{"kind":"number","nodeType":"YulLiteral","src":"6603:4:49","type":"","value":"0x3F"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6592:3:49"},"nodeType":"YulFunctionCall","src":"6592:16:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6578:3:49"},"nodeType":"YulFunctionCall","src":"6578:31:49"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6572:5:49"},"nodeType":"YulFunctionCall","src":"6572:38:49"},{"kind":"number","nodeType":"YulLiteral","src":"6612:4:49","type":"","value":"0xFF"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6568:3:49"},"nodeType":"YulFunctionCall","src":"6568:49:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6518:3:49"},"nodeType":"YulFunctionCall","src":"6518:117:49"},"variableNames":[{"name":"out","nodeType":"YulIdentifier","src":"6511:3:49"}]},{"nodeType":"YulAssignment","src":"6652:20:49","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6663:3:49","type":"","value":"224"},{"name":"out","nodeType":"YulIdentifier","src":"6668:3:49"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6659:3:49"},"nodeType":"YulFunctionCall","src":"6659:13:49"},"variableNames":[{"name":"out","nodeType":"YulIdentifier","src":"6652:3:49"}]},{"expression":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"6697:9:49"},{"name":"out","nodeType":"YulIdentifier","src":"6708:3:49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6690:6:49"},"nodeType":"YulFunctionCall","src":"6690:22:49"},"nodeType":"YulExpressionStatement","src":"6690:22:49"},{"nodeType":"YulAssignment","src":"6730:30:49","value":{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"6747:9:49"},{"kind":"number","nodeType":"YulLiteral","src":"6758:1:49","type":"","value":"4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6743:3:49"},"nodeType":"YulFunctionCall","src":"6743:17:49"},"variableNames":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"6730:9:49"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5893:1:49"},{"name":"len","nodeType":"YulIdentifier","src":"5896:3:49"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5890:2:49"},"nodeType":"YulFunctionCall","src":"5890:10:49"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5901:16:49","statements":[]},"pre":{"nodeType":"YulBlock","src":"5847:42:49","statements":[{"nodeType":"YulVariableDeclaration","src":"5865:10:49","value":{"kind":"number","nodeType":"YulLiteral","src":"5874:1:49","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5869:1:49","type":""}]}]},"src":"5843:931:49"},{"cases":[{"body":{"nodeType":"YulBlock","src":"6826:75:49","statements":[{"expression":{"arguments":[{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"6855:9:49"},{"kind":"number","nodeType":"YulLiteral","src":"6866:1:49","type":"","value":"2"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6851:3:49"},"nodeType":"YulFunctionCall","src":"6851:17:49"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6874:3:49","type":"","value":"240"},{"kind":"number","nodeType":"YulLiteral","src":"6879:6:49","type":"","value":"0x3d3d"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6870:3:49"},"nodeType":"YulFunctionCall","src":"6870:16:49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6844:6:49"},"nodeType":"YulFunctionCall","src":"6844:43:49"},"nodeType":"YulExpressionStatement","src":"6844:43:49"}]},"nodeType":"YulCase","src":"6819:82:49","value":{"kind":"number","nodeType":"YulLiteral","src":"6824:1:49","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"6921:73:49","statements":[{"expression":{"arguments":[{"arguments":[{"name":"resultPtr","nodeType":"YulIdentifier","src":"6950:9:49"},{"kind":"number","nodeType":"YulLiteral","src":"6961:1:49","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6946:3:49"},"nodeType":"YulFunctionCall","src":"6946:17:49"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6969:3:49","type":"","value":"248"},{"kind":"number","nodeType":"YulLiteral","src":"6974:4:49","type":"","value":"0x3d"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6965:3:49"},"nodeType":"YulFunctionCall","src":"6965:14:49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6939:6:49"},"nodeType":"YulFunctionCall","src":"6939:41:49"},"nodeType":"YulExpressionStatement","src":"6939:41:49"}]},"nodeType":"YulCase","src":"6914:80:49","value":{"kind":"number","nodeType":"YulLiteral","src":"6919:1:49","type":"","value":"2"}}],"expression":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"6799:3:49"},{"kind":"number","nodeType":"YulLiteral","src":"6804:1:49","type":"","value":"3"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"6795:3:49"},"nodeType":"YulFunctionCall","src":"6795:11:49"},"nodeType":"YulSwitch","src":"6788:206:49"},{"expression":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"7015:6:49"},{"name":"encodedLen","nodeType":"YulIdentifier","src":"7023:10:49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7008:6:49"},"nodeType":"YulFunctionCall","src":"7008:26:49"},"nodeType":"YulExpressionStatement","src":"7008:26:49"}]},"evmVersion":"paris","externalReferences":[{"declaration":13643,"isOffset":false,"isSlot":false,"src":"5994:4:49","valueSize":1},{"declaration":13660,"isOffset":false,"isSlot":false,"src":"7023:10:49","valueSize":1},{"declaration":13649,"isOffset":false,"isSlot":false,"src":"5896:3:49","valueSize":1},{"declaration":13649,"isOffset":false,"isSlot":false,"src":"6799:3:49","valueSize":1},{"declaration":13672,"isOffset":false,"isSlot":false,"src":"5818:6:49","valueSize":1},{"declaration":13672,"isOffset":false,"isSlot":false,"src":"7015:6:49","valueSize":1},{"declaration":13681,"isOffset":false,"isSlot":false,"src":"5775:5:49","valueSize":1}],"id":13684,"nodeType":"InlineAssembly","src":"5732:1312:49"},{"expression":{"arguments":[{"id":13687,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13672,"src":"7068:6:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7061:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":13685,"name":"string","nodeType":"ElementaryTypeName","src":"7061:6:49","typeDescriptions":{}}},"id":13688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7061:14:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":13647,"id":13689,"nodeType":"Return","src":"7054:21:49"}]},"documentation":{"id":13641,"nodeType":"StructuredDocumentation","src":"5328:59:49","text":"@notice Encodes some bytes to the base64 representation"},"id":13691,"implemented":true,"kind":"function","modifiers":[],"name":"base64Encode","nameLocation":"5401:12:49","nodeType":"FunctionDefinition","parameters":{"id":13644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13643,"mutability":"mutable","name":"data","nameLocation":"5427:4:49","nodeType":"VariableDeclaration","scope":13691,"src":"5414:17:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13642,"name":"bytes","nodeType":"ElementaryTypeName","src":"5414:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5413:19:49"},"returnParameters":{"id":13647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13646,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13691,"src":"5480:13:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13645,"name":"string","nodeType":"ElementaryTypeName","src":"5480:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5479:15:49"},"scope":13808,"src":"5392:1690:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13806,"nodeType":"Block","src":"7210:948:49","statements":[{"assignments":[13699],"declarations":[{"constant":false,"id":13699,"mutability":"mutable","name":"symbolBytes","nameLocation":"7233:11:49","nodeType":"VariableDeclaration","scope":13806,"src":"7220:24:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13698,"name":"bytes","nodeType":"ElementaryTypeName","src":"7220:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":13704,"initialValue":{"arguments":[{"id":13702,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13693,"src":"7253:6:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":13701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7247:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":13700,"name":"bytes","nodeType":"ElementaryTypeName","src":"7247:5:49","typeDescriptions":{}}},"id":13703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7247:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7220:40:49"},{"assignments":[13706],"declarations":[{"constant":false,"id":13706,"mutability":"mutable","name":"quotesCount","nameLocation":"7276:11:49","nodeType":"VariableDeclaration","scope":13806,"src":"7270:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13705,"name":"uint8","nodeType":"ElementaryTypeName","src":"7270:5:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":13707,"nodeType":"VariableDeclarationStatement","src":"7270:17:49"},{"body":{"id":13736,"nodeType":"Block","src":"7337:232:49","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":13719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":13715,"name":"symbolBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13699,"src":"7355:11:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13717,"indexExpression":{"id":13716,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13709,"src":"7367:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7355:14:49","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"22","id":13718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7373:3:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0","typeString":"literal_string \"\"\""},"value":"\""},"src":"7355:21:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":13724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":13720,"name":"symbolBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13699,"src":"7380:11:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13722,"indexExpression":{"id":13721,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13709,"src":"7392:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7380:14:49","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"5c","id":13723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7398:4:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"},"src":"7380:22:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7355:47:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13731,"nodeType":"IfStatement","src":"7351:149:49","trueBody":{"id":13730,"nodeType":"Block","src":"7404:96:49","statements":[{"id":13729,"nodeType":"UncheckedBlock","src":"7422:64:49","statements":[{"expression":{"id":13727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7454:13:49","subExpression":{"id":13726,"name":"quotesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13706,"src":"7456:11:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":13728,"nodeType":"ExpressionStatement","src":"7454:13:49"}]}]}},{"id":13735,"nodeType":"UncheckedBlock","src":"7513:46:49","statements":[{"expression":{"id":13733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7541:3:49","subExpression":{"id":13732,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13709,"src":"7543:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":13734,"nodeType":"ExpressionStatement","src":"7541:3:49"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13711,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13709,"src":"7311:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13712,"name":"symbolBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13699,"src":"7315:11:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7327:6:49","memberName":"length","nodeType":"MemberAccess","src":"7315:18:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7311:22:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13737,"initializationExpression":{"assignments":[13709],"declarations":[{"constant":false,"id":13709,"mutability":"mutable","name":"i","nameLocation":"7308:1:49","nodeType":"VariableDeclaration","scope":13737,"src":"7302:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13708,"name":"uint8","nodeType":"ElementaryTypeName","src":"7302:5:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":13710,"nodeType":"VariableDeclarationStatement","src":"7302:7:49"},"nodeType":"ForStatement","src":"7297:272:49"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":13740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13738,"name":"quotesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13706,"src":"7582:11:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7596:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7582:15:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13803,"nodeType":"IfStatement","src":"7578:551:49","trueBody":{"id":13802,"nodeType":"Block","src":"7599:530:49","statements":[{"assignments":[13742],"declarations":[{"constant":false,"id":13742,"mutability":"mutable","name":"escapedBytes","nameLocation":"7626:12:49","nodeType":"VariableDeclaration","scope":13802,"src":"7613:25:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13741,"name":"bytes","nodeType":"ElementaryTypeName","src":"7613:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":13751,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13745,"name":"symbolBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13699,"src":"7668:11:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7680:6:49","memberName":"length","nodeType":"MemberAccess","src":"7668:18:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"id":13747,"name":"quotesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13706,"src":"7690:11:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":13748,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7689:13:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7668:34:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7641:9:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":13743,"name":"bytes","nodeType":"ElementaryTypeName","src":"7645:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":13750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7641:75:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7613:103:49"},{"assignments":[13753],"declarations":[{"constant":false,"id":13753,"mutability":"mutable","name":"index","nameLocation":"7738:5:49","nodeType":"VariableDeclaration","scope":13802,"src":"7730:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13752,"name":"uint256","nodeType":"ElementaryTypeName","src":"7730:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13754,"nodeType":"VariableDeclarationStatement","src":"7730:13:49"},{"body":{"id":13795,"nodeType":"Block","src":"7797:281:49","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":13766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":13762,"name":"symbolBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13699,"src":"7819:11:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13764,"indexExpression":{"id":13763,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13756,"src":"7831:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7819:14:49","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"22","id":13765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7837:3:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0","typeString":"literal_string \"\"\""},"value":"\""},"src":"7819:21:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":13771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":13767,"name":"symbolBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13699,"src":"7844:11:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13769,"indexExpression":{"id":13768,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13756,"src":"7856:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7844:14:49","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"5c","id":13770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7862:4:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"},"src":"7844:22:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7819:47:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13781,"nodeType":"IfStatement","src":"7815:122:49","trueBody":{"id":13780,"nodeType":"Block","src":"7868:69:49","statements":[{"expression":{"id":13778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13773,"name":"escapedBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13742,"src":"7890:12:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13776,"indexExpression":{"id":13775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7903:7:49","subExpression":{"id":13774,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13753,"src":"7903:5:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7890:21:49","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"5c","id":13777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7914:4:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"},"src":"7890:28:49","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":13779,"nodeType":"ExpressionStatement","src":"7890:28:49"}]}},{"expression":{"id":13789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13782,"name":"escapedBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13742,"src":"7954:12:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13785,"indexExpression":{"id":13784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7967:7:49","subExpression":{"id":13783,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13753,"src":"7967:5:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7954:21:49","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":13786,"name":"symbolBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13699,"src":"7978:11:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13788,"indexExpression":{"id":13787,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13756,"src":"7990:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7978:14:49","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"7954:38:49","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":13790,"nodeType":"ExpressionStatement","src":"7954:38:49"},{"id":13794,"nodeType":"UncheckedBlock","src":"8010:54:49","statements":[{"expression":{"id":13792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8042:3:49","subExpression":{"id":13791,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13756,"src":"8044:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":13793,"nodeType":"ExpressionStatement","src":"8042:3:49"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13758,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13756,"src":"7771:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13759,"name":"symbolBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13699,"src":"7775:11:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7787:6:49","memberName":"length","nodeType":"MemberAccess","src":"7775:18:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7771:22:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13796,"initializationExpression":{"assignments":[13756],"declarations":[{"constant":false,"id":13756,"mutability":"mutable","name":"i","nameLocation":"7768:1:49","nodeType":"VariableDeclaration","scope":13796,"src":"7762:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13755,"name":"uint8","nodeType":"ElementaryTypeName","src":"7762:5:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":13757,"nodeType":"VariableDeclarationStatement","src":"7762:7:49"},"nodeType":"ForStatement","src":"7757:321:49"},{"expression":{"arguments":[{"id":13799,"name":"escapedBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13742,"src":"8105:12:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8098:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":13797,"name":"string","nodeType":"ElementaryTypeName","src":"8098:6:49","typeDescriptions":{}}},"id":13800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8098:20:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":13697,"id":13801,"nodeType":"Return","src":"8091:27:49"}]}},{"expression":{"id":13804,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13693,"src":"8145:6:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":13697,"id":13805,"nodeType":"Return","src":"8138:13:49"}]},"id":13807,"implemented":true,"kind":"function","modifiers":[],"name":"escapeQuotesAndBackslash","nameLocation":"7097:24:49","nodeType":"FunctionDefinition","parameters":{"id":13694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13693,"mutability":"mutable","name":"symbol","nameLocation":"7136:6:49","nodeType":"VariableDeclaration","scope":13807,"src":"7122:20:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13692,"name":"string","nodeType":"ElementaryTypeName","src":"7122:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7121:22:49"},"returnParameters":{"id":13697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13696,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13807,"src":"7191:13:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13695,"name":"string","nodeType":"ElementaryTypeName","src":"7191:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7190:15:49"},"scope":13808,"src":"7088:1070:49","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":13809,"src":"5303:2861:49","usedErrors":[]}],"src":"4913:3251:49"},"id":49},"contracts/beacon/N2MERC1155Upgradeable.sol":{"ast":{"absolutePath":"contracts/beacon/N2MERC1155Upgradeable.sol","exportedSymbols":{"IN2MBeaconFactory":[21],"N2MERC1155Upgradeable":[13836],"N2MUpgradeable":[13908],"N2MVersion":[13634],"Proxy":[9841],"Readme":[8]},"id":13837,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":13810,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4828:24:50"},{"absolutePath":"contracts/beacon/N2MUpgradeable.sol","file":"./N2MUpgradeable.sol","id":13811,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13837,"sourceUnit":13909,"src":"4854:30:50","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13812,"name":"N2MUpgradeable","nameLocations":["4920:14:50"],"nodeType":"IdentifierPath","referencedDeclaration":13908,"src":"4920:14:50"},"id":13813,"nodeType":"InheritanceSpecifier","src":"4920:14:50"}],"canonicalName":"N2MERC1155Upgradeable","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":13836,"linearizedBaseContracts":[13836,13908,9841],"name":"N2MERC1155Upgradeable","nameLocation":"4895:21:50","nodeType":"ContractDefinition","nodes":[{"body":{"id":13821,"nodeType":"Block","src":"5008:2:50","statements":[]},"id":13822,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13818,"name":"factoryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13815,"src":"4992:14:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13819,"kind":"baseConstructorSpecifier","modifierName":{"id":13817,"name":"N2MUpgradeable","nameLocations":["4977:14:50"],"nodeType":"IdentifierPath","referencedDeclaration":13908,"src":"4977:14:50"},"nodeType":"ModifierInvocation","src":"4977:30:50"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13815,"mutability":"mutable","name":"factoryAddress","nameLocation":"4961:14:50","nodeType":"VariableDeclaration","scope":13822,"src":"4953:22:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13814,"name":"address","nodeType":"ElementaryTypeName","src":"4953:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4952:24:50"},"returnParameters":{"id":13820,"nodeType":"ParameterList","parameters":[],"src":"5008:0:50"},"scope":13836,"src":"4941:69:50","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[9806],"body":{"id":13834,"nodeType":"Block","src":"5084:85:50","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":13829,"name":"FACTORY_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13874,"src":"5119:15:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13828,"name":"IN2MBeaconFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"5101:17:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IN2MBeaconFactory_$21_$","typeString":"type(contract IN2MBeaconFactory)"}},"id":13830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5101:34:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IN2MBeaconFactory_$21","typeString":"contract IN2MBeaconFactory"}},"id":13831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5136:24:50","memberName":"getERC1155Implementation","nodeType":"MemberAccess","referencedDeclaration":20,"src":"5101:59:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5101:61:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13827,"id":13833,"nodeType":"Return","src":"5094:68:50"}]},"id":13835,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"5025:15:50","nodeType":"FunctionDefinition","overrides":{"id":13824,"nodeType":"OverrideSpecifier","overrides":[],"src":"5057:8:50"},"parameters":{"id":13823,"nodeType":"ParameterList","parameters":[],"src":"5040:2:50"},"returnParameters":{"id":13827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13826,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13835,"src":"5075:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13825,"name":"address","nodeType":"ElementaryTypeName","src":"5075:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5074:9:50"},"scope":13836,"src":"5016:153:50","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":13837,"src":"4886:285:50","usedErrors":[]}],"src":"4828:344:50"},"id":50},"contracts/beacon/N2MERC721Upgradeable.sol":{"ast":{"absolutePath":"contracts/beacon/N2MERC721Upgradeable.sol","exportedSymbols":{"IN2MBeaconFactory":[21],"N2MERC721Upgradeable":[13864],"N2MUpgradeable":[13908],"N2MVersion":[13634],"Proxy":[9841],"Readme":[8]},"id":13865,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":13838,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4829:24:51"},{"absolutePath":"contracts/beacon/N2MUpgradeable.sol","file":"./N2MUpgradeable.sol","id":13839,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13865,"sourceUnit":13909,"src":"4855:30:51","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13840,"name":"N2MUpgradeable","nameLocations":["4920:14:51"],"nodeType":"IdentifierPath","referencedDeclaration":13908,"src":"4920:14:51"},"id":13841,"nodeType":"InheritanceSpecifier","src":"4920:14:51"}],"canonicalName":"N2MERC721Upgradeable","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":13864,"linearizedBaseContracts":[13864,13908,9841],"name":"N2MERC721Upgradeable","nameLocation":"4896:20:51","nodeType":"ContractDefinition","nodes":[{"body":{"id":13849,"nodeType":"Block","src":"5008:2:51","statements":[]},"id":13850,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13846,"name":"factoryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13843,"src":"4992:14:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13847,"kind":"baseConstructorSpecifier","modifierName":{"id":13845,"name":"N2MUpgradeable","nameLocations":["4977:14:51"],"nodeType":"IdentifierPath","referencedDeclaration":13908,"src":"4977:14:51"},"nodeType":"ModifierInvocation","src":"4977:30:51"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13843,"mutability":"mutable","name":"factoryAddress","nameLocation":"4961:14:51","nodeType":"VariableDeclaration","scope":13850,"src":"4953:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13842,"name":"address","nodeType":"ElementaryTypeName","src":"4953:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4952:24:51"},"returnParameters":{"id":13848,"nodeType":"ParameterList","parameters":[],"src":"5008:0:51"},"scope":13864,"src":"4941:69:51","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[9806],"body":{"id":13862,"nodeType":"Block","src":"5084:84:51","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":13857,"name":"FACTORY_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13874,"src":"5119:15:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13856,"name":"IN2MBeaconFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"5101:17:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IN2MBeaconFactory_$21_$","typeString":"type(contract IN2MBeaconFactory)"}},"id":13858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5101:34:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IN2MBeaconFactory_$21","typeString":"contract IN2MBeaconFactory"}},"id":13859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5136:23:51","memberName":"getERC721Implementation","nodeType":"MemberAccess","referencedDeclaration":15,"src":"5101:58:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":13860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5101:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13855,"id":13861,"nodeType":"Return","src":"5094:67:51"}]},"id":13863,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"5025:15:51","nodeType":"FunctionDefinition","overrides":{"id":13852,"nodeType":"OverrideSpecifier","overrides":[],"src":"5057:8:51"},"parameters":{"id":13851,"nodeType":"ParameterList","parameters":[],"src":"5040:2:51"},"returnParameters":{"id":13855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13854,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13863,"src":"5075:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13853,"name":"address","nodeType":"ElementaryTypeName","src":"5075:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5074:9:51"},"scope":13864,"src":"5016:152:51","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":13865,"src":"4887:283:51","usedErrors":[]}],"src":"4829:342:51"},"id":51},"contracts/beacon/N2MUpgradeable.sol":{"ast":{"absolutePath":"contracts/beacon/N2MUpgradeable.sol","exportedSymbols":{"IN2MBeaconFactory":[21],"N2MUpgradeable":[13908],"N2MVersion":[13634],"Proxy":[9841],"Readme":[8]},"id":13909,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":13866,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4829:24:52"},{"absolutePath":"@nfts2me/contracts/important/README.sol","file":"@nfts2me/contracts/important/README.sol","id":13867,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13909,"sourceUnit":9,"src":"4855:49:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol","file":"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol","id":13868,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13909,"sourceUnit":22,"src":"4905:61:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","id":13869,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13909,"sourceUnit":9842,"src":"4967:49:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/N2MVersion.sol","file":"../N2MVersion.sol","id":13870,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13909,"sourceUnit":13635,"src":"5017:27:52","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13871,"name":"Proxy","nameLocations":["5082:5:52"],"nodeType":"IdentifierPath","referencedDeclaration":9841,"src":"5082:5:52"},"id":13872,"nodeType":"InheritanceSpecifier","src":"5082:5:52"}],"canonicalName":"N2MUpgradeable","contractDependencies":[],"contractKind":"contract","fullyImplemented":false,"id":13908,"linearizedBaseContracts":[13908,9841],"name":"N2MUpgradeable","nameLocation":"5064:14:52","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":13874,"mutability":"immutable","name":"FACTORY_ADDRESS","nameLocation":"5121:15:52","nodeType":"VariableDeclaration","scope":13908,"src":"5094:42:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13873,"name":"address","nodeType":"ElementaryTypeName","src":"5094:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"body":{"id":13883,"nodeType":"Block","src":"5179:49:52","statements":[{"expression":{"id":13881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13879,"name":"FACTORY_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13874,"src":"5189:15:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13880,"name":"factoryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13876,"src":"5207:14:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5189:32:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13882,"nodeType":"ExpressionStatement","src":"5189:32:52"}]},"id":13884,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13876,"mutability":"mutable","name":"factoryAddress","nameLocation":"5163:14:52","nodeType":"VariableDeclaration","scope":13884,"src":"5155:22:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13875,"name":"address","nodeType":"ElementaryTypeName","src":"5155:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5154:24:52"},"returnParameters":{"id":13878,"nodeType":"ParameterList","parameters":[],"src":"5179:0:52"},"scope":13908,"src":"5143:85:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13906,"nodeType":"Block","src":"5334:109:52","statements":[{"expression":{"id":13900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13891,"name":"implementationVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13887,"src":"5344:21:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":13895,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5387:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_N2MUpgradeable_$13908","typeString":"contract N2MUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_N2MUpgradeable_$13908","typeString":"contract N2MUpgradeable"}],"id":13894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5379:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13893,"name":"address","nodeType":"ElementaryTypeName","src":"5379:7:52","typeDescriptions":{}}},"id":13896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5379:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13892,"name":"N2MVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13634,"src":"5368:10:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_N2MVersion_$13634_$","typeString":"type(contract N2MVersion)"}},"id":13897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5368:25:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_N2MVersion_$13634","typeString":"contract N2MVersion"}},"id":13898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5394:10:52","memberName":"n2mVersion","nodeType":"MemberAccess","referencedDeclaration":13633,"src":"5368:36:52","typeDescriptions":{"typeIdentifier":"t_function_external_pure$__$returns$_t_uint256_$","typeString":"function () pure external returns (uint256)"}},"id":13899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5368:38:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5344:62:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13901,"nodeType":"ExpressionStatement","src":"5344:62:52"},{"expression":{"id":13904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13902,"name":"beaconVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13889,"src":"5416:13:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31303030","id":13903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5432:4:52","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},"src":"5416:20:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13905,"nodeType":"ExpressionStatement","src":"5416:20:52"}]},"functionSelector":"db198ff0","id":13907,"implemented":true,"kind":"function","modifiers":[],"name":"n2mVersions","nameLocation":"5243:11:52","nodeType":"FunctionDefinition","parameters":{"id":13885,"nodeType":"ParameterList","parameters":[],"src":"5254:2:52"},"returnParameters":{"id":13890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13887,"mutability":"mutable","name":"implementationVersion","nameLocation":"5288:21:52","nodeType":"VariableDeclaration","scope":13907,"src":"5280:29:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13886,"name":"uint256","nodeType":"ElementaryTypeName","src":"5280:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13889,"mutability":"mutable","name":"beaconVersion","nameLocation":"5319:13:52","nodeType":"VariableDeclaration","scope":13907,"src":"5311:21:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13888,"name":"uint256","nodeType":"ElementaryTypeName","src":"5311:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5279:54:52"},"scope":13908,"src":"5234:209:52","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13909,"src":"5046:399:52","usedErrors":[]}],"src":"4829:617:52"},"id":52},"contracts/interfaces/IN2MBeaconFactory.sol":{"ast":{"absolutePath":"contracts/interfaces/IN2MBeaconFactory.sol","exportedSymbols":{"IN2MUpgradeable":[13921]},"id":13922,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":13910,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:53"},{"abstract":false,"baseContracts":[],"canonicalName":"IN2MUpgradeable","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":13921,"linearizedBaseContracts":[13921],"name":"IN2MUpgradeable","nameLocation":"4949:15:53","nodeType":"ContractDefinition","nodes":[{"functionSelector":"84663e53","id":13915,"implemented":false,"kind":"function","modifiers":[],"name":"getERC721Implementation","nameLocation":"4980:23:53","nodeType":"FunctionDefinition","parameters":{"id":13911,"nodeType":"ParameterList","parameters":[],"src":"5003:2:53"},"returnParameters":{"id":13914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13913,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13915,"src":"5029:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13912,"name":"address","nodeType":"ElementaryTypeName","src":"5029:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5028:9:53"},"scope":13921,"src":"4971:67:53","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9ccaabf6","id":13920,"implemented":false,"kind":"function","modifiers":[],"name":"getERC1155Implementation","nameLocation":"5052:24:53","nodeType":"FunctionDefinition","parameters":{"id":13916,"nodeType":"ParameterList","parameters":[],"src":"5076:2:53"},"returnParameters":{"id":13919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13920,"src":"5102:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13917,"name":"address","nodeType":"ElementaryTypeName","src":"5102:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5101:9:53"},"scope":13921,"src":"5043:68:53","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13922,"src":"4939:174:53","usedErrors":[]}],"src":"4913:201:53"},"id":53},"contracts/interfaces/IN2MCrossFactory.sol":{"ast":{"absolutePath":"contracts/interfaces/IN2MCrossFactory.sol","exportedSymbols":{"IN2MCrossFactory":[13943]},"id":13944,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":13923,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:54"},{"abstract":false,"baseContracts":[],"canonicalName":"IN2MCrossFactory","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":13943,"linearizedBaseContracts":[13943],"name":"IN2MCrossFactory","nameLocation":"4949:16:54","nodeType":"ContractDefinition","nodes":[{"functionSelector":"3765cb6a","id":13928,"implemented":false,"kind":"function","modifiers":[],"name":"getN2MTreasuryAddress","nameLocation":"4981:21:54","nodeType":"FunctionDefinition","parameters":{"id":13924,"nodeType":"ParameterList","parameters":[],"src":"5002:2:54"},"returnParameters":{"id":13927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13926,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13928,"src":"5028:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13925,"name":"address","nodeType":"ElementaryTypeName","src":"5028:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5027:9:54"},"scope":13943,"src":"4972:65:54","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"6352211e","id":13935,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"5051:7:54","nodeType":"FunctionDefinition","parameters":{"id":13931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13930,"mutability":"mutable","name":"tokenId","nameLocation":"5067:7:54","nodeType":"VariableDeclaration","scope":13935,"src":"5059:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13929,"name":"uint256","nodeType":"ElementaryTypeName","src":"5059:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5058:17:54"},"returnParameters":{"id":13934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13933,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13935,"src":"5099:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13932,"name":"address","nodeType":"ElementaryTypeName","src":"5099:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5098:9:54"},"scope":13943,"src":"5042:66:54","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"713562fe","id":13942,"implemented":false,"kind":"function","modifiers":[],"name":"strictOwnerOf","nameLocation":"5122:13:54","nodeType":"FunctionDefinition","parameters":{"id":13938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13937,"mutability":"mutable","name":"tokenId","nameLocation":"5144:7:54","nodeType":"VariableDeclaration","scope":13942,"src":"5136:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13936,"name":"uint256","nodeType":"ElementaryTypeName","src":"5136:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5135:17:54"},"returnParameters":{"id":13941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13940,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13942,"src":"5176:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13939,"name":"address","nodeType":"ElementaryTypeName","src":"5176:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5175:9:54"},"scope":13943,"src":"5113:72:54","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13944,"src":"4939:248:54","usedErrors":[]}],"src":"4913:275:54"},"id":54},"contracts/interfaces/IN2MERC1155.sol":{"ast":{"absolutePath":"contracts/interfaces/IN2MERC1155.sol","exportedSymbols":{"IERC1155":[9963],"IERC1155MetadataURI":[9978],"IERC165":[10211],"IERC165Upgradeable":[7305],"IERC2981Upgradeable":[1297],"IN2MERC1155":[13998],"IN2M_ERCBase":[14262],"IN2M_ERCCommon":[14277],"IN2M_ERCLibrary":[14486],"IN2M_ERCStorage":[14652],"Readme":[8]},"id":13999,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":13945,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:55"},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","file":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","id":13946,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13999,"sourceUnit":9964,"src":"4939:60:55","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","file":"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","id":13947,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13999,"sourceUnit":9979,"src":"5000:82:55","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IN2M_ERCCommon.sol","file":"./IN2M_ERCCommon.sol","id":13948,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13999,"sourceUnit":14278,"src":"5083:30:55","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13949,"name":"IERC1155MetadataURI","nameLocations":["5140:19:55"],"nodeType":"IdentifierPath","referencedDeclaration":9978,"src":"5140:19:55"},"id":13950,"nodeType":"InheritanceSpecifier","src":"5140:19:55"},{"baseName":{"id":13951,"name":"IN2M_ERCCommon","nameLocations":["5161:14:55"],"nodeType":"IdentifierPath","referencedDeclaration":14277,"src":"5161:14:55"},"id":13952,"nodeType":"InheritanceSpecifier","src":"5161:14:55"}],"canonicalName":"IN2MERC1155","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":13998,"linearizedBaseContracts":[13998,14277,14486,14262,14652,8,1297,7305,9978,9963,10211],"name":"IN2MERC1155","nameLocation":"5125:11:55","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[7304,10210],"functionSelector":"01ffc9a7","id":13962,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"5191:17:55","nodeType":"FunctionDefinition","overrides":{"id":13958,"nodeType":"OverrideSpecifier","overrides":[{"id":13956,"name":"IERC165","nameLocations":["5252:7:55"],"nodeType":"IdentifierPath","referencedDeclaration":10211,"src":"5252:7:55"},{"id":13957,"name":"IERC165Upgradeable","nameLocations":["5261:18:55"],"nodeType":"IdentifierPath","referencedDeclaration":7305,"src":"5261:18:55"}],"src":"5243:37:55"},"parameters":{"id":13955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13954,"mutability":"mutable","name":"interfaceId","nameLocation":"5216:11:55","nodeType":"VariableDeclaration","scope":13962,"src":"5209:18:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13953,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5209:6:55","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5208:20:55"},"returnParameters":{"id":13961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13960,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13962,"src":"5290:4:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13959,"name":"bool","nodeType":"ElementaryTypeName","src":"5290:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5289:6:55"},"scope":13998,"src":"5182:114:55","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"70a08231","id":13969,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"5310:9:55","nodeType":"FunctionDefinition","parameters":{"id":13965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13964,"mutability":"mutable","name":"owner","nameLocation":"5328:5:55","nodeType":"VariableDeclaration","scope":13969,"src":"5320:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13963,"name":"address","nodeType":"ElementaryTypeName","src":"5320:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5319:15:55"},"returnParameters":{"id":13968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13967,"mutability":"mutable","name":"balance","nameLocation":"5366:7:55","nodeType":"VariableDeclaration","scope":13969,"src":"5358:15:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13966,"name":"uint256","nodeType":"ElementaryTypeName","src":"5358:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5357:17:55"},"scope":13998,"src":"5301:74:55","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bd85b039","id":13976,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"5389:11:55","nodeType":"FunctionDefinition","parameters":{"id":13972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13971,"mutability":"mutable","name":"id","nameLocation":"5409:2:55","nodeType":"VariableDeclaration","scope":13976,"src":"5401:10:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13970,"name":"uint256","nodeType":"ElementaryTypeName","src":"5401:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5400:12:55"},"returnParameters":{"id":13975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13974,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13976,"src":"5436:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13973,"name":"uint256","nodeType":"ElementaryTypeName","src":"5436:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5435:9:55"},"scope":13998,"src":"5380:65:55","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4f558e79","id":13983,"implemented":false,"kind":"function","modifiers":[],"name":"exists","nameLocation":"5459:6:55","nodeType":"FunctionDefinition","parameters":{"id":13979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13978,"mutability":"mutable","name":"id","nameLocation":"5474:2:55","nodeType":"VariableDeclaration","scope":13983,"src":"5466:10:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13977,"name":"uint256","nodeType":"ElementaryTypeName","src":"5466:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5465:12:55"},"returnParameters":{"id":13982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13981,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13983,"src":"5501:4:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13980,"name":"bool","nodeType":"ElementaryTypeName","src":"5501:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5500:6:55"},"scope":13998,"src":"5450:57:55","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"798f4794","id":13997,"implemented":false,"kind":"function","modifiers":[],"name":"getSupplies","nameLocation":"5521:11:55","nodeType":"FunctionDefinition","parameters":{"id":13988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13985,"mutability":"mutable","name":"startId","nameLocation":"5541:7:55","nodeType":"VariableDeclaration","scope":13997,"src":"5533:15:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13984,"name":"uint256","nodeType":"ElementaryTypeName","src":"5533:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13987,"mutability":"mutable","name":"endId","nameLocation":"5558:5:55","nodeType":"VariableDeclaration","scope":13997,"src":"5550:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13986,"name":"uint256","nodeType":"ElementaryTypeName","src":"5550:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5532:32:55"},"returnParameters":{"id":13996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13991,"mutability":"mutable","name":"supplies","nameLocation":"5605:8:55","nodeType":"VariableDeclaration","scope":13997,"src":"5588:25:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13989,"name":"uint256","nodeType":"ElementaryTypeName","src":"5588:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13990,"nodeType":"ArrayTypeName","src":"5588:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":13993,"mutability":"mutable","name":"blockNumber","nameLocation":"5623:11:55","nodeType":"VariableDeclaration","scope":13997,"src":"5615:19:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13992,"name":"uint256","nodeType":"ElementaryTypeName","src":"5615:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13995,"mutability":"mutable","name":"blockTimestamp","nameLocation":"5644:14:55","nodeType":"VariableDeclaration","scope":13997,"src":"5636:22:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13994,"name":"uint256","nodeType":"ElementaryTypeName","src":"5636:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5587:72:55"},"scope":13998,"src":"5512:148:55","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13999,"src":"5115:547:55","usedErrors":[14499,14502,14505,14508,14511,14514,14517,14520,14523,14526,14529,14532,14535,14538,14541,14544,14547,14550,14553,14556,14559,14562,14565,14568,14571,14574,14577,14580,14583,14586,14589,14592,14595,14598,14601,14604,14607,14612]}],"src":"4913:751:55"},"id":55},"contracts/interfaces/IN2MERC721.sol":{"ast":{"absolutePath":"contracts/interfaces/IN2MERC721.sol","exportedSymbols":{"IERC165":[10211],"IERC165Upgradeable":[7305],"IERC2981Upgradeable":[1297],"IERC721":[10172],"IERC721Metadata":[10199],"IN2MERC721":[14047],"IN2M_ERCBase":[14262],"IN2M_ERCCommon":[14277],"IN2M_ERCLibrary":[14486],"IN2M_ERCStorage":[14652],"IVotes":[9789],"Readme":[8]},"id":14048,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":14000,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:56"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":14001,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14048,"sourceUnit":10173,"src":"4939:58:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","id":14002,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14048,"sourceUnit":10200,"src":"4998:77:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/governance/utils/IVotes.sol","file":"@openzeppelin/contracts/governance/utils/IVotes.sol","id":14003,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14048,"sourceUnit":9790,"src":"5076:61:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IN2M_ERCCommon.sol","file":"./IN2M_ERCCommon.sol","id":14004,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14048,"sourceUnit":14278,"src":"5138:30:56","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14005,"name":"IERC721Metadata","nameLocations":["5194:15:56"],"nodeType":"IdentifierPath","referencedDeclaration":10199,"src":"5194:15:56"},"id":14006,"nodeType":"InheritanceSpecifier","src":"5194:15:56"},{"baseName":{"id":14007,"name":"IN2M_ERCCommon","nameLocations":["5211:14:56"],"nodeType":"IdentifierPath","referencedDeclaration":14277,"src":"5211:14:56"},"id":14008,"nodeType":"InheritanceSpecifier","src":"5211:14:56"},{"baseName":{"id":14009,"name":"IVotes","nameLocations":["5227:6:56"],"nodeType":"IdentifierPath","referencedDeclaration":9789,"src":"5227:6:56"},"id":14010,"nodeType":"InheritanceSpecifier","src":"5227:6:56"}],"canonicalName":"IN2MERC721","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":14047,"linearizedBaseContracts":[14047,9789,14277,14486,14262,14652,8,1297,7305,10199,10172,10211],"name":"IN2MERC721","nameLocation":"5180:10:56","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[10184,14090],"functionSelector":"06fdde03","id":14018,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"5249:4:56","nodeType":"FunctionDefinition","overrides":{"id":14014,"nodeType":"OverrideSpecifier","overrides":[{"id":14012,"name":"IERC721Metadata","nameLocations":["5279:15:56"],"nodeType":"IdentifierPath","referencedDeclaration":10199,"src":"5279:15:56"},{"id":14013,"name":"IN2M_ERCBase","nameLocations":["5296:12:56"],"nodeType":"IdentifierPath","referencedDeclaration":14262,"src":"5296:12:56"}],"src":"5270:39:56"},"parameters":{"id":14011,"nodeType":"ParameterList","parameters":[],"src":"5253:2:56"},"returnParameters":{"id":14017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14016,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14018,"src":"5319:13:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14015,"name":"string","nodeType":"ElementaryTypeName","src":"5319:6:56","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5318:15:56"},"scope":14047,"src":"5240:94:56","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10198,14104],"functionSelector":"c87b56dd","id":14028,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"5348:8:56","nodeType":"FunctionDefinition","overrides":{"id":14024,"nodeType":"OverrideSpecifier","overrides":[{"id":14022,"name":"IERC721Metadata","nameLocations":["5397:15:56"],"nodeType":"IdentifierPath","referencedDeclaration":10199,"src":"5397:15:56"},{"id":14023,"name":"IN2M_ERCBase","nameLocations":["5414:12:56"],"nodeType":"IdentifierPath","referencedDeclaration":14262,"src":"5414:12:56"}],"src":"5388:39:56"},"parameters":{"id":14021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14020,"mutability":"mutable","name":"tokenId","nameLocation":"5365:7:56","nodeType":"VariableDeclaration","scope":14028,"src":"5357:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14019,"name":"uint256","nodeType":"ElementaryTypeName","src":"5357:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5356:17:56"},"returnParameters":{"id":14027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14026,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14028,"src":"5437:13:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14025,"name":"string","nodeType":"ElementaryTypeName","src":"5437:6:56","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5436:15:56"},"scope":14047,"src":"5339:113:56","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10190,14096],"functionSelector":"95d89b41","id":14036,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"5466:6:56","nodeType":"FunctionDefinition","overrides":{"id":14032,"nodeType":"OverrideSpecifier","overrides":[{"id":14030,"name":"IERC721Metadata","nameLocations":["5498:15:56"],"nodeType":"IdentifierPath","referencedDeclaration":10199,"src":"5498:15:56"},{"id":14031,"name":"IN2M_ERCBase","nameLocations":["5515:12:56"],"nodeType":"IdentifierPath","referencedDeclaration":14262,"src":"5515:12:56"}],"src":"5489:39:56"},"parameters":{"id":14029,"nodeType":"ParameterList","parameters":[],"src":"5472:2:56"},"returnParameters":{"id":14035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14036,"src":"5538:13:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14033,"name":"string","nodeType":"ElementaryTypeName","src":"5538:6:56","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5537:15:56"},"scope":14047,"src":"5457:96:56","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[7304,10210],"functionSelector":"01ffc9a7","id":14046,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"5567:17:56","nodeType":"FunctionDefinition","overrides":{"id":14042,"nodeType":"OverrideSpecifier","overrides":[{"id":14040,"name":"IERC165","nameLocations":["5628:7:56"],"nodeType":"IdentifierPath","referencedDeclaration":10211,"src":"5628:7:56"},{"id":14041,"name":"IERC165Upgradeable","nameLocations":["5637:18:56"],"nodeType":"IdentifierPath","referencedDeclaration":7305,"src":"5637:18:56"}],"src":"5619:37:56"},"parameters":{"id":14039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14038,"mutability":"mutable","name":"interfaceId","nameLocation":"5592:11:56","nodeType":"VariableDeclaration","scope":14046,"src":"5585:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":14037,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5585:6:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5584:20:56"},"returnParameters":{"id":14045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14044,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14046,"src":"5666:4:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14043,"name":"bool","nodeType":"ElementaryTypeName","src":"5666:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5665:6:56"},"scope":14047,"src":"5558:114:56","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14048,"src":"5170:504:56","usedErrors":[14499,14502,14505,14508,14511,14514,14517,14520,14523,14526,14529,14532,14535,14538,14541,14544,14547,14550,14553,14556,14559,14562,14565,14568,14571,14574,14577,14580,14583,14586,14589,14592,14595,14598,14601,14604,14607,14612]}],"src":"4913:763:56"},"id":56},"contracts/interfaces/IN2M_ERCBase.sol":{"ast":{"absolutePath":"contracts/interfaces/IN2M_ERCBase.sol","exportedSymbols":{"IERC165Upgradeable":[7305],"IERC2981Upgradeable":[1297],"IN2M_ERCBase":[14262],"IN2M_ERCStorage":[14652],"Readme":[8]},"id":14263,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":14049,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:57"},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol","id":14050,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14263,"sourceUnit":1298,"src":"4939:80:57","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IN2M_ERCStorage.sol","file":"./IN2M_ERCStorage.sol","id":14051,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14263,"sourceUnit":14653,"src":"5020:31:57","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14052,"name":"IERC2981Upgradeable","nameLocations":["5079:19:57"],"nodeType":"IdentifierPath","referencedDeclaration":1297,"src":"5079:19:57"},"id":14053,"nodeType":"InheritanceSpecifier","src":"5079:19:57"},{"baseName":{"id":14054,"name":"IN2M_ERCStorage","nameLocations":["5100:15:57"],"nodeType":"IdentifierPath","referencedDeclaration":14652,"src":"5100:15:57"},"id":14055,"nodeType":"InheritanceSpecifier","src":"5100:15:57"}],"canonicalName":"IN2M_ERCBase","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":14262,"linearizedBaseContracts":[14262,14652,8,1297,7305],"name":"IN2M_ERCBase","nameLocation":"5063:12:57","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":14056,"nodeType":"StructuredDocumentation","src":"5122:75:57","text":"@notice To be called to create the collection. Can only be called once."},"functionSelector":"5066e5c2","id":14084,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"5211:10:57","nodeType":"FunctionDefinition","parameters":{"id":14082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14058,"mutability":"mutable","name":"tokenName","nameLocation":"5250:9:57","nodeType":"VariableDeclaration","scope":14084,"src":"5236:23:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14057,"name":"string","nodeType":"ElementaryTypeName","src":"5236:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14060,"mutability":"mutable","name":"tokenSymbol","nameLocation":"5283:11:57","nodeType":"VariableDeclaration","scope":14084,"src":"5269:25:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14059,"name":"string","nodeType":"ElementaryTypeName","src":"5269:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14062,"mutability":"mutable","name":"iMintPrice","nameLocation":"5312:10:57","nodeType":"VariableDeclaration","scope":14084,"src":"5304:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14061,"name":"uint256","nodeType":"ElementaryTypeName","src":"5304:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14064,"mutability":"mutable","name":"baseURICIDHash","nameLocation":"5340:14:57","nodeType":"VariableDeclaration","scope":14084,"src":"5332:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14063,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5332:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14066,"mutability":"mutable","name":"placeholderImageCIDHash","nameLocation":"5372:23:57","nodeType":"VariableDeclaration","scope":14084,"src":"5364:31:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14065,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5364:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14070,"mutability":"mutable","name":"revenueAddresses","nameLocation":"5431:16:57","nodeType":"VariableDeclaration","scope":14084,"src":"5405:42:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$14622_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress[]"},"typeName":{"baseType":{"id":14068,"nodeType":"UserDefinedTypeName","pathNode":{"id":14067,"name":"RevenueAddress","nameLocations":["5405:14:57"],"nodeType":"IdentifierPath","referencedDeclaration":14622,"src":"5405:14:57"},"referencedDeclaration":14622,"src":"5405:14:57","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueAddress_$14622_storage_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress"}},"id":14069,"nodeType":"ArrayTypeName","src":"5405:16:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RevenueAddress_$14622_storage_$dyn_storage_ptr","typeString":"struct IN2M_ERCStorage.RevenueAddress[]"}},"visibility":"internal"},{"constant":false,"id":14072,"mutability":"mutable","name":"iErc20PaymentAddress","nameLocation":"5465:20:57","nodeType":"VariableDeclaration","scope":14084,"src":"5457:28:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14071,"name":"address","nodeType":"ElementaryTypeName","src":"5457:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14074,"mutability":"mutable","name":"iTotalSupply","nameLocation":"5502:12:57","nodeType":"VariableDeclaration","scope":14084,"src":"5495:19:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":14073,"name":"uint32","nodeType":"ElementaryTypeName","src":"5495:6:57","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":14076,"mutability":"mutable","name":"iRoyaltyFee","nameLocation":"5531:11:57","nodeType":"VariableDeclaration","scope":14084,"src":"5524:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14075,"name":"uint16","nodeType":"ElementaryTypeName","src":"5524:6:57","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14078,"mutability":"mutable","name":"soulboundCollection","nameLocation":"5557:19:57","nodeType":"VariableDeclaration","scope":14084,"src":"5552:24:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14077,"name":"bool","nodeType":"ElementaryTypeName","src":"5552:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":14081,"mutability":"mutable","name":"iMintingType","nameLocation":"5598:12:57","nodeType":"VariableDeclaration","scope":14084,"src":"5586:24:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$14640","typeString":"enum IN2M_ERCStorage.MintingType"},"typeName":{"id":14080,"nodeType":"UserDefinedTypeName","pathNode":{"id":14079,"name":"MintingType","nameLocations":["5586:11:57"],"nodeType":"IdentifierPath","referencedDeclaration":14640,"src":"5586:11:57"},"referencedDeclaration":14640,"src":"5586:11:57","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$14640","typeString":"enum IN2M_ERCStorage.MintingType"}},"visibility":"internal"}],"src":"5226:390:57"},"returnParameters":{"id":14083,"nodeType":"ParameterList","parameters":[],"src":"5633:0:57"},"scope":14262,"src":"5202:432:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14085,"nodeType":"StructuredDocumentation","src":"5640:72:57","text":"@notice A descriptive name for a collection of NFTs in this contract"},"functionSelector":"06fdde03","id":14090,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"5726:4:57","nodeType":"FunctionDefinition","parameters":{"id":14086,"nodeType":"ParameterList","parameters":[],"src":"5730:2:57"},"returnParameters":{"id":14089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14088,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14090,"src":"5756:13:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14087,"name":"string","nodeType":"ElementaryTypeName","src":"5756:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5755:15:57"},"scope":14262,"src":"5717:54:57","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14091,"nodeType":"StructuredDocumentation","src":"5777:95:57","text":"@notice An abbreviated name for NFTs in this contract\n @return the collection symbol"},"functionSelector":"95d89b41","id":14096,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"5886:6:57","nodeType":"FunctionDefinition","parameters":{"id":14092,"nodeType":"ParameterList","parameters":[],"src":"5892:2:57"},"returnParameters":{"id":14095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14094,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14096,"src":"5918:13:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14093,"name":"string","nodeType":"ElementaryTypeName","src":"5918:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5917:15:57"},"scope":14262,"src":"5877:56:57","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14097,"nodeType":"StructuredDocumentation","src":"5939:262:57","text":"@notice A distinct Uniform Resource Identifier (URI) for a given asset.\n @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\n 3986. The URI may point to a JSON file that conforms to the \"ERC721\n Metadata JSON Schema\"."},"functionSelector":"c87b56dd","id":14104,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"6215:8:57","nodeType":"FunctionDefinition","parameters":{"id":14100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14099,"mutability":"mutable","name":"tokenId","nameLocation":"6232:7:57","nodeType":"VariableDeclaration","scope":14104,"src":"6224:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14098,"name":"uint256","nodeType":"ElementaryTypeName","src":"6224:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6223:17:57"},"returnParameters":{"id":14103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14104,"src":"6264:13:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14101,"name":"string","nodeType":"ElementaryTypeName","src":"6264:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6263:15:57"},"scope":14262,"src":"6206:73:57","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14105,"nodeType":"StructuredDocumentation","src":"6285:184:57","text":"@notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"functionSelector":"1249c58b","id":14108,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"6483:4:57","nodeType":"FunctionDefinition","parameters":{"id":14106,"nodeType":"ParameterList","parameters":[],"src":"6487:2:57"},"returnParameters":{"id":14107,"nodeType":"ParameterList","parameters":[],"src":"6506:0:57"},"scope":14262,"src":"6474:33:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14109,"nodeType":"StructuredDocumentation","src":"6513:239:57","text":"@notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param amount The number of NFTs to mint"},"functionSelector":"a0712d68","id":14114,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"6766:4:57","nodeType":"FunctionDefinition","parameters":{"id":14112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14111,"mutability":"mutable","name":"amount","nameLocation":"6779:6:57","nodeType":"VariableDeclaration","scope":14114,"src":"6771:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14110,"name":"uint256","nodeType":"ElementaryTypeName","src":"6771:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6770:16:57"},"returnParameters":{"id":14113,"nodeType":"ParameterList","parameters":[],"src":"6803:0:57"},"scope":14262,"src":"6757:47:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14115,"nodeType":"StructuredDocumentation","src":"6810:311:57","text":"@notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param amount The number of NFTs to mint\n @param affiliate The affiliate address"},"functionSelector":"94bf804d","id":14122,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"7135:4:57","nodeType":"FunctionDefinition","parameters":{"id":14120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14117,"mutability":"mutable","name":"amount","nameLocation":"7148:6:57","nodeType":"VariableDeclaration","scope":14122,"src":"7140:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14116,"name":"uint256","nodeType":"ElementaryTypeName","src":"7140:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14119,"mutability":"mutable","name":"affiliate","nameLocation":"7164:9:57","nodeType":"VariableDeclaration","scope":14122,"src":"7156:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14118,"name":"address","nodeType":"ElementaryTypeName","src":"7156:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7139:35:57"},"returnParameters":{"id":14121,"nodeType":"ParameterList","parameters":[],"src":"7191:0:57"},"scope":14262,"src":"7126:66:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14123,"nodeType":"StructuredDocumentation","src":"7198:283:57","text":"@notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param to The address of the NFTs receiver\n @param amount The number of NFTs to mint "},"functionSelector":"449a52f8","id":14130,"implemented":false,"kind":"function","modifiers":[],"name":"mintTo","nameLocation":"7495:6:57","nodeType":"FunctionDefinition","parameters":{"id":14128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14125,"mutability":"mutable","name":"to","nameLocation":"7510:2:57","nodeType":"VariableDeclaration","scope":14130,"src":"7502:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14124,"name":"address","nodeType":"ElementaryTypeName","src":"7502:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14127,"mutability":"mutable","name":"amount","nameLocation":"7522:6:57","nodeType":"VariableDeclaration","scope":14130,"src":"7514:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14126,"name":"uint256","nodeType":"ElementaryTypeName","src":"7514:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7501:28:57"},"returnParameters":{"id":14129,"nodeType":"ParameterList","parameters":[],"src":"7546:0:57"},"scope":14262,"src":"7486:61:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14131,"nodeType":"StructuredDocumentation","src":"7553:355:57","text":"@notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param to The address of the NFTs receiver\n @param amount The number of NFTs to mint \n @param affiliate The affiliate address"},"functionSelector":"438b1b4b","id":14140,"implemented":false,"kind":"function","modifiers":[],"name":"mintTo","nameLocation":"7922:6:57","nodeType":"FunctionDefinition","parameters":{"id":14138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14133,"mutability":"mutable","name":"to","nameLocation":"7937:2:57","nodeType":"VariableDeclaration","scope":14140,"src":"7929:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14132,"name":"address","nodeType":"ElementaryTypeName","src":"7929:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14135,"mutability":"mutable","name":"amount","nameLocation":"7949:6:57","nodeType":"VariableDeclaration","scope":14140,"src":"7941:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14134,"name":"uint256","nodeType":"ElementaryTypeName","src":"7941:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14137,"mutability":"mutable","name":"affiliate","nameLocation":"7965:9:57","nodeType":"VariableDeclaration","scope":14140,"src":"7957:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14136,"name":"address","nodeType":"ElementaryTypeName","src":"7957:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7928:47:57"},"returnParameters":{"id":14139,"nodeType":"ParameterList","parameters":[],"src":"7992:0:57"},"scope":14262,"src":"7913:80:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14141,"nodeType":"StructuredDocumentation","src":"7999:413:57","text":"@notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\n @param to The address of the NFTs receiver\n @param amount The number of NFTs to mint "},"functionSelector":"1d7df191","id":14148,"implemented":false,"kind":"function","modifiers":[],"name":"mintRandomTo","nameLocation":"8426:12:57","nodeType":"FunctionDefinition","parameters":{"id":14146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14143,"mutability":"mutable","name":"to","nameLocation":"8447:2:57","nodeType":"VariableDeclaration","scope":14148,"src":"8439:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14142,"name":"address","nodeType":"ElementaryTypeName","src":"8439:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14145,"mutability":"mutable","name":"amount","nameLocation":"8459:6:57","nodeType":"VariableDeclaration","scope":14148,"src":"8451:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14144,"name":"uint256","nodeType":"ElementaryTypeName","src":"8451:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8438:28:57"},"returnParameters":{"id":14147,"nodeType":"ParameterList","parameters":[],"src":"8483:0:57"},"scope":14262,"src":"8417:67:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14149,"nodeType":"StructuredDocumentation","src":"8494:485:57","text":"@notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\n @param to The address of the NFTs receiver\n @param amount The number of NFTs to mint \n @param affiliate The affiliate address"},"functionSelector":"fefa5d72","id":14158,"implemented":false,"kind":"function","modifiers":[],"name":"mintRandomTo","nameLocation":"8993:12:57","nodeType":"FunctionDefinition","parameters":{"id":14156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14151,"mutability":"mutable","name":"to","nameLocation":"9014:2:57","nodeType":"VariableDeclaration","scope":14158,"src":"9006:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14150,"name":"address","nodeType":"ElementaryTypeName","src":"9006:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14153,"mutability":"mutable","name":"amount","nameLocation":"9026:6:57","nodeType":"VariableDeclaration","scope":14158,"src":"9018:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14152,"name":"uint256","nodeType":"ElementaryTypeName","src":"9018:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14155,"mutability":"mutable","name":"affiliate","nameLocation":"9042:9:57","nodeType":"VariableDeclaration","scope":14158,"src":"9034:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14154,"name":"address","nodeType":"ElementaryTypeName","src":"9034:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9005:47:57"},"returnParameters":{"id":14157,"nodeType":"ParameterList","parameters":[],"src":"9069:0:57"},"scope":14262,"src":"8984:86:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14159,"nodeType":"StructuredDocumentation","src":"9076:115:57","text":"@notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs."},"functionSelector":"1ff4cc7d","id":14162,"implemented":false,"kind":"function","modifiers":[],"name":"redeemRandom","nameLocation":"9205:12:57","nodeType":"FunctionDefinition","parameters":{"id":14160,"nodeType":"ParameterList","parameters":[],"src":"9217:2:57"},"returnParameters":{"id":14161,"nodeType":"ParameterList","parameters":[],"src":"9236:0:57"},"scope":14262,"src":"9196:41:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14163,"nodeType":"StructuredDocumentation","src":"9243:337:57","text":"@notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param to The address of the NFTs receiver\n @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert."},"functionSelector":"4402d254","id":14171,"implemented":false,"kind":"function","modifiers":[],"name":"mintSpecifyTo","nameLocation":"9594:13:57","nodeType":"FunctionDefinition","parameters":{"id":14169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14165,"mutability":"mutable","name":"to","nameLocation":"9616:2:57","nodeType":"VariableDeclaration","scope":14171,"src":"9608:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14164,"name":"address","nodeType":"ElementaryTypeName","src":"9608:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14168,"mutability":"mutable","name":"tokenIds","nameLocation":"9637:8:57","nodeType":"VariableDeclaration","scope":14171,"src":"9620:25:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14166,"name":"uint256","nodeType":"ElementaryTypeName","src":"9620:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14167,"nodeType":"ArrayTypeName","src":"9620:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9607:39:57"},"returnParameters":{"id":14170,"nodeType":"ParameterList","parameters":[],"src":"9663:0:57"},"scope":14262,"src":"9585:79:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14172,"nodeType":"StructuredDocumentation","src":"9671:409:57","text":"@notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\n @param to The address of the NFTs receiver\n @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n @param affiliate The affiliate address"},"functionSelector":"4a50aa85","id":14182,"implemented":false,"kind":"function","modifiers":[],"name":"mintSpecifyTo","nameLocation":"10094:13:57","nodeType":"FunctionDefinition","parameters":{"id":14180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14174,"mutability":"mutable","name":"to","nameLocation":"10116:2:57","nodeType":"VariableDeclaration","scope":14182,"src":"10108:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14173,"name":"address","nodeType":"ElementaryTypeName","src":"10108:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14177,"mutability":"mutable","name":"tokenIds","nameLocation":"10137:8:57","nodeType":"VariableDeclaration","scope":14182,"src":"10120:25:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14175,"name":"uint256","nodeType":"ElementaryTypeName","src":"10120:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14176,"nodeType":"ArrayTypeName","src":"10120:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":14179,"mutability":"mutable","name":"affiliate","nameLocation":"10155:9:57","nodeType":"VariableDeclaration","scope":14182,"src":"10147:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14178,"name":"address","nodeType":"ElementaryTypeName","src":"10147:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10107:58:57"},"returnParameters":{"id":14181,"nodeType":"ParameterList","parameters":[],"src":"10182:0:57"},"scope":14262,"src":"10085:98:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14183,"nodeType":"StructuredDocumentation","src":"10190:298:57","text":"@notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\n @param to The address of the NFTs receiver\n @param customURICIDHash The CID of the given token.\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred."},"functionSelector":"6ad54240","id":14192,"implemented":false,"kind":"function","modifiers":[],"name":"mintCustomURITo","nameLocation":"10502:15:57","nodeType":"FunctionDefinition","parameters":{"id":14190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14185,"mutability":"mutable","name":"to","nameLocation":"10526:2:57","nodeType":"VariableDeclaration","scope":14192,"src":"10518:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14184,"name":"address","nodeType":"ElementaryTypeName","src":"10518:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14187,"mutability":"mutable","name":"customURICIDHash","nameLocation":"10538:16:57","nodeType":"VariableDeclaration","scope":14192,"src":"10530:24:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14186,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10530:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14189,"mutability":"mutable","name":"soulbound","nameLocation":"10561:9:57","nodeType":"VariableDeclaration","scope":14192,"src":"10556:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14188,"name":"bool","nodeType":"ElementaryTypeName","src":"10556:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10517:54:57"},"returnParameters":{"id":14191,"nodeType":"ParameterList","parameters":[],"src":"10588:0:57"},"scope":14262,"src":"10493:96:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14193,"nodeType":"StructuredDocumentation","src":"10595:300:57","text":"@notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\n @param to The addresses of the NFTs receivers\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred."},"functionSelector":"68fdda33","id":14201,"implemented":false,"kind":"function","modifiers":[],"name":"airdropSequential","nameLocation":"10909:17:57","nodeType":"FunctionDefinition","parameters":{"id":14199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14196,"mutability":"mutable","name":"to","nameLocation":"10944:2:57","nodeType":"VariableDeclaration","scope":14201,"src":"10927:19:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14194,"name":"address","nodeType":"ElementaryTypeName","src":"10927:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14195,"nodeType":"ArrayTypeName","src":"10927:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14198,"mutability":"mutable","name":"soulbound","nameLocation":"10953:9:57","nodeType":"VariableDeclaration","scope":14201,"src":"10948:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14197,"name":"bool","nodeType":"ElementaryTypeName","src":"10948:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10926:37:57"},"returnParameters":{"id":14200,"nodeType":"ParameterList","parameters":[],"src":"10980:0:57"},"scope":14262,"src":"10900:81:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14202,"nodeType":"StructuredDocumentation","src":"10987:317:57","text":"@notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\n @param to The addresses of the NFTs receivers\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred."},"functionSelector":"be172edf","id":14210,"implemented":false,"kind":"function","modifiers":[],"name":"airdropRandom","nameLocation":"11318:13:57","nodeType":"FunctionDefinition","parameters":{"id":14208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14205,"mutability":"mutable","name":"to","nameLocation":"11349:2:57","nodeType":"VariableDeclaration","scope":14210,"src":"11332:19:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14203,"name":"address","nodeType":"ElementaryTypeName","src":"11332:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14204,"nodeType":"ArrayTypeName","src":"11332:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14207,"mutability":"mutable","name":"soulbound","nameLocation":"11358:9:57","nodeType":"VariableDeclaration","scope":14210,"src":"11353:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14206,"name":"bool","nodeType":"ElementaryTypeName","src":"11353:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11331:37:57"},"returnParameters":{"id":14209,"nodeType":"ParameterList","parameters":[],"src":"11385:0:57"},"scope":14262,"src":"11309:77:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14211,"nodeType":"StructuredDocumentation","src":"11392:431:57","text":"@notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\n @param to The addresses of the NFTs receivers\n @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred."},"functionSelector":"71e6775f","id":14222,"implemented":false,"kind":"function","modifiers":[],"name":"airdropSpecify","nameLocation":"11837:14:57","nodeType":"FunctionDefinition","parameters":{"id":14220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14214,"mutability":"mutable","name":"to","nameLocation":"11869:2:57","nodeType":"VariableDeclaration","scope":14222,"src":"11852:19:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14212,"name":"address","nodeType":"ElementaryTypeName","src":"11852:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14213,"nodeType":"ArrayTypeName","src":"11852:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14217,"mutability":"mutable","name":"tokenIds","nameLocation":"11890:8:57","nodeType":"VariableDeclaration","scope":14222,"src":"11873:25:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14215,"name":"uint256","nodeType":"ElementaryTypeName","src":"11873:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14216,"nodeType":"ArrayTypeName","src":"11873:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":14219,"mutability":"mutable","name":"soulbound","nameLocation":"11905:9:57","nodeType":"VariableDeclaration","scope":14222,"src":"11900:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14218,"name":"bool","nodeType":"ElementaryTypeName","src":"11900:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11851:64:57"},"returnParameters":{"id":14221,"nodeType":"ParameterList","parameters":[],"src":"11932:0:57"},"scope":14262,"src":"11828:105:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14223,"nodeType":"StructuredDocumentation","src":"11939:803:57","text":"@notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\n @param to The addresses of the NFTs receivers\n @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\n @param freeMinting True is minting is free\n @param customFee Zero is fee is different from `mintingPrice`.\n @param maxAmount Max Amount to be minted with the given `signature`.\n @param amount Amount to mint.\n @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\n @param signature Valid `signature` for the presale/whitelist."},"functionSelector":"9d13a5ba","id":14243,"implemented":false,"kind":"function","modifiers":[],"name":"mintPresale","nameLocation":"12756:11:57","nodeType":"FunctionDefinition","parameters":{"id":14241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14225,"mutability":"mutable","name":"to","nameLocation":"12786:2:57","nodeType":"VariableDeclaration","scope":14243,"src":"12778:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14224,"name":"address","nodeType":"ElementaryTypeName","src":"12778:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14228,"mutability":"mutable","name":"tokenIds","nameLocation":"12816:8:57","nodeType":"VariableDeclaration","scope":14243,"src":"12799:25:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14226,"name":"uint256","nodeType":"ElementaryTypeName","src":"12799:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14227,"nodeType":"ArrayTypeName","src":"12799:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":14230,"mutability":"mutable","name":"freeMinting","nameLocation":"12839:11:57","nodeType":"VariableDeclaration","scope":14243,"src":"12834:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14229,"name":"bool","nodeType":"ElementaryTypeName","src":"12834:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":14232,"mutability":"mutable","name":"customFee","nameLocation":"12869:9:57","nodeType":"VariableDeclaration","scope":14243,"src":"12861:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14231,"name":"uint256","nodeType":"ElementaryTypeName","src":"12861:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14234,"mutability":"mutable","name":"maxAmount","nameLocation":"12897:9:57","nodeType":"VariableDeclaration","scope":14243,"src":"12889:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14233,"name":"uint256","nodeType":"ElementaryTypeName","src":"12889:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14236,"mutability":"mutable","name":"amount","nameLocation":"12924:6:57","nodeType":"VariableDeclaration","scope":14243,"src":"12916:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14235,"name":"uint256","nodeType":"ElementaryTypeName","src":"12916:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14238,"mutability":"mutable","name":"soulbound","nameLocation":"12946:9:57","nodeType":"VariableDeclaration","scope":14243,"src":"12941:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14237,"name":"bool","nodeType":"ElementaryTypeName","src":"12941:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":14240,"mutability":"mutable","name":"signature","nameLocation":"12980:9:57","nodeType":"VariableDeclaration","scope":14243,"src":"12965:24:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":14239,"name":"bytes","nodeType":"ElementaryTypeName","src":"12965:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12768:222:57"},"returnParameters":{"id":14242,"nodeType":"ParameterList","parameters":[],"src":"13007:0:57"},"scope":14262,"src":"12747:261:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":14244,"nodeType":"StructuredDocumentation","src":"13014:114:57","text":"@notice Returns the minting price of one NFT.\n @return Mint price for one NFT in native coin or ERC-20."},"functionSelector":"6817c76c","id":14249,"implemented":false,"kind":"function","modifiers":[],"name":"mintPrice","nameLocation":"13142:9:57","nodeType":"FunctionDefinition","parameters":{"id":14245,"nodeType":"ParameterList","parameters":[],"src":"13151:2:57"},"returnParameters":{"id":14248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14249,"src":"13177:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14246,"name":"uint256","nodeType":"ElementaryTypeName","src":"13177:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13176:9:57"},"scope":14262,"src":"13133:53:57","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14250,"nodeType":"StructuredDocumentation","src":"13192:83:57","text":"@notice Returns the current total supply.\n @return Current total supply."},"functionSelector":"18160ddd","id":14255,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"13289:11:57","nodeType":"FunctionDefinition","parameters":{"id":14251,"nodeType":"ParameterList","parameters":[],"src":"13300:2:57"},"returnParameters":{"id":14254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14253,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14255,"src":"13326:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14252,"name":"uint256","nodeType":"ElementaryTypeName","src":"13326:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13325:9:57"},"scope":14262,"src":"13280:55:57","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":14256,"nodeType":"StructuredDocumentation","src":"13341:95:57","text":"@notice Max amount of NFTs to be hold per address.\n @return Max per address allowed."},"functionSelector":"639814e0","id":14261,"implemented":false,"kind":"function","modifiers":[],"name":"maxPerAddress","nameLocation":"13450:13:57","nodeType":"FunctionDefinition","parameters":{"id":14257,"nodeType":"ParameterList","parameters":[],"src":"13463:2:57"},"returnParameters":{"id":14260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14261,"src":"13489:6:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14258,"name":"uint16","nodeType":"ElementaryTypeName","src":"13489:6:57","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"13488:8:57"},"scope":14262,"src":"13441:56:57","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14263,"src":"5053:8447:57","usedErrors":[14499,14502,14505,14508,14511,14514,14517,14520,14523,14526,14529,14532,14535,14538,14541,14544,14547,14550,14553,14556,14559,14562,14565,14568,14571,14574,14577,14580,14583,14586,14589,14592,14595,14598,14601,14604,14607,14612]}],"src":"4913:8589:57"},"id":57},"contracts/interfaces/IN2M_ERCCommon.sol":{"ast":{"absolutePath":"contracts/interfaces/IN2M_ERCCommon.sol","exportedSymbols":{"IERC165Upgradeable":[7305],"IERC2981Upgradeable":[1297],"IN2M_ERCBase":[14262],"IN2M_ERCCommon":[14277],"IN2M_ERCLibrary":[14486],"IN2M_ERCStorage":[14652],"Readme":[8]},"id":14278,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":14264,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:58"},{"absolutePath":"contracts/interfaces/IN2M_ERCLibrary.sol","file":"./IN2M_ERCLibrary.sol","id":14265,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14278,"sourceUnit":14487,"src":"4939:31:58","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IN2M_ERCBase.sol","file":"./IN2M_ERCBase.sol","id":14266,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14278,"sourceUnit":14263,"src":"4971:28:58","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14267,"name":"IN2M_ERCBase","nameLocations":["5029:12:58"],"nodeType":"IdentifierPath","referencedDeclaration":14262,"src":"5029:12:58"},"id":14268,"nodeType":"InheritanceSpecifier","src":"5029:12:58"},{"baseName":{"id":14269,"name":"IN2M_ERCLibrary","nameLocations":["5043:15:58"],"nodeType":"IdentifierPath","referencedDeclaration":14486,"src":"5043:15:58"},"id":14270,"nodeType":"InheritanceSpecifier","src":"5043:15:58"}],"canonicalName":"IN2M_ERCCommon","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":14277,"linearizedBaseContracts":[14277,14486,14262,14652,8,1297,7305],"name":"IN2M_ERCCommon","nameLocation":"5011:14:58","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":14271,"nodeType":"StructuredDocumentation","src":"5065:106:58","text":"@notice Returns the address of the current collection owner.\n @return The address of the owner."},"functionSelector":"8da5cb5b","id":14276,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"5185:5:58","nodeType":"FunctionDefinition","parameters":{"id":14272,"nodeType":"ParameterList","parameters":[],"src":"5190:2:58"},"returnParameters":{"id":14275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14274,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14276,"src":"5216:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14273,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5215:9:58"},"scope":14277,"src":"5176:49:58","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14278,"src":"5001:226:58","usedErrors":[14499,14502,14505,14508,14511,14514,14517,14520,14523,14526,14529,14532,14535,14538,14541,14544,14547,14550,14553,14556,14559,14562,14565,14568,14571,14574,14577,14580,14583,14586,14589,14592,14595,14598,14601,14604,14607,14612]}],"src":"4913:316:58"},"id":58},"contracts/interfaces/IN2M_ERCLibrary.sol":{"ast":{"absolutePath":"contracts/interfaces/IN2M_ERCLibrary.sol","exportedSymbols":{"IN2M_ERCLibrary":[14486],"IN2M_ERCStorage":[14652],"Readme":[8]},"id":14487,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":14279,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:59"},{"absolutePath":"contracts/interfaces/IN2M_ERCStorage.sol","file":"./IN2M_ERCStorage.sol","id":14280,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14487,"sourceUnit":14653,"src":"4939:31:59","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14281,"name":"IN2M_ERCStorage","nameLocations":["5001:15:59"],"nodeType":"IdentifierPath","referencedDeclaration":14652,"src":"5001:15:59"},"id":14282,"nodeType":"InheritanceSpecifier","src":"5001:15:59"}],"canonicalName":"IN2M_ERCLibrary","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":14486,"linearizedBaseContracts":[14486,14652,8],"name":"IN2M_ERCLibrary","nameLocation":"4982:15:59","nodeType":"ContractDefinition","nodes":[{"functionSelector":"8da62a17","id":14287,"implemented":false,"kind":"function","modifiers":[],"name":"setAndRevealBaseURI","nameLocation":"5032:19:59","nodeType":"FunctionDefinition","parameters":{"id":14285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14284,"mutability":"mutable","name":"baseURICIDHash","nameLocation":"5060:14:59","nodeType":"VariableDeclaration","scope":14287,"src":"5052:22:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14283,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5052:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5051:24:59"},"returnParameters":{"id":14286,"nodeType":"ParameterList","parameters":[],"src":"5084:0:59"},"scope":14486,"src":"5023:62:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3fd17366","id":14292,"implemented":false,"kind":"function","modifiers":[],"name":"changeMintPrice","nameLocation":"5099:15:59","nodeType":"FunctionDefinition","parameters":{"id":14290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14289,"mutability":"mutable","name":"newMintPrice","nameLocation":"5123:12:59","nodeType":"VariableDeclaration","scope":14292,"src":"5115:20:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14288,"name":"uint256","nodeType":"ElementaryTypeName","src":"5115:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5114:22:59"},"returnParameters":{"id":14291,"nodeType":"ParameterList","parameters":[],"src":"5145:0:59"},"scope":14486,"src":"5090:56:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e8a3d485","id":14297,"implemented":false,"kind":"function","modifiers":[],"name":"contractURI","nameLocation":"5160:11:59","nodeType":"FunctionDefinition","parameters":{"id":14293,"nodeType":"ParameterList","parameters":[],"src":"5171:2:59"},"returnParameters":{"id":14296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14295,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14297,"src":"5197:13:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14294,"name":"string","nodeType":"ElementaryTypeName","src":"5197:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5196:15:59"},"scope":14486,"src":"5151:61:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"227a722e","id":14302,"implemented":false,"kind":"function","modifiers":[],"name":"setContractURI","nameLocation":"5226:14:59","nodeType":"FunctionDefinition","parameters":{"id":14300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14299,"mutability":"mutable","name":"newContractURIMetadataCIDHash","nameLocation":"5249:29:59","nodeType":"VariableDeclaration","scope":14302,"src":"5241:37:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14298,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5241:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5240:39:59"},"returnParameters":{"id":14301,"nodeType":"ParameterList","parameters":[],"src":"5288:0:59"},"scope":14486,"src":"5217:72:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c9aa1118","id":14311,"implemented":false,"kind":"function","modifiers":[],"name":"setAffiliatesPercentageAndDiscount","nameLocation":"5303:34:59","nodeType":"FunctionDefinition","parameters":{"id":14309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14304,"mutability":"mutable","name":"userDiscount","nameLocation":"5345:12:59","nodeType":"VariableDeclaration","scope":14311,"src":"5338:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14303,"name":"uint16","nodeType":"ElementaryTypeName","src":"5338:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14306,"mutability":"mutable","name":"affiliatePercentage","nameLocation":"5366:19:59","nodeType":"VariableDeclaration","scope":14311,"src":"5359:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14305,"name":"uint16","nodeType":"ElementaryTypeName","src":"5359:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14308,"mutability":"mutable","name":"affiliateAddress","nameLocation":"5395:16:59","nodeType":"VariableDeclaration","scope":14311,"src":"5387:24:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14307,"name":"address","nodeType":"ElementaryTypeName","src":"5387:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5337:75:59"},"returnParameters":{"id":14310,"nodeType":"ParameterList","parameters":[],"src":"5421:0:59"},"scope":14486,"src":"5294:128:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"35f0aa94","id":14316,"implemented":false,"kind":"function","modifiers":[],"name":"affiliateWithdraw","nameLocation":"5436:17:59","nodeType":"FunctionDefinition","parameters":{"id":14314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14313,"mutability":"mutable","name":"affiliate","nameLocation":"5462:9:59","nodeType":"VariableDeclaration","scope":14316,"src":"5454:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14312,"name":"address","nodeType":"ElementaryTypeName","src":"5454:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5453:19:59"},"returnParameters":{"id":14315,"nodeType":"ParameterList","parameters":[],"src":"5481:0:59"},"scope":14486,"src":"5427:55:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f4f3b200","id":14321,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawERC20","nameLocation":"5496:13:59","nodeType":"FunctionDefinition","parameters":{"id":14319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14318,"mutability":"mutable","name":"erc20Address","nameLocation":"5518:12:59","nodeType":"VariableDeclaration","scope":14321,"src":"5510:20:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14317,"name":"address","nodeType":"ElementaryTypeName","src":"5510:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5509:22:59"},"returnParameters":{"id":14320,"nodeType":"ParameterList","parameters":[],"src":"5540:0:59"},"scope":14486,"src":"5487:54:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"372262b9","id":14332,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawERC20Pro","nameLocation":"5555:16:59","nodeType":"FunctionDefinition","parameters":{"id":14330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14323,"mutability":"mutable","name":"signatureExpireDate","nameLocation":"5580:19:59","nodeType":"VariableDeclaration","scope":14332,"src":"5572:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14322,"name":"uint256","nodeType":"ElementaryTypeName","src":"5572:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14325,"mutability":"mutable","name":"n2mFee","nameLocation":"5606:6:59","nodeType":"VariableDeclaration","scope":14332,"src":"5601:11:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14324,"name":"uint","nodeType":"ElementaryTypeName","src":"5601:4:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14327,"mutability":"mutable","name":"erc20Address","nameLocation":"5622:12:59","nodeType":"VariableDeclaration","scope":14332,"src":"5614:20:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14326,"name":"address","nodeType":"ElementaryTypeName","src":"5614:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14329,"mutability":"mutable","name":"signature","nameLocation":"5651:9:59","nodeType":"VariableDeclaration","scope":14332,"src":"5636:24:59","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":14328,"name":"bytes","nodeType":"ElementaryTypeName","src":"5636:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5571:90:59"},"returnParameters":{"id":14331,"nodeType":"ParameterList","parameters":[],"src":"5670:0:59"},"scope":14486,"src":"5546:125:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3ccfd60b","id":14335,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"5685:8:59","nodeType":"FunctionDefinition","parameters":{"id":14333,"nodeType":"ParameterList","parameters":[],"src":"5693:2:59"},"returnParameters":{"id":14334,"nodeType":"ParameterList","parameters":[],"src":"5704:0:59"},"scope":14486,"src":"5676:29:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c54993da","id":14344,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawPro","nameLocation":"5719:11:59","nodeType":"FunctionDefinition","parameters":{"id":14342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14337,"mutability":"mutable","name":"signatureExpireDate","nameLocation":"5739:19:59","nodeType":"VariableDeclaration","scope":14344,"src":"5731:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14336,"name":"uint256","nodeType":"ElementaryTypeName","src":"5731:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14339,"mutability":"mutable","name":"n2mFee","nameLocation":"5768:6:59","nodeType":"VariableDeclaration","scope":14344,"src":"5760:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14338,"name":"uint256","nodeType":"ElementaryTypeName","src":"5760:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14341,"mutability":"mutable","name":"signature","nameLocation":"5791:9:59","nodeType":"VariableDeclaration","scope":14344,"src":"5776:24:59","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":14340,"name":"bytes","nodeType":"ElementaryTypeName","src":"5776:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5730:71:59"},"returnParameters":{"id":14343,"nodeType":"ParameterList","parameters":[],"src":"5810:0:59"},"scope":14486,"src":"5710:101:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"7e124f46","id":14351,"implemented":false,"kind":"function","modifiers":[],"name":"setReverseENSName","nameLocation":"5825:17:59","nodeType":"FunctionDefinition","parameters":{"id":14349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14346,"mutability":"mutable","name":"rerverseResolver","nameLocation":"5851:16:59","nodeType":"VariableDeclaration","scope":14351,"src":"5843:24:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14345,"name":"address","nodeType":"ElementaryTypeName","src":"5843:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14348,"mutability":"mutable","name":"collectionENSName","nameLocation":"5885:17:59","nodeType":"VariableDeclaration","scope":14351,"src":"5869:33:59","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":14347,"name":"string","nodeType":"ElementaryTypeName","src":"5869:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5842:61:59"},"returnParameters":{"id":14350,"nodeType":"ParameterList","parameters":[],"src":"5912:0:59"},"scope":14486,"src":"5816:97:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bbfc4e4a","id":14358,"implemented":false,"kind":"function","modifiers":[],"name":"initializeAndSetReverseENSName","nameLocation":"5927:30:59","nodeType":"FunctionDefinition","parameters":{"id":14356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14353,"mutability":"mutable","name":"resolver","nameLocation":"5966:8:59","nodeType":"VariableDeclaration","scope":14358,"src":"5958:16:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14352,"name":"address","nodeType":"ElementaryTypeName","src":"5958:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14355,"mutability":"mutable","name":"collectionENSName","nameLocation":"5992:17:59","nodeType":"VariableDeclaration","scope":14358,"src":"5976:33:59","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":14354,"name":"string","nodeType":"ElementaryTypeName","src":"5976:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5957:53:59"},"returnParameters":{"id":14357,"nodeType":"ParameterList","parameters":[],"src":"6019:0:59"},"scope":14486,"src":"5918:102:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8a9feb73","id":14363,"implemented":false,"kind":"function","modifiers":[],"name":"changePlaceholderImageCID","nameLocation":"6034:25:59","nodeType":"FunctionDefinition","parameters":{"id":14361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14360,"mutability":"mutable","name":"newPlaceholderImageCIDHash","nameLocation":"6068:26:59","nodeType":"VariableDeclaration","scope":14363,"src":"6060:34:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14359,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6060:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6059:36:59"},"returnParameters":{"id":14362,"nodeType":"ParameterList","parameters":[],"src":"6104:0:59"},"scope":14486,"src":"6025:80:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c03afb59","id":14369,"implemented":false,"kind":"function","modifiers":[],"name":"setPhase","nameLocation":"6119:8:59","nodeType":"FunctionDefinition","parameters":{"id":14367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14366,"mutability":"mutable","name":"newPhase","nameLocation":"6138:8:59","nodeType":"VariableDeclaration","scope":14369,"src":"6128:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$14635","typeString":"enum IN2M_ERCStorage.SalePhase"},"typeName":{"id":14365,"nodeType":"UserDefinedTypeName","pathNode":{"id":14364,"name":"SalePhase","nameLocations":["6128:9:59"],"nodeType":"IdentifierPath","referencedDeclaration":14635,"src":"6128:9:59"},"referencedDeclaration":14635,"src":"6128:9:59","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$14635","typeString":"enum IN2M_ERCStorage.SalePhase"}},"visibility":"internal"}],"src":"6127:20:59"},"returnParameters":{"id":14368,"nodeType":"ParameterList","parameters":[],"src":"6156:0:59"},"scope":14486,"src":"6110:47:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0f22ea1f","id":14374,"implemented":false,"kind":"function","modifiers":[],"name":"setDropDate","nameLocation":"6171:11:59","nodeType":"FunctionDefinition","parameters":{"id":14372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14371,"mutability":"mutable","name":"dropDateTimestamp","nameLocation":"6191:17:59","nodeType":"VariableDeclaration","scope":14374,"src":"6183:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14370,"name":"uint256","nodeType":"ElementaryTypeName","src":"6183:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6182:27:59"},"returnParameters":{"id":14373,"nodeType":"ParameterList","parameters":[],"src":"6218:0:59"},"scope":14486,"src":"6162:57:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"baaafbb5","id":14381,"implemented":false,"kind":"function","modifiers":[],"name":"setDropAndEndDate","nameLocation":"6233:17:59","nodeType":"FunctionDefinition","parameters":{"id":14379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14376,"mutability":"mutable","name":"dropDateTimestamp","nameLocation":"6259:17:59","nodeType":"VariableDeclaration","scope":14381,"src":"6251:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14375,"name":"uint256","nodeType":"ElementaryTypeName","src":"6251:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14378,"mutability":"mutable","name":"endDateTimestamp","nameLocation":"6286:16:59","nodeType":"VariableDeclaration","scope":14381,"src":"6278:24:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14377,"name":"uint256","nodeType":"ElementaryTypeName","src":"6278:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6250:53:59"},"returnParameters":{"id":14380,"nodeType":"ParameterList","parameters":[],"src":"6312:0:59"},"scope":14486,"src":"6224:89:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b08b27a6","id":14386,"implemented":false,"kind":"function","modifiers":[],"name":"setMaxPerAddress","nameLocation":"6327:16:59","nodeType":"FunctionDefinition","parameters":{"id":14384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14383,"mutability":"mutable","name":"newMaxPerAddress","nameLocation":"6351:16:59","nodeType":"VariableDeclaration","scope":14386,"src":"6344:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14382,"name":"uint16","nodeType":"ElementaryTypeName","src":"6344:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6343:25:59"},"returnParameters":{"id":14385,"nodeType":"ParameterList","parameters":[],"src":"6377:0:59"},"scope":14486,"src":"6318:60:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"46ee5869","id":14391,"implemented":false,"kind":"function","modifiers":[],"name":"isOperatorFilterRegistryEnabled","nameLocation":"6392:31:59","nodeType":"FunctionDefinition","parameters":{"id":14387,"nodeType":"ParameterList","parameters":[],"src":"6423:2:59"},"returnParameters":{"id":14390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14389,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14391,"src":"6449:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14388,"name":"bool","nodeType":"ElementaryTypeName","src":"6449:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6448:6:59"},"scope":14486,"src":"6383:72:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"95720d1f","id":14394,"implemented":false,"kind":"function","modifiers":[],"name":"enableOperatorFilterRegistry","nameLocation":"6469:28:59","nodeType":"FunctionDefinition","parameters":{"id":14392,"nodeType":"ParameterList","parameters":[],"src":"6497:2:59"},"returnParameters":{"id":14393,"nodeType":"ParameterList","parameters":[],"src":"6508:0:59"},"scope":14486,"src":"6460:49:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"71ea200e","id":14397,"implemented":false,"kind":"function","modifiers":[],"name":"disableOperatorFilterRegistry","nameLocation":"6523:29:59","nodeType":"FunctionDefinition","parameters":{"id":14395,"nodeType":"ParameterList","parameters":[],"src":"6552:2:59"},"returnParameters":{"id":14396,"nodeType":"ParameterList","parameters":[],"src":"6563:0:59"},"scope":14486,"src":"6514:50:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"45c0f533","id":14402,"implemented":false,"kind":"function","modifiers":[],"name":"collectionSize","nameLocation":"6578:14:59","nodeType":"FunctionDefinition","parameters":{"id":14398,"nodeType":"ParameterList","parameters":[],"src":"6592:2:59"},"returnParameters":{"id":14401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14400,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14402,"src":"6618:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14399,"name":"uint256","nodeType":"ElementaryTypeName","src":"6618:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6617:9:59"},"scope":14486,"src":"6569:58:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"106769f2","id":14411,"implemented":false,"kind":"function","modifiers":[],"name":"randomTickets","nameLocation":"6641:13:59","nodeType":"FunctionDefinition","parameters":{"id":14405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14404,"mutability":"mutable","name":"affiliate","nameLocation":"6663:9:59","nodeType":"VariableDeclaration","scope":14411,"src":"6655:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14403,"name":"address","nodeType":"ElementaryTypeName","src":"6655:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6654:19:59"},"returnParameters":{"id":14410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14407,"mutability":"mutable","name":"amount","nameLocation":"6702:6:59","nodeType":"VariableDeclaration","scope":14411,"src":"6697:11:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14406,"name":"uint","nodeType":"ElementaryTypeName","src":"6697:4:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14409,"mutability":"mutable","name":"blockNumberToReveal","nameLocation":"6715:19:59","nodeType":"VariableDeclaration","scope":14411,"src":"6710:24:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14408,"name":"uint","nodeType":"ElementaryTypeName","src":"6710:4:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6696:39:59"},"scope":14486,"src":"6632:104:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1e7efe90","id":14422,"implemented":false,"kind":"function","modifiers":[],"name":"affiliatesInfo","nameLocation":"6750:14:59","nodeType":"FunctionDefinition","parameters":{"id":14414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14413,"mutability":"mutable","name":"affiliate","nameLocation":"6773:9:59","nodeType":"VariableDeclaration","scope":14422,"src":"6765:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14412,"name":"address","nodeType":"ElementaryTypeName","src":"6765:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6764:19:59"},"returnParameters":{"id":14421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14416,"mutability":"mutable","name":"enabled","nameLocation":"6812:7:59","nodeType":"VariableDeclaration","scope":14422,"src":"6807:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14415,"name":"bool","nodeType":"ElementaryTypeName","src":"6807:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":14418,"mutability":"mutable","name":"affiliatePercentage","nameLocation":"6828:19:59","nodeType":"VariableDeclaration","scope":14422,"src":"6821:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14417,"name":"uint16","nodeType":"ElementaryTypeName","src":"6821:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14420,"mutability":"mutable","name":"userDiscount","nameLocation":"6856:12:59","nodeType":"VariableDeclaration","scope":14422,"src":"6849:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14419,"name":"uint16","nodeType":"ElementaryTypeName","src":"6849:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6806:63:59"},"scope":14486,"src":"6741:129:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"54059640","id":14429,"implemented":false,"kind":"function","modifiers":[],"name":"pendingAffiliateBalance","nameLocation":"6884:23:59","nodeType":"FunctionDefinition","parameters":{"id":14425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14424,"mutability":"mutable","name":"affiliate","nameLocation":"6916:9:59","nodeType":"VariableDeclaration","scope":14429,"src":"6908:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14423,"name":"address","nodeType":"ElementaryTypeName","src":"6908:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6907:19:59"},"returnParameters":{"id":14428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14427,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14429,"src":"6950:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14426,"name":"uint256","nodeType":"ElementaryTypeName","src":"6950:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6949:9:59"},"scope":14486,"src":"6875:84:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d3f1157b","id":14434,"implemented":false,"kind":"function","modifiers":[],"name":"pendingTotalAffiliatesBalance","nameLocation":"6973:29:59","nodeType":"FunctionDefinition","parameters":{"id":14430,"nodeType":"ParameterList","parameters":[],"src":"7002:2:59"},"returnParameters":{"id":14433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14432,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14434,"src":"7028:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14431,"name":"uint256","nodeType":"ElementaryTypeName","src":"7028:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7027:9:59"},"scope":14486,"src":"6964:73:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b8997a97","id":14439,"implemented":false,"kind":"function","modifiers":[],"name":"royaltyFee","nameLocation":"7051:10:59","nodeType":"FunctionDefinition","parameters":{"id":14435,"nodeType":"ParameterList","parameters":[],"src":"7061:2:59"},"returnParameters":{"id":14438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14437,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14439,"src":"7087:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14436,"name":"uint256","nodeType":"ElementaryTypeName","src":"7087:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7086:9:59"},"scope":14486,"src":"7042:54:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"830de4b1","id":14444,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawnAmount","nameLocation":"7110:15:59","nodeType":"FunctionDefinition","parameters":{"id":14440,"nodeType":"ParameterList","parameters":[],"src":"7125:2:59"},"returnParameters":{"id":14443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14444,"src":"7151:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14441,"name":"uint256","nodeType":"ElementaryTypeName","src":"7151:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7150:9:59"},"scope":14486,"src":"7101:59:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8e5b37f3","id":14451,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawnERC20Amount","nameLocation":"7174:20:59","nodeType":"FunctionDefinition","parameters":{"id":14447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14446,"mutability":"mutable","name":"erc20","nameLocation":"7203:5:59","nodeType":"VariableDeclaration","scope":14451,"src":"7195:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14445,"name":"address","nodeType":"ElementaryTypeName","src":"7195:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7194:15:59"},"returnParameters":{"id":14450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14449,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14451,"src":"7233:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14448,"name":"uint256","nodeType":"ElementaryTypeName","src":"7233:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7232:9:59"},"scope":14486,"src":"7165:77:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"cca7f32e","id":14456,"implemented":false,"kind":"function","modifiers":[],"name":"erc20PaymentAddress","nameLocation":"7256:19:59","nodeType":"FunctionDefinition","parameters":{"id":14452,"nodeType":"ParameterList","parameters":[],"src":"7275:2:59"},"returnParameters":{"id":14455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14454,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14456,"src":"7301:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14453,"name":"address","nodeType":"ElementaryTypeName","src":"7301:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7300:9:59"},"scope":14486,"src":"7247:63:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"055ad42e","id":14462,"implemented":false,"kind":"function","modifiers":[],"name":"currentPhase","nameLocation":"7324:12:59","nodeType":"FunctionDefinition","parameters":{"id":14457,"nodeType":"ParameterList","parameters":[],"src":"7336:2:59"},"returnParameters":{"id":14461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14460,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14462,"src":"7362:9:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$14635","typeString":"enum IN2M_ERCStorage.SalePhase"},"typeName":{"id":14459,"nodeType":"UserDefinedTypeName","pathNode":{"id":14458,"name":"SalePhase","nameLocations":["7362:9:59"],"nodeType":"IdentifierPath","referencedDeclaration":14635,"src":"7362:9:59"},"referencedDeclaration":14635,"src":"7362:9:59","typeDescriptions":{"typeIdentifier":"t_enum$_SalePhase_$14635","typeString":"enum IN2M_ERCStorage.SalePhase"}},"visibility":"internal"}],"src":"7361:11:59"},"scope":14486,"src":"7315:58:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f0bba09f","id":14468,"implemented":false,"kind":"function","modifiers":[],"name":"mintingType","nameLocation":"7387:11:59","nodeType":"FunctionDefinition","parameters":{"id":14463,"nodeType":"ParameterList","parameters":[],"src":"7398:2:59"},"returnParameters":{"id":14467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14466,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14468,"src":"7424:11:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$14640","typeString":"enum IN2M_ERCStorage.MintingType"},"typeName":{"id":14465,"nodeType":"UserDefinedTypeName","pathNode":{"id":14464,"name":"MintingType","nameLocations":["7424:11:59"],"nodeType":"IdentifierPath","referencedDeclaration":14640,"src":"7424:11:59"},"referencedDeclaration":14640,"src":"7424:11:59","typeDescriptions":{"typeIdentifier":"t_enum$_MintingType_$14640","typeString":"enum IN2M_ERCStorage.MintingType"}},"visibility":"internal"}],"src":"7423:13:59"},"scope":14486,"src":"7378:59:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"116ae64d","id":14475,"implemented":false,"kind":"function","modifiers":[],"name":"saleDates","nameLocation":"7451:9:59","nodeType":"FunctionDefinition","parameters":{"id":14469,"nodeType":"ParameterList","parameters":[],"src":"7460:2:59"},"returnParameters":{"id":14474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14471,"mutability":"mutable","name":"dropDateTimestamp","nameLocation":"7494:17:59","nodeType":"VariableDeclaration","scope":14475,"src":"7486:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14470,"name":"uint256","nodeType":"ElementaryTypeName","src":"7486:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14473,"mutability":"mutable","name":"endDateTimestamp","nameLocation":"7521:16:59","nodeType":"VariableDeclaration","scope":14475,"src":"7513:24:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14472,"name":"uint256","nodeType":"ElementaryTypeName","src":"7513:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7485:53:59"},"scope":14486,"src":"7442:97:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"47535d7b","id":14480,"implemented":false,"kind":"function","modifiers":[],"name":"isOpen","nameLocation":"7553:6:59","nodeType":"FunctionDefinition","parameters":{"id":14476,"nodeType":"ParameterList","parameters":[],"src":"7559:2:59"},"returnParameters":{"id":14479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14478,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14480,"src":"7585:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14477,"name":"bool","nodeType":"ElementaryTypeName","src":"7585:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7584:6:59"},"scope":14486,"src":"7544:47:59","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"53ff5046","id":14485,"implemented":false,"kind":"function","modifiers":[],"name":"ownerMaxRevenue","nameLocation":"7605:15:59","nodeType":"FunctionDefinition","parameters":{"id":14481,"nodeType":"ParameterList","parameters":[],"src":"7620:2:59"},"returnParameters":{"id":14484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14483,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14485,"src":"7646:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14482,"name":"uint256","nodeType":"ElementaryTypeName","src":"7646:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7645:9:59"},"scope":14486,"src":"7596:59:59","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14487,"src":"4972:2686:59","usedErrors":[14499,14502,14505,14508,14511,14514,14517,14520,14523,14526,14529,14532,14535,14538,14541,14544,14547,14550,14553,14556,14559,14562,14565,14568,14571,14574,14577,14580,14583,14586,14589,14592,14595,14598,14601,14604,14607,14612]}],"src":"4913:2747:59"},"id":59},"contracts/interfaces/IN2M_ERCStorage.sol":{"ast":{"absolutePath":"contracts/interfaces/IN2M_ERCStorage.sol","exportedSymbols":{"IN2M_ERCStorage":[14652],"Readme":[8]},"id":14653,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":14488,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:60"},{"absolutePath":"@nfts2me/contracts/important/README.sol","file":"@nfts2me/contracts/important/README.sol","id":14489,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14653,"sourceUnit":9,"src":"4939:49:60","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14490,"name":"Readme","nameLocations":["5019:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":8,"src":"5019:6:60"},"id":14491,"nodeType":"InheritanceSpecifier","src":"5019:6:60"}],"canonicalName":"IN2M_ERCStorage","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":14652,"linearizedBaseContracts":[14652,8],"name":"IN2M_ERCStorage","nameLocation":"5000:15:60","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":14492,"nodeType":"StructuredDocumentation","src":"5032:122:60","text":"@notice This event is emitted when a token is minted using an affiliate\n @param affiliate The affiliate address"},"eventSelector":"f2f90295cdb5dafd392bfc62d7868bcc79e8c6164c820c7cc195d6c8cda8e674","id":14496,"name":"AffiliateSell","nameLocation":"5165:13:60","nodeType":"EventDefinition","parameters":{"id":14495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14494,"indexed":true,"mutability":"mutable","name":"affiliate","nameLocation":"5195:9:60","nodeType":"VariableDeclaration","scope":14496,"src":"5179:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14493,"name":"address","nodeType":"ElementaryTypeName","src":"5179:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5178:27:60"},"src":"5159:47:60"},{"documentation":{"id":14497,"nodeType":"StructuredDocumentation","src":"5212:92:60","text":"@notice Error thrown when trying to mint a token with a given id which is already minted"},"errorSelector":"00a5a1f5","id":14499,"name":"TokenAlreadyMinted","nameLocation":"5315:18:60","nodeType":"ErrorDefinition","parameters":{"id":14498,"nodeType":"ParameterList","parameters":[],"src":"5333:2:60"},"src":"5309:27:60"},{"documentation":{"id":14500,"nodeType":"StructuredDocumentation","src":"5342:61:60","text":"@notice Error thrown when input variable differ in length"},"errorSelector":"991f339f","id":14502,"name":"InvalidInputSizesDontMatch","nameLocation":"5414:26:60","nodeType":"ErrorDefinition","parameters":{"id":14501,"nodeType":"ParameterList","parameters":[],"src":"5440:2:60"},"src":"5408:35:60"},{"documentation":{"id":14503,"nodeType":"StructuredDocumentation","src":"5449:61:60","text":"@notice Error thrown when input variable differ in length"},"errorSelector":"1182c577","id":14505,"name":"InputSizeMismatch","nameLocation":"5521:17:60","nodeType":"ErrorDefinition","parameters":{"id":14504,"nodeType":"ParameterList","parameters":[],"src":"5538:2:60"},"src":"5515:26:60"},{"documentation":{"id":14506,"nodeType":"StructuredDocumentation","src":"5547:76:60","text":"@notice Error thrown when trying to mint a token with a given invalid id"},"errorSelector":"3f6cc768","id":14508,"name":"InvalidTokenId","nameLocation":"5634:14:60","nodeType":"ErrorDefinition","parameters":{"id":14507,"nodeType":"ParameterList","parameters":[],"src":"5648:2:60"},"src":"5628:23:60"},{"documentation":{"id":14509,"nodeType":"StructuredDocumentation","src":"5657:86:60","text":"@notice Error thrown when trying to redeem random tickets with no amount to redeem"},"errorSelector":"9890af60","id":14511,"name":"NothingToRedeem","nameLocation":"5754:15:60","nodeType":"ErrorDefinition","parameters":{"id":14510,"nodeType":"ParameterList","parameters":[],"src":"5769:2:60"},"src":"5748:24:60"},{"documentation":{"id":14512,"nodeType":"StructuredDocumentation","src":"5778:70:60","text":"@notice Error thrown when trying to redeem random tickets too soon"},"errorSelector":"93c4a003","id":14514,"name":"CantRevealYetWaitABitToBeAbleToRedeem","nameLocation":"5859:37:60","nodeType":"ErrorDefinition","parameters":{"id":14513,"nodeType":"ParameterList","parameters":[],"src":"5896:2:60"},"src":"5853:46:60"},{"documentation":{"id":14515,"nodeType":"StructuredDocumentation","src":"5905:59:60","text":"@notice Error thrown when the input amount is not valid"},"errorSelector":"2c5211c6","id":14517,"name":"InvalidAmount","nameLocation":"5975:13:60","nodeType":"ErrorDefinition","parameters":{"id":14516,"nodeType":"ParameterList","parameters":[],"src":"5988:2:60"},"src":"5969:22:60"},{"documentation":{"id":14518,"nodeType":"StructuredDocumentation","src":"5997:117:60","text":"@notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"},"errorSelector":"5fd48f91","id":14520,"name":"CollectionSoldOut","nameLocation":"6125:17:60","nodeType":"ErrorDefinition","parameters":{"id":14519,"nodeType":"ParameterList","parameters":[],"src":"6142:2:60"},"src":"6119:26:60"},{"documentation":{"id":14521,"nodeType":"StructuredDocumentation","src":"6151:107:60","text":"@notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"},"errorSelector":"7963e2b5","id":14523,"name":"PresaleNotOpen","nameLocation":"6269:14:60","nodeType":"ErrorDefinition","parameters":{"id":14522,"nodeType":"ParameterList","parameters":[],"src":"6283:2:60"},"src":"6263:23:60"},{"documentation":{"id":14524,"nodeType":"StructuredDocumentation","src":"6292:91:60","text":"@notice Error thrown when trying to mint and the collection current phase is not `open`"},"errorSelector":"63a2de0f","id":14526,"name":"PublicSaleNotOpen","nameLocation":"6394:17:60","nodeType":"ErrorDefinition","parameters":{"id":14525,"nodeType":"ParameterList","parameters":[],"src":"6411:2:60"},"src":"6388:26:60"},{"documentation":{"id":14527,"nodeType":"StructuredDocumentation","src":"6420:78:60","text":"@notice Error thrown when trying to mint but the sale has already finished"},"errorSelector":"0734f1ad","id":14529,"name":"SaleFinished","nameLocation":"6509:12:60","nodeType":"ErrorDefinition","parameters":{"id":14528,"nodeType":"ParameterList","parameters":[],"src":"6521:2:60"},"src":"6503:21:60"},{"documentation":{"id":14530,"nodeType":"StructuredDocumentation","src":"6530:76:60","text":"@notice Error thrown when trying to mint more than the allowance to mint"},"errorSelector":"9a89c66a","id":14532,"name":"NotEnoughAmountToMint","nameLocation":"6617:21:60","nodeType":"ErrorDefinition","parameters":{"id":14531,"nodeType":"ParameterList","parameters":[],"src":"6638:2:60"},"src":"6611:30:60"},{"documentation":{"id":14533,"nodeType":"StructuredDocumentation","src":"6647:61:60","text":"@notice Error thrown when sending funds to a free minting"},"errorSelector":"122d34a8","id":14535,"name":"InvalidMintFeeForFreeMinting","nameLocation":"6719:28:60","nodeType":"ErrorDefinition","parameters":{"id":14534,"nodeType":"ParameterList","parameters":[],"src":"6747:2:60"},"src":"6713:37:60"},{"documentation":{"id":14536,"nodeType":"StructuredDocumentation","src":"6756:58:60","text":"@notice Error thrown when the sent amount is not valid"},"errorSelector":"c288bf8f","id":14538,"name":"InvalidMintFee","nameLocation":"6825:14:60","nodeType":"ErrorDefinition","parameters":{"id":14537,"nodeType":"ParameterList","parameters":[],"src":"6839:2:60"},"src":"6819:23:60"},{"documentation":{"id":14539,"nodeType":"StructuredDocumentation","src":"6848:48:60","text":"@notice Royalty fee can't be higher than 10%"},"errorSelector":"44b93ba4","id":14541,"name":"RoyaltyFeeTooHigh","nameLocation":"6907:17:60","nodeType":"ErrorDefinition","parameters":{"id":14540,"nodeType":"ParameterList","parameters":[],"src":"6924:2:60"},"src":"6901:26:60"},{"documentation":{"id":14542,"nodeType":"StructuredDocumentation","src":"6933:65:60","text":"@notice Invalid input. Total supply must be greater than zero"},"errorSelector":"b8a9effe","id":14544,"name":"TotalSupplyMustBeGreaterThanZero","nameLocation":"7009:32:60","nodeType":"ErrorDefinition","parameters":{"id":14543,"nodeType":"ParameterList","parameters":[],"src":"7041:2:60"},"src":"7003:41:60"},{"documentation":{"id":14545,"nodeType":"StructuredDocumentation","src":"7050:62:60","text":"@notice Can't set BaseURI and Placeholder at the same time"},"errorSelector":"04cff63b","id":14547,"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","nameLocation":"7123:41:60","nodeType":"ErrorDefinition","parameters":{"id":14546,"nodeType":"ParameterList","parameters":[],"src":"7164:2:60"},"src":"7117:50:60"},{"documentation":{"id":14548,"nodeType":"StructuredDocumentation","src":"7173:42:60","text":"@notice No BaseURI nor Placeholder set"},"errorSelector":"27bfeafe","id":14550,"name":"NoBaseURINorPlaceholderSet","nameLocation":"7226:26:60","nodeType":"ErrorDefinition","parameters":{"id":14549,"nodeType":"ParameterList","parameters":[],"src":"7252:2:60"},"src":"7220:35:60"},{"documentation":{"id":14551,"nodeType":"StructuredDocumentation","src":"7261:50:60","text":"@notice Can't transfer a Soulbound Token (SBT)"},"errorSelector":"765c862b","id":14553,"name":"NonTransferrableSoulboundNFT","nameLocation":"7322:28:60","nodeType":"ErrorDefinition","parameters":{"id":14552,"nodeType":"ParameterList","parameters":[],"src":"7350:2:60"},"src":"7316:37:60"},{"documentation":{"id":14554,"nodeType":"StructuredDocumentation","src":"7359:55:60","text":"@notice The input revenue percentages are not valid"},"errorSelector":"fe0c06b7","id":14556,"name":"InvalidRevenuePercentage","nameLocation":"7425:24:60","nodeType":"ErrorDefinition","parameters":{"id":14555,"nodeType":"ParameterList","parameters":[],"src":"7449:2:60"},"src":"7419:33:60"},{"documentation":{"id":14557,"nodeType":"StructuredDocumentation","src":"7458:48:60","text":"@notice Can't mint until specified drop date"},"errorSelector":"b3c03577","id":14559,"name":"WaitUntilDropDate","nameLocation":"7517:17:60","nodeType":"ErrorDefinition","parameters":{"id":14558,"nodeType":"ParameterList","parameters":[],"src":"7534:2:60"},"src":"7511:26:60"},{"documentation":{"id":14560,"nodeType":"StructuredDocumentation","src":"7543:111:60","text":"@notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"},"errorSelector":"3f886819","id":14562,"name":"PresaleInvalidMintingType","nameLocation":"7665:25:60","nodeType":"ErrorDefinition","parameters":{"id":14561,"nodeType":"ParameterList","parameters":[],"src":"7690:2:60"},"src":"7659:34:60"},{"documentation":{"id":14563,"nodeType":"StructuredDocumentation","src":"7699:71:60","text":"@notice Metadata is already fixed. Can't change metadata once fixed"},"errorSelector":"f36c5604","id":14565,"name":"MetadataAlreadyFixed","nameLocation":"7781:20:60","nodeType":"ErrorDefinition","parameters":{"id":14564,"nodeType":"ParameterList","parameters":[],"src":"7801:2:60"},"src":"7775:29:60"},{"documentation":{"id":14566,"nodeType":"StructuredDocumentation","src":"7810:76:60","text":"@notice Invalid collection minting type for the current minting function"},"errorSelector":"64151c75","id":14568,"name":"InvalidMintingType","nameLocation":"7897:18:60","nodeType":"ErrorDefinition","parameters":{"id":14567,"nodeType":"ParameterList","parameters":[],"src":"7915:2:60"},"src":"7891:27:60"},{"documentation":{"id":14569,"nodeType":"StructuredDocumentation","src":"7924:59:60","text":"@notice The address exceeded the max per address amount"},"errorSelector":"550ffa9c","id":14571,"name":"MaxPerAddressExceeded","nameLocation":"7994:21:60","nodeType":"ErrorDefinition","parameters":{"id":14570,"nodeType":"ParameterList","parameters":[],"src":"8015:2:60"},"src":"7988:30:60"},{"documentation":{"id":14572,"nodeType":"StructuredDocumentation","src":"8024:62:60","text":"@notice The given signature doesn't match the input values"},"errorSelector":"73a8ee18","id":14574,"name":"SignatureMismatch","nameLocation":"8097:17:60","nodeType":"ErrorDefinition","parameters":{"id":14573,"nodeType":"ParameterList","parameters":[],"src":"8114:2:60"},"src":"8091:26:60"},{"documentation":{"id":14575,"nodeType":"StructuredDocumentation","src":"8123:39:60","text":"@notice Reentrancy Guard protection"},"errorSelector":"8beb9d16","id":14577,"name":"ReentrancyGuard","nameLocation":"8173:15:60","nodeType":"ErrorDefinition","parameters":{"id":14576,"nodeType":"ParameterList","parameters":[],"src":"8188:2:60"},"src":"8167:24:60"},{"documentation":{"id":14578,"nodeType":"StructuredDocumentation","src":"8197:42:60","text":"@notice New Placeholder can't be empty"},"errorSelector":"1ef28297","id":14580,"name":"NewPlaceholderCantBeEmpty","nameLocation":"8250:25:60","nodeType":"ErrorDefinition","parameters":{"id":14579,"nodeType":"ParameterList","parameters":[],"src":"8275:2:60"},"src":"8244:34:60"},{"documentation":{"id":14581,"nodeType":"StructuredDocumentation","src":"8284:38:60","text":"@notice New BaseURI can't be empty"},"errorSelector":"45e35773","id":14583,"name":"NewBaseURICantBeEmpty","nameLocation":"8333:21:60","nodeType":"ErrorDefinition","parameters":{"id":14582,"nodeType":"ParameterList","parameters":[],"src":"8354:2:60"},"src":"8327:30:60"},{"documentation":{"id":14584,"nodeType":"StructuredDocumentation","src":"8367:49:60","text":"@notice Invalid percentage or discount values"},"errorSelector":"21d43b64","id":14586,"name":"InvalidPercentageOrDiscountValues","nameLocation":"8427:33:60","nodeType":"ErrorDefinition","parameters":{"id":14585,"nodeType":"ParameterList","parameters":[],"src":"8460:2:60"},"src":"8421:42:60"},{"documentation":{"id":14587,"nodeType":"StructuredDocumentation","src":"8469:43:60","text":"@notice Can't lower current percentages"},"errorSelector":"288224ab","id":14589,"name":"CantLowerCurrentPercentages","nameLocation":"8523:27:60","nodeType":"ErrorDefinition","parameters":{"id":14588,"nodeType":"ParameterList","parameters":[],"src":"8550:2:60"},"src":"8517:36:60"},{"documentation":{"id":14590,"nodeType":"StructuredDocumentation","src":"8559:46:60","text":"@notice Contract MetadataURI already fixed"},"errorSelector":"b50ac5b9","id":14592,"name":"ContractMetadataURIAlreadyFixed","nameLocation":"8616:31:60","nodeType":"ErrorDefinition","parameters":{"id":14591,"nodeType":"ParameterList","parameters":[],"src":"8647:2:60"},"src":"8610:40:60"},{"documentation":{"id":14593,"nodeType":"StructuredDocumentation","src":"8656:52:60","text":"@notice Only owner of N2M can call this function"},"errorSelector":"e6427742","id":14595,"name":"OnlyOwnerOrN2M","nameLocation":"8719:14:60","nodeType":"ErrorDefinition","parameters":{"id":14594,"nodeType":"ParameterList","parameters":[],"src":"8733:2:60"},"src":"8713:23:60"},{"documentation":{"id":14596,"nodeType":"StructuredDocumentation","src":"8742:66:60","text":"@notice Only the given affiliate or N2M can call this function"},"errorSelector":"cd6ca494","id":14598,"name":"OnlyAffiliateOrN2M","nameLocation":"8819:18:60","nodeType":"ErrorDefinition","parameters":{"id":14597,"nodeType":"ParameterList","parameters":[],"src":"8837:2:60"},"src":"8813:27:60"},{"documentation":{"id":14599,"nodeType":"StructuredDocumentation","src":"8846:37:60","text":"@notice The signature has expired"},"errorSelector":"0819bdcd","id":14601,"name":"SignatureExpired","nameLocation":"8894:16:60","nodeType":"ErrorDefinition","parameters":{"id":14600,"nodeType":"ParameterList","parameters":[],"src":"8910:2:60"},"src":"8888:25:60"},{"documentation":{"id":14602,"nodeType":"StructuredDocumentation","src":"8919:86:60","text":"@notice Invalid phase can't be set without giving a date, use the proper functions"},"errorSelector":"382936d1","id":14604,"name":"InvalidPhaseWithoutDate","nameLocation":"9016:23:60","nodeType":"ErrorDefinition","parameters":{"id":14603,"nodeType":"ParameterList","parameters":[],"src":"9039:2:60"},"src":"9010:32:60"},{"documentation":{"id":14605,"nodeType":"StructuredDocumentation","src":"9048:29:60","text":"@notice Invalid drop date"},"errorSelector":"9404bf88","id":14607,"name":"InvalidDropDate","nameLocation":"9088:15:60","nodeType":"ErrorDefinition","parameters":{"id":14606,"nodeType":"ParameterList","parameters":[],"src":"9103:2:60"},"src":"9082:24:60"},{"documentation":{"id":14608,"nodeType":"StructuredDocumentation","src":"9112:40:60","text":"@notice Operator address is filtered"},"errorSelector":"a8cf495d","id":14612,"name":"AddressFiltered","nameLocation":"9163:15:60","nodeType":"ErrorDefinition","parameters":{"id":14611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14610,"mutability":"mutable","name":"filtered","nameLocation":"9187:8:60","nodeType":"VariableDeclaration","scope":14612,"src":"9179:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14609,"name":"address","nodeType":"ElementaryTypeName","src":"9179:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9178:18:60"},"src":"9157:40:60"},{"canonicalName":"IN2M_ERCStorage.RandomTicket","id":14617,"members":[{"constant":false,"id":14614,"mutability":"mutable","name":"amount","nameLocation":"9241:6:60","nodeType":"VariableDeclaration","scope":14617,"src":"9233:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14613,"name":"uint256","nodeType":"ElementaryTypeName","src":"9233:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14616,"mutability":"mutable","name":"blockNumberToReveal","nameLocation":"9265:19:60","nodeType":"VariableDeclaration","scope":14617,"src":"9257:27:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14615,"name":"uint256","nodeType":"ElementaryTypeName","src":"9257:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"RandomTicket","nameLocation":"9210:12:60","nodeType":"StructDefinition","scope":14652,"src":"9203:88:60","visibility":"public"},{"canonicalName":"IN2M_ERCStorage.RevenueAddress","id":14622,"members":[{"constant":false,"id":14619,"mutability":"mutable","name":"to","nameLocation":"9337:2:60","nodeType":"VariableDeclaration","scope":14622,"src":"9329:10:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14618,"name":"address","nodeType":"ElementaryTypeName","src":"9329:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14621,"mutability":"mutable","name":"percentage","nameLocation":"9356:10:60","nodeType":"VariableDeclaration","scope":14622,"src":"9349:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14620,"name":"uint16","nodeType":"ElementaryTypeName","src":"9349:6:60","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"name":"RevenueAddress","nameLocation":"9304:14:60","nodeType":"StructDefinition","scope":14652,"src":"9297:76:60","visibility":"public"},{"canonicalName":"IN2M_ERCStorage.AffiliateInformation","id":14629,"members":[{"constant":false,"id":14624,"mutability":"mutable","name":"enabled","nameLocation":"9422:7:60","nodeType":"VariableDeclaration","scope":14629,"src":"9417:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14623,"name":"bool","nodeType":"ElementaryTypeName","src":"9417:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":14626,"mutability":"mutable","name":"affiliatePercentage","nameLocation":"9446:19:60","nodeType":"VariableDeclaration","scope":14629,"src":"9439:26:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14625,"name":"uint16","nodeType":"ElementaryTypeName","src":"9439:6:60","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14628,"mutability":"mutable","name":"userDiscount","nameLocation":"9482:12:60","nodeType":"VariableDeclaration","scope":14629,"src":"9475:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14627,"name":"uint16","nodeType":"ElementaryTypeName","src":"9475:6:60","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"name":"AffiliateInformation","nameLocation":"9386:20:60","nodeType":"StructDefinition","scope":14652,"src":"9379:122:60","visibility":"public"},{"canonicalName":"IN2M_ERCStorage.SalePhase","id":14635,"members":[{"id":14630,"name":"CLOSED","nameLocation":"9533:6:60","nodeType":"EnumValue","src":"9533:6:60"},{"id":14631,"name":"PRESALE","nameLocation":"9549:7:60","nodeType":"EnumValue","src":"9549:7:60"},{"id":14632,"name":"PUBLIC","nameLocation":"9566:6:60","nodeType":"EnumValue","src":"9566:6:60"},{"id":14633,"name":"DROP_DATE","nameLocation":"9582:9:60","nodeType":"EnumValue","src":"9582:9:60"},{"id":14634,"name":"DROP_AND_END_DATE","nameLocation":"9601:17:60","nodeType":"EnumValue","src":"9601:17:60"}],"name":"SalePhase","nameLocation":"9512:9:60","nodeType":"EnumDefinition","src":"9507:117:60"},{"canonicalName":"IN2M_ERCStorage.MintingType","id":14640,"members":[{"id":14636,"name":"SEQUENTIAL","nameLocation":"9658:10:60","nodeType":"EnumValue","src":"9658:10:60"},{"id":14637,"name":"RANDOM","nameLocation":"9679:6:60","nodeType":"EnumValue","src":"9679:6:60"},{"id":14638,"name":"SPECIFY","nameLocation":"9696:7:60","nodeType":"EnumValue","src":"9696:7:60"},{"id":14639,"name":"CUSTOM_URI","nameLocation":"9714:10:60","nodeType":"EnumValue","src":"9714:10:60"}],"name":"MintingType","nameLocation":"9635:11:60","nodeType":"EnumDefinition","src":"9630:101:60"},{"canonicalName":"IN2M_ERCStorage.OperatorFilterStatus","id":14645,"members":[{"id":14641,"name":"ENABLED_NOT_INITIALIZED","nameLocation":"9774:23:60","nodeType":"EnumValue","src":"9774:23:60"},{"id":14642,"name":"ENABLED_EXISTS","nameLocation":"9808:14:60","nodeType":"EnumValue","src":"9808:14:60"},{"id":14643,"name":"DISABLED_NOT_INITIALIZED","nameLocation":"9842:24:60","nodeType":"EnumValue","src":"9842:24:60"},{"id":14644,"name":"DISABLED_EXISTS","nameLocation":"9876:15:60","nodeType":"EnumValue","src":"9876:15:60"}],"name":"OperatorFilterStatus","nameLocation":"9742:20:60","nodeType":"EnumDefinition","src":"9737:170:60"},{"documentation":{"id":14646,"nodeType":"StructuredDocumentation","src":"9913:167:60","text":"@notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."},"functionSelector":"0de77eb8","id":14651,"implemented":false,"kind":"function","modifiers":[],"name":"isMetadataFixed","nameLocation":"10094:15:60","nodeType":"FunctionDefinition","parameters":{"id":14647,"nodeType":"ParameterList","parameters":[],"src":"10109:2:60"},"returnParameters":{"id":14650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14651,"src":"10135:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14648,"name":"bool","nodeType":"ElementaryTypeName","src":"10135:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10134:6:60"},"scope":14652,"src":"10085:56:60","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14653,"src":"4990:5154:60","usedErrors":[14499,14502,14505,14508,14511,14514,14517,14520,14523,14526,14529,14532,14535,14538,14541,14544,14547,14550,14553,14556,14559,14562,14565,14568,14571,14574,14577,14580,14583,14586,14589,14592,14595,14598,14601,14604,14607,14612]}],"src":"4913:5233:60"},"id":60},"contracts/interfaces/IOperatorFilterRegistry.sol":{"ast":{"absolutePath":"contracts/interfaces/IOperatorFilterRegistry.sol","exportedSymbols":{"IOperatorFilterRegistry":[14841]},"id":14842,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":14654,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:61"},{"abstract":false,"baseContracts":[],"canonicalName":"IOperatorFilterRegistry","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":14841,"linearizedBaseContracts":[14841],"name":"IOperatorFilterRegistry","nameLocation":"4949:23:61","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c6171134","id":14663,"implemented":false,"kind":"function","modifiers":[],"name":"isOperatorAllowed","nameLocation":"4988:17:61","nodeType":"FunctionDefinition","parameters":{"id":14659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14656,"mutability":"mutable","name":"registrant","nameLocation":"5014:10:61","nodeType":"VariableDeclaration","scope":14663,"src":"5006:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14655,"name":"address","nodeType":"ElementaryTypeName","src":"5006:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14658,"mutability":"mutable","name":"operator","nameLocation":"5034:8:61","nodeType":"VariableDeclaration","scope":14663,"src":"5026:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14657,"name":"address","nodeType":"ElementaryTypeName","src":"5026:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5005:38:61"},"returnParameters":{"id":14662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14661,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14663,"src":"5067:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14660,"name":"bool","nodeType":"ElementaryTypeName","src":"5067:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5066:6:61"},"scope":14841,"src":"4979:94:61","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4420e486","id":14668,"implemented":false,"kind":"function","modifiers":[],"name":"register","nameLocation":"5087:8:61","nodeType":"FunctionDefinition","parameters":{"id":14666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14665,"mutability":"mutable","name":"registrant","nameLocation":"5104:10:61","nodeType":"VariableDeclaration","scope":14668,"src":"5096:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14664,"name":"address","nodeType":"ElementaryTypeName","src":"5096:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5095:20:61"},"returnParameters":{"id":14667,"nodeType":"ParameterList","parameters":[],"src":"5124:0:61"},"scope":14841,"src":"5078:47:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"7d3e3dbe","id":14675,"implemented":false,"kind":"function","modifiers":[],"name":"registerAndSubscribe","nameLocation":"5139:20:61","nodeType":"FunctionDefinition","parameters":{"id":14673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14670,"mutability":"mutable","name":"registrant","nameLocation":"5168:10:61","nodeType":"VariableDeclaration","scope":14675,"src":"5160:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14669,"name":"address","nodeType":"ElementaryTypeName","src":"5160:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14672,"mutability":"mutable","name":"subscription","nameLocation":"5188:12:61","nodeType":"VariableDeclaration","scope":14675,"src":"5180:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14671,"name":"address","nodeType":"ElementaryTypeName","src":"5180:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5159:42:61"},"returnParameters":{"id":14674,"nodeType":"ParameterList","parameters":[],"src":"5210:0:61"},"scope":14841,"src":"5130:81:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a0af2903","id":14682,"implemented":false,"kind":"function","modifiers":[],"name":"registerAndCopyEntries","nameLocation":"5225:22:61","nodeType":"FunctionDefinition","parameters":{"id":14680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14677,"mutability":"mutable","name":"registrant","nameLocation":"5256:10:61","nodeType":"VariableDeclaration","scope":14682,"src":"5248:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14676,"name":"address","nodeType":"ElementaryTypeName","src":"5248:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14679,"mutability":"mutable","name":"registrantToCopy","nameLocation":"5276:16:61","nodeType":"VariableDeclaration","scope":14682,"src":"5268:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14678,"name":"address","nodeType":"ElementaryTypeName","src":"5268:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5247:46:61"},"returnParameters":{"id":14681,"nodeType":"ParameterList","parameters":[],"src":"5302:0:61"},"scope":14841,"src":"5216:87:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a2f367ab","id":14691,"implemented":false,"kind":"function","modifiers":[],"name":"updateOperator","nameLocation":"5317:14:61","nodeType":"FunctionDefinition","parameters":{"id":14689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14684,"mutability":"mutable","name":"registrant","nameLocation":"5340:10:61","nodeType":"VariableDeclaration","scope":14691,"src":"5332:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14683,"name":"address","nodeType":"ElementaryTypeName","src":"5332:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14686,"mutability":"mutable","name":"operator","nameLocation":"5360:8:61","nodeType":"VariableDeclaration","scope":14691,"src":"5352:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14685,"name":"address","nodeType":"ElementaryTypeName","src":"5352:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14688,"mutability":"mutable","name":"filtered","nameLocation":"5375:8:61","nodeType":"VariableDeclaration","scope":14691,"src":"5370:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14687,"name":"bool","nodeType":"ElementaryTypeName","src":"5370:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5331:53:61"},"returnParameters":{"id":14690,"nodeType":"ParameterList","parameters":[],"src":"5393:0:61"},"scope":14841,"src":"5308:86:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a14584c1","id":14701,"implemented":false,"kind":"function","modifiers":[],"name":"updateOperators","nameLocation":"5408:15:61","nodeType":"FunctionDefinition","parameters":{"id":14699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14693,"mutability":"mutable","name":"registrant","nameLocation":"5432:10:61","nodeType":"VariableDeclaration","scope":14701,"src":"5424:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14692,"name":"address","nodeType":"ElementaryTypeName","src":"5424:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14696,"mutability":"mutable","name":"operators","nameLocation":"5463:9:61","nodeType":"VariableDeclaration","scope":14701,"src":"5444:28:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14694,"name":"address","nodeType":"ElementaryTypeName","src":"5444:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14695,"nodeType":"ArrayTypeName","src":"5444:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14698,"mutability":"mutable","name":"filtered","nameLocation":"5479:8:61","nodeType":"VariableDeclaration","scope":14701,"src":"5474:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14697,"name":"bool","nodeType":"ElementaryTypeName","src":"5474:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5423:65:61"},"returnParameters":{"id":14700,"nodeType":"ParameterList","parameters":[],"src":"5497:0:61"},"scope":14841,"src":"5399:99:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"712fc00b","id":14710,"implemented":false,"kind":"function","modifiers":[],"name":"updateCodeHash","nameLocation":"5512:14:61","nodeType":"FunctionDefinition","parameters":{"id":14708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14703,"mutability":"mutable","name":"registrant","nameLocation":"5535:10:61","nodeType":"VariableDeclaration","scope":14710,"src":"5527:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14702,"name":"address","nodeType":"ElementaryTypeName","src":"5527:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14705,"mutability":"mutable","name":"codehash","nameLocation":"5555:8:61","nodeType":"VariableDeclaration","scope":14710,"src":"5547:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14704,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5547:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14707,"mutability":"mutable","name":"filtered","nameLocation":"5570:8:61","nodeType":"VariableDeclaration","scope":14710,"src":"5565:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14706,"name":"bool","nodeType":"ElementaryTypeName","src":"5565:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5526:53:61"},"returnParameters":{"id":14709,"nodeType":"ParameterList","parameters":[],"src":"5588:0:61"},"scope":14841,"src":"5503:86:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"063298b6","id":14720,"implemented":false,"kind":"function","modifiers":[],"name":"updateCodeHashes","nameLocation":"5603:16:61","nodeType":"FunctionDefinition","parameters":{"id":14718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14712,"mutability":"mutable","name":"registrant","nameLocation":"5628:10:61","nodeType":"VariableDeclaration","scope":14720,"src":"5620:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14711,"name":"address","nodeType":"ElementaryTypeName","src":"5620:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14715,"mutability":"mutable","name":"codeHashes","nameLocation":"5659:10:61","nodeType":"VariableDeclaration","scope":14720,"src":"5640:29:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":14713,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5640:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":14714,"nodeType":"ArrayTypeName","src":"5640:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":14717,"mutability":"mutable","name":"filtered","nameLocation":"5676:8:61","nodeType":"VariableDeclaration","scope":14720,"src":"5671:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14716,"name":"bool","nodeType":"ElementaryTypeName","src":"5671:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5619:66:61"},"returnParameters":{"id":14719,"nodeType":"ParameterList","parameters":[],"src":"5694:0:61"},"scope":14841,"src":"5594:101:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b314d414","id":14727,"implemented":false,"kind":"function","modifiers":[],"name":"subscribe","nameLocation":"5709:9:61","nodeType":"FunctionDefinition","parameters":{"id":14725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14722,"mutability":"mutable","name":"registrant","nameLocation":"5727:10:61","nodeType":"VariableDeclaration","scope":14727,"src":"5719:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14721,"name":"address","nodeType":"ElementaryTypeName","src":"5719:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14724,"mutability":"mutable","name":"registrantToSubscribe","nameLocation":"5747:21:61","nodeType":"VariableDeclaration","scope":14727,"src":"5739:29:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14723,"name":"address","nodeType":"ElementaryTypeName","src":"5739:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5718:51:61"},"returnParameters":{"id":14726,"nodeType":"ParameterList","parameters":[],"src":"5778:0:61"},"scope":14841,"src":"5700:79:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"34a0dc10","id":14734,"implemented":false,"kind":"function","modifiers":[],"name":"unsubscribe","nameLocation":"5793:11:61","nodeType":"FunctionDefinition","parameters":{"id":14732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14729,"mutability":"mutable","name":"registrant","nameLocation":"5813:10:61","nodeType":"VariableDeclaration","scope":14734,"src":"5805:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14728,"name":"address","nodeType":"ElementaryTypeName","src":"5805:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14731,"mutability":"mutable","name":"copyExistingEntries","nameLocation":"5830:19:61","nodeType":"VariableDeclaration","scope":14734,"src":"5825:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14730,"name":"bool","nodeType":"ElementaryTypeName","src":"5825:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5804:46:61"},"returnParameters":{"id":14733,"nodeType":"ParameterList","parameters":[],"src":"5859:0:61"},"scope":14841,"src":"5784:76:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3c5030bb","id":14741,"implemented":false,"kind":"function","modifiers":[],"name":"subscriptionOf","nameLocation":"5874:14:61","nodeType":"FunctionDefinition","parameters":{"id":14737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14736,"mutability":"mutable","name":"addr","nameLocation":"5897:4:61","nodeType":"VariableDeclaration","scope":14741,"src":"5889:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14735,"name":"address","nodeType":"ElementaryTypeName","src":"5889:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5888:14:61"},"returnParameters":{"id":14740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14739,"mutability":"mutable","name":"registrant","nameLocation":"5929:10:61","nodeType":"VariableDeclaration","scope":14741,"src":"5921:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14738,"name":"address","nodeType":"ElementaryTypeName","src":"5921:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5920:20:61"},"scope":14841,"src":"5865:76:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5745ae28","id":14749,"implemented":false,"kind":"function","modifiers":[],"name":"subscribers","nameLocation":"5955:11:61","nodeType":"FunctionDefinition","parameters":{"id":14744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14743,"mutability":"mutable","name":"registrant","nameLocation":"5975:10:61","nodeType":"VariableDeclaration","scope":14749,"src":"5967:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14742,"name":"address","nodeType":"ElementaryTypeName","src":"5967:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5966:20:61"},"returnParameters":{"id":14748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14747,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14749,"src":"6005:16:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14745,"name":"address","nodeType":"ElementaryTypeName","src":"6005:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14746,"nodeType":"ArrayTypeName","src":"6005:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"6004:18:61"},"scope":14841,"src":"5946:77:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"55940e51","id":14758,"implemented":false,"kind":"function","modifiers":[],"name":"subscriberAt","nameLocation":"6037:12:61","nodeType":"FunctionDefinition","parameters":{"id":14754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14751,"mutability":"mutable","name":"registrant","nameLocation":"6058:10:61","nodeType":"VariableDeclaration","scope":14758,"src":"6050:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14750,"name":"address","nodeType":"ElementaryTypeName","src":"6050:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14753,"mutability":"mutable","name":"index","nameLocation":"6078:5:61","nodeType":"VariableDeclaration","scope":14758,"src":"6070:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14752,"name":"uint256","nodeType":"ElementaryTypeName","src":"6070:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6049:35:61"},"returnParameters":{"id":14757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14758,"src":"6103:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14755,"name":"address","nodeType":"ElementaryTypeName","src":"6103:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6102:9:61"},"scope":14841,"src":"6028:84:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1e06b4b4","id":14765,"implemented":false,"kind":"function","modifiers":[],"name":"copyEntriesOf","nameLocation":"6126:13:61","nodeType":"FunctionDefinition","parameters":{"id":14763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14760,"mutability":"mutable","name":"registrant","nameLocation":"6148:10:61","nodeType":"VariableDeclaration","scope":14765,"src":"6140:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14759,"name":"address","nodeType":"ElementaryTypeName","src":"6140:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14762,"mutability":"mutable","name":"registrantToCopy","nameLocation":"6168:16:61","nodeType":"VariableDeclaration","scope":14765,"src":"6160:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14761,"name":"address","nodeType":"ElementaryTypeName","src":"6160:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6139:46:61"},"returnParameters":{"id":14764,"nodeType":"ParameterList","parameters":[],"src":"6194:0:61"},"scope":14841,"src":"6117:78:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e4aecb54","id":14774,"implemented":false,"kind":"function","modifiers":[],"name":"isOperatorFiltered","nameLocation":"6209:18:61","nodeType":"FunctionDefinition","parameters":{"id":14770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14767,"mutability":"mutable","name":"registrant","nameLocation":"6236:10:61","nodeType":"VariableDeclaration","scope":14774,"src":"6228:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14766,"name":"address","nodeType":"ElementaryTypeName","src":"6228:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14769,"mutability":"mutable","name":"operator","nameLocation":"6256:8:61","nodeType":"VariableDeclaration","scope":14774,"src":"6248:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14768,"name":"address","nodeType":"ElementaryTypeName","src":"6248:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6227:38:61"},"returnParameters":{"id":14773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14774,"src":"6284:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14771,"name":"bool","nodeType":"ElementaryTypeName","src":"6284:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6283:6:61"},"scope":14841,"src":"6200:90:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5eae3173","id":14783,"implemented":false,"kind":"function","modifiers":[],"name":"isCodeHashOfFiltered","nameLocation":"6304:20:61","nodeType":"FunctionDefinition","parameters":{"id":14779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14776,"mutability":"mutable","name":"registrant","nameLocation":"6333:10:61","nodeType":"VariableDeclaration","scope":14783,"src":"6325:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14775,"name":"address","nodeType":"ElementaryTypeName","src":"6325:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14778,"mutability":"mutable","name":"operatorWithCode","nameLocation":"6353:16:61","nodeType":"VariableDeclaration","scope":14783,"src":"6345:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14777,"name":"address","nodeType":"ElementaryTypeName","src":"6345:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6324:46:61"},"returnParameters":{"id":14782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14783,"src":"6389:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14780,"name":"bool","nodeType":"ElementaryTypeName","src":"6389:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6388:6:61"},"scope":14841,"src":"6295:100:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6af0c315","id":14792,"implemented":false,"kind":"function","modifiers":[],"name":"isCodeHashFiltered","nameLocation":"6409:18:61","nodeType":"FunctionDefinition","parameters":{"id":14788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14785,"mutability":"mutable","name":"registrant","nameLocation":"6436:10:61","nodeType":"VariableDeclaration","scope":14792,"src":"6428:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14784,"name":"address","nodeType":"ElementaryTypeName","src":"6428:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14787,"mutability":"mutable","name":"codeHash","nameLocation":"6456:8:61","nodeType":"VariableDeclaration","scope":14792,"src":"6448:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14786,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6448:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6427:38:61"},"returnParameters":{"id":14791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14790,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14792,"src":"6484:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14789,"name":"bool","nodeType":"ElementaryTypeName","src":"6484:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6483:6:61"},"scope":14841,"src":"6400:90:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c4308805","id":14800,"implemented":false,"kind":"function","modifiers":[],"name":"filteredOperators","nameLocation":"6504:17:61","nodeType":"FunctionDefinition","parameters":{"id":14795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14794,"mutability":"mutable","name":"addr","nameLocation":"6530:4:61","nodeType":"VariableDeclaration","scope":14800,"src":"6522:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14793,"name":"address","nodeType":"ElementaryTypeName","src":"6522:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6521:14:61"},"returnParameters":{"id":14799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14798,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14800,"src":"6554:16:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14796,"name":"address","nodeType":"ElementaryTypeName","src":"6554:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14797,"nodeType":"ArrayTypeName","src":"6554:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"6553:18:61"},"scope":14841,"src":"6495:77:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"22fa2762","id":14808,"implemented":false,"kind":"function","modifiers":[],"name":"filteredCodeHashes","nameLocation":"6586:18:61","nodeType":"FunctionDefinition","parameters":{"id":14803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14802,"mutability":"mutable","name":"addr","nameLocation":"6613:4:61","nodeType":"VariableDeclaration","scope":14808,"src":"6605:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14801,"name":"address","nodeType":"ElementaryTypeName","src":"6605:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6604:14:61"},"returnParameters":{"id":14807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14808,"src":"6637:16:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":14804,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6637:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":14805,"nodeType":"ArrayTypeName","src":"6637:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6636:18:61"},"scope":14841,"src":"6577:78:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3f1cc5fa","id":14817,"implemented":false,"kind":"function","modifiers":[],"name":"filteredOperatorAt","nameLocation":"6669:18:61","nodeType":"FunctionDefinition","parameters":{"id":14813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14810,"mutability":"mutable","name":"registrant","nameLocation":"6696:10:61","nodeType":"VariableDeclaration","scope":14817,"src":"6688:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14809,"name":"address","nodeType":"ElementaryTypeName","src":"6688:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14812,"mutability":"mutable","name":"index","nameLocation":"6716:5:61","nodeType":"VariableDeclaration","scope":14817,"src":"6708:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14811,"name":"uint256","nodeType":"ElementaryTypeName","src":"6708:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6687:35:61"},"returnParameters":{"id":14816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14815,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14817,"src":"6741:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14814,"name":"address","nodeType":"ElementaryTypeName","src":"6741:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6740:9:61"},"scope":14841,"src":"6660:90:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a6529eb5","id":14826,"implemented":false,"kind":"function","modifiers":[],"name":"filteredCodeHashAt","nameLocation":"6764:18:61","nodeType":"FunctionDefinition","parameters":{"id":14822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14819,"mutability":"mutable","name":"registrant","nameLocation":"6791:10:61","nodeType":"VariableDeclaration","scope":14826,"src":"6783:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14818,"name":"address","nodeType":"ElementaryTypeName","src":"6783:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14821,"mutability":"mutable","name":"index","nameLocation":"6811:5:61","nodeType":"VariableDeclaration","scope":14826,"src":"6803:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14820,"name":"uint256","nodeType":"ElementaryTypeName","src":"6803:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6782:35:61"},"returnParameters":{"id":14825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14826,"src":"6836:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14823,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6836:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6835:9:61"},"scope":14841,"src":"6755:90:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c3c5a547","id":14833,"implemented":false,"kind":"function","modifiers":[],"name":"isRegistered","nameLocation":"6859:12:61","nodeType":"FunctionDefinition","parameters":{"id":14829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14828,"mutability":"mutable","name":"addr","nameLocation":"6880:4:61","nodeType":"VariableDeclaration","scope":14833,"src":"6872:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14827,"name":"address","nodeType":"ElementaryTypeName","src":"6872:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6871:14:61"},"returnParameters":{"id":14832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14833,"src":"6909:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14830,"name":"bool","nodeType":"ElementaryTypeName","src":"6909:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6908:6:61"},"scope":14841,"src":"6850:65:61","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bbd652c7","id":14840,"implemented":false,"kind":"function","modifiers":[],"name":"codeHashOf","nameLocation":"6929:10:61","nodeType":"FunctionDefinition","parameters":{"id":14836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14835,"mutability":"mutable","name":"addr","nameLocation":"6948:4:61","nodeType":"VariableDeclaration","scope":14840,"src":"6940:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14834,"name":"address","nodeType":"ElementaryTypeName","src":"6940:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6939:14:61"},"returnParameters":{"id":14839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14838,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14840,"src":"6977:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14837,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6977:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6976:9:61"},"scope":14841,"src":"6920:66:61","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14842,"src":"4939:2049:61","usedErrors":[]}],"src":"4913:2075:61"},"id":61},"contracts/interfaces/IReverseRegistrar.sol":{"ast":{"absolutePath":"contracts/interfaces/IReverseRegistrar.sol","exportedSymbols":{"IReverseRegistrar":[14903]},"id":14904,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":14843,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:62"},{"abstract":false,"baseContracts":[],"canonicalName":"IReverseRegistrar","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":14903,"linearizedBaseContracts":[14903],"name":"IReverseRegistrar","nameLocation":"4949:17:62","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c66485b2","id":14848,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultResolver","nameLocation":"4982:18:62","nodeType":"FunctionDefinition","parameters":{"id":14846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14845,"mutability":"mutable","name":"resolver","nameLocation":"5009:8:62","nodeType":"VariableDeclaration","scope":14848,"src":"5001:16:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14844,"name":"address","nodeType":"ElementaryTypeName","src":"5001:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5000:18:62"},"returnParameters":{"id":14847,"nodeType":"ParameterList","parameters":[],"src":"5027:0:62"},"scope":14903,"src":"4973:55:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1e83409a","id":14855,"implemented":false,"kind":"function","modifiers":[],"name":"claim","nameLocation":"5043:5:62","nodeType":"FunctionDefinition","parameters":{"id":14851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14850,"mutability":"mutable","name":"owner","nameLocation":"5057:5:62","nodeType":"VariableDeclaration","scope":14855,"src":"5049:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14849,"name":"address","nodeType":"ElementaryTypeName","src":"5049:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5048:15:62"},"returnParameters":{"id":14854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14853,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14855,"src":"5082:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14852,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5082:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5081:9:62"},"scope":14903,"src":"5034:57:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"65669631","id":14866,"implemented":false,"kind":"function","modifiers":[],"name":"claimForAddr","nameLocation":"5106:12:62","nodeType":"FunctionDefinition","parameters":{"id":14862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14857,"mutability":"mutable","name":"addr","nameLocation":"5136:4:62","nodeType":"VariableDeclaration","scope":14866,"src":"5128:12:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14856,"name":"address","nodeType":"ElementaryTypeName","src":"5128:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14859,"mutability":"mutable","name":"owner","nameLocation":"5158:5:62","nodeType":"VariableDeclaration","scope":14866,"src":"5150:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14858,"name":"address","nodeType":"ElementaryTypeName","src":"5150:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14861,"mutability":"mutable","name":"resolver","nameLocation":"5181:8:62","nodeType":"VariableDeclaration","scope":14866,"src":"5173:16:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14860,"name":"address","nodeType":"ElementaryTypeName","src":"5173:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5118:77:62"},"returnParameters":{"id":14865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14864,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14866,"src":"5214:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14863,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5214:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5213:9:62"},"scope":14903,"src":"5097:126:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0f5a5466","id":14875,"implemented":false,"kind":"function","modifiers":[],"name":"claimWithResolver","nameLocation":"5238:17:62","nodeType":"FunctionDefinition","parameters":{"id":14871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14868,"mutability":"mutable","name":"owner","nameLocation":"5264:5:62","nodeType":"VariableDeclaration","scope":14875,"src":"5256:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14867,"name":"address","nodeType":"ElementaryTypeName","src":"5256:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14870,"mutability":"mutable","name":"resolver","nameLocation":"5279:8:62","nodeType":"VariableDeclaration","scope":14875,"src":"5271:16:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14869,"name":"address","nodeType":"ElementaryTypeName","src":"5271:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5255:33:62"},"returnParameters":{"id":14874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14875,"src":"5323:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14872,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5323:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5322:9:62"},"scope":14903,"src":"5229:103:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c47f0027","id":14882,"implemented":false,"kind":"function","modifiers":[],"name":"setName","nameLocation":"5347:7:62","nodeType":"FunctionDefinition","parameters":{"id":14878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14877,"mutability":"mutable","name":"name","nameLocation":"5369:4:62","nodeType":"VariableDeclaration","scope":14882,"src":"5355:18:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14876,"name":"string","nodeType":"ElementaryTypeName","src":"5355:6:62","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5354:20:62"},"returnParameters":{"id":14881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14882,"src":"5393:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14879,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5393:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5392:9:62"},"scope":14903,"src":"5338:64:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"7a806d6b","id":14895,"implemented":false,"kind":"function","modifiers":[],"name":"setNameForAddr","nameLocation":"5417:14:62","nodeType":"FunctionDefinition","parameters":{"id":14891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14884,"mutability":"mutable","name":"addr","nameLocation":"5449:4:62","nodeType":"VariableDeclaration","scope":14895,"src":"5441:12:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14883,"name":"address","nodeType":"ElementaryTypeName","src":"5441:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14886,"mutability":"mutable","name":"owner","nameLocation":"5471:5:62","nodeType":"VariableDeclaration","scope":14895,"src":"5463:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14885,"name":"address","nodeType":"ElementaryTypeName","src":"5463:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14888,"mutability":"mutable","name":"resolver","nameLocation":"5494:8:62","nodeType":"VariableDeclaration","scope":14895,"src":"5486:16:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14887,"name":"address","nodeType":"ElementaryTypeName","src":"5486:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14890,"mutability":"mutable","name":"name","nameLocation":"5526:4:62","nodeType":"VariableDeclaration","scope":14895,"src":"5512:18:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14889,"name":"string","nodeType":"ElementaryTypeName","src":"5512:6:62","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5431:105:62"},"returnParameters":{"id":14894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14893,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14895,"src":"5555:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14892,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5555:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5554:9:62"},"scope":14903,"src":"5408:156:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bffbe61c","id":14902,"implemented":false,"kind":"function","modifiers":[],"name":"node","nameLocation":"5579:4:62","nodeType":"FunctionDefinition","parameters":{"id":14898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14897,"mutability":"mutable","name":"addr","nameLocation":"5592:4:62","nodeType":"VariableDeclaration","scope":14902,"src":"5584:12:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14896,"name":"address","nodeType":"ElementaryTypeName","src":"5584:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5583:14:62"},"returnParameters":{"id":14901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14900,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14902,"src":"5621:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5621:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5620:9:62"},"scope":14903,"src":"5570:60:62","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":14904,"src":"4939:693:62","usedErrors":[]}],"src":"4913:719:62"},"id":62},"contracts/ownable/NFTOwnableUpgradeable.sol":{"ast":{"absolutePath":"contracts/ownable/NFTOwnableUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[5076],"ContextUpgradeable":[6489],"Initializable":[1466],"NFTOwnableUpgradeable":[15017]},"id":15018,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":14905,"literals":["solidity","^","0.8",".18"],"nodeType":"PragmaDirective","src":"4913:24:63"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":14906,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15018,"sourceUnit":1467,"src":"4939:75:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","id":14907,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15018,"sourceUnit":6490,"src":"5015:74:63","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14909,"name":"Initializable","nameLocations":["5398:13:63"],"nodeType":"IdentifierPath","referencedDeclaration":1466,"src":"5398:13:63"},"id":14910,"nodeType":"InheritanceSpecifier","src":"5398:13:63"},{"baseName":{"id":14911,"name":"ContextUpgradeable","nameLocations":["5413:18:63"],"nodeType":"IdentifierPath","referencedDeclaration":6489,"src":"5413:18:63"},"id":14912,"nodeType":"InheritanceSpecifier","src":"5413:18:63"}],"canonicalName":"NFTOwnableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":14908,"nodeType":"StructuredDocumentation","src":"5091:264:63","text":"@title NFTs2Me.com Smart Contracts\n @author The NFTs2Me Team\n @notice Read our terms of service\n @custom:security-contact security@nfts2me.com\n @custom:terms-of-service https://nfts2me.com/terms-of-service/\n @custom:website https://nfts2me.com/"},"fullyImplemented":false,"id":15017,"linearizedBaseContracts":[15017,6489,1466],"name":"NFTOwnableUpgradeable","nameLocation":"5373:21:63","nodeType":"ContractDefinition","nodes":[{"body":{"id":14919,"nodeType":"Block","src":"5541:41:63","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14915,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14971,"src":"5551:11:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":14916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5551:13:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14917,"nodeType":"ExpressionStatement","src":"5551:13:63"},{"id":14918,"nodeType":"PlaceholderStatement","src":"5574:1:63"}]},"documentation":{"id":14913,"nodeType":"StructuredDocumentation","src":"5438:77:63","text":" @dev Throws if called by any account other than the owner."},"id":14920,"name":"onlyOwner","nameLocation":"5529:9:63","nodeType":"ModifierDefinition","parameters":{"id":14914,"nodeType":"ParameterList","parameters":[],"src":"5538:2:63"},"src":"5520:62:63","virtual":false,"visibility":"internal"},{"body":{"id":14926,"nodeType":"Block","src":"5615:47:63","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14922,"name":"_checkStrictOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14984,"src":"5625:17:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":14923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5625:19:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14924,"nodeType":"ExpressionStatement","src":"5625:19:63"},{"id":14925,"nodeType":"PlaceholderStatement","src":"5654:1:63"}]},"id":14927,"name":"onlyStrictOwner","nameLocation":"5597:15:63","nodeType":"ModifierDefinition","parameters":{"id":14921,"nodeType":"ParameterList","parameters":[],"src":"5612:2:63"},"src":"5588:74:63","virtual":false,"visibility":"internal"},{"body":{"id":14933,"nodeType":"Block","src":"5694:46:63","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14929,"name":"_checkOwnerOrN2M","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15003,"src":"5704:16:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":14930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5704:18:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14931,"nodeType":"ExpressionStatement","src":"5704:18:63"},{"id":14932,"nodeType":"PlaceholderStatement","src":"5732:1:63"}]},"id":14934,"name":"onlyOwnerOrN2M","nameLocation":"5677:14:63","nodeType":"ModifierDefinition","parameters":{"id":14928,"nodeType":"ParameterList","parameters":[],"src":"5691:2:63"},"src":"5668:72:63","virtual":false,"visibility":"internal"},{"body":{"id":14940,"nodeType":"Block","src":"5765:39:63","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14936,"name":"_checkN2M","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15016,"src":"5775:9:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":14937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5775:11:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14938,"nodeType":"ExpressionStatement","src":"5775:11:63"},{"id":14939,"nodeType":"PlaceholderStatement","src":"5796:1:63"}]},"id":14941,"name":"onlyN2M","nameLocation":"5755:7:63","nodeType":"ModifierDefinition","parameters":{"id":14935,"nodeType":"ParameterList","parameters":[],"src":"5762:2:63"},"src":"5746:58:63","virtual":false,"visibility":"internal"},{"documentation":{"id":14942,"nodeType":"StructuredDocumentation","src":"5810:65:63","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":14947,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"5889:5:63","nodeType":"FunctionDefinition","parameters":{"id":14943,"nodeType":"ParameterList","parameters":[],"src":"5894:2:63"},"returnParameters":{"id":14946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14945,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14947,"src":"5926:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14944,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5925:9:63"},"scope":15017,"src":"5880:55:63","stateMutability":"view","virtual":true,"visibility":"public"},{"id":14952,"implemented":false,"kind":"function","modifiers":[],"name":"_strictOwner","nameLocation":"5949:12:63","nodeType":"FunctionDefinition","parameters":{"id":14948,"nodeType":"ParameterList","parameters":[],"src":"5961:2:63"},"returnParameters":{"id":14951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14950,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14952,"src":"5995:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14949,"name":"address","nodeType":"ElementaryTypeName","src":"5995:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5994:9:63"},"scope":15017,"src":"5940:64:63","stateMutability":"view","virtual":true,"visibility":"internal"},{"id":14957,"implemented":false,"kind":"function","modifiers":[],"name":"_getN2MFeeAddress","nameLocation":"6018:17:63","nodeType":"FunctionDefinition","parameters":{"id":14953,"nodeType":"ParameterList","parameters":[],"src":"6035:2:63"},"returnParameters":{"id":14956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14955,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14957,"src":"6069:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14954,"name":"address","nodeType":"ElementaryTypeName","src":"6069:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6068:9:63"},"scope":15017,"src":"6009:69:63","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":14970,"nodeType":"Block","src":"6196:83:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":14962,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14947,"src":"6214:5:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":14963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6214:7:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":14964,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6225:3:63","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6229:6:63","memberName":"sender","nodeType":"MemberAccess","src":"6225:10:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6214:21:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":14967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6237:34:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":14961,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6206:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6206:66:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14969,"nodeType":"ExpressionStatement","src":"6206:66:63"}]},"documentation":{"id":14958,"nodeType":"StructuredDocumentation","src":"6084:62:63","text":" @dev Throws if the sender is not the owner."},"id":14971,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"6160:11:63","nodeType":"FunctionDefinition","parameters":{"id":14959,"nodeType":"ParameterList","parameters":[],"src":"6171:2:63"},"returnParameters":{"id":14960,"nodeType":"ParameterList","parameters":[],"src":"6196:0:63"},"scope":15017,"src":"6151:128:63","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":14983,"nodeType":"Block","src":"6336:90:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":14975,"name":"_strictOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14952,"src":"6354:12:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":14976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6354:14:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":14977,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6372:3:63","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6376:6:63","memberName":"sender","nodeType":"MemberAccess","src":"6372:10:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6354:28:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":14980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6384:34:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":14974,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6346:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6346:73:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14982,"nodeType":"ExpressionStatement","src":"6346:73:63"}]},"id":14984,"implemented":true,"kind":"function","modifiers":[],"name":"_checkStrictOwner","nameLocation":"6294:17:63","nodeType":"FunctionDefinition","parameters":{"id":14972,"nodeType":"ParameterList","parameters":[],"src":"6311:2:63"},"returnParameters":{"id":14973,"nodeType":"ParameterList","parameters":[],"src":"6336:0:63"},"scope":15017,"src":"6285:141:63","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":15002,"nodeType":"Block","src":"6482:120:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":14988,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14947,"src":"6500:5:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":14989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6500:7:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":14990,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6511:3:63","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6515:6:63","memberName":"sender","nodeType":"MemberAccess","src":"6511:10:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6500:21:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":14993,"name":"_getN2MFeeAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14957,"src":"6525:17:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":14994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6525:19:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":14995,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6548:3:63","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6552:6:63","memberName":"sender","nodeType":"MemberAccess","src":"6548:10:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6525:33:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6500:58:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":14999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6560:34:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":14987,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6492:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6492:103:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15001,"nodeType":"ExpressionStatement","src":"6492:103:63"}]},"id":15003,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwnerOrN2M","nameLocation":"6441:16:63","nodeType":"FunctionDefinition","parameters":{"id":14985,"nodeType":"ParameterList","parameters":[],"src":"6457:2:63"},"returnParameters":{"id":14986,"nodeType":"ParameterList","parameters":[],"src":"6482:0:63"},"scope":15017,"src":"6432:170:63","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":15015,"nodeType":"Block","src":"6651:95:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":15007,"name":"_getN2MFeeAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14957,"src":"6669:17:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":15008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6669:19:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":15009,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6692:3:63","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6696:6:63","memberName":"sender","nodeType":"MemberAccess","src":"6692:10:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6669:33:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":15012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6704:34:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":15006,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6661:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6661:78:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15014,"nodeType":"ExpressionStatement","src":"6661:78:63"}]},"id":15016,"implemented":true,"kind":"function","modifiers":[],"name":"_checkN2M","nameLocation":"6617:9:63","nodeType":"FunctionDefinition","parameters":{"id":15004,"nodeType":"ParameterList","parameters":[],"src":"6626:2:63"},"returnParameters":{"id":15005,"nodeType":"ParameterList","parameters":[],"src":"6651:0:63"},"scope":15017,"src":"6608:138:63","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":15018,"src":"5355:1394:63","usedErrors":[]}],"src":"4913:1836:63"},"id":63}},"contracts":{"@nfts2me/contracts/important/README.sol":{"Readme":{"abi":[{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"devdoc":{"author":"The NFTs2Me Team","custom:security-contact":"security@nfts2me.com","custom:terms-of-service":"https://nfts2me.com/terms-of-service/","custom:website":"https://nfts2me.com/","kind":"dev","methods":{},"title":"NFTs2Me.com Smart Contracts README","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"n2mVersion()":"cb93c48f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The NFTs2Me Team\",\"custom:security-contact\":\"security@nfts2me.com\",\"custom:terms-of-service\":\"https://nfts2me.com/terms-of-service/\",\"custom:website\":\"https://nfts2me.com/\",\"kind\":\"dev\",\"methods\":{},\"title\":\"NFTs2Me.com Smart Contracts README\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Read our terms of service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@nfts2me/contracts/important/README.sol\":\"Readme\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"Read our terms of service","version":1}}},"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol":{"IN2MBeaconFactory":{"abi":[{"inputs":[],"name":"getERC1155Implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getERC721Implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getERC1155Implementation()":"9ccaabf6","getERC721Implementation()":"84663e53"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getERC1155Implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC721Implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol\":\"IN2MBeaconFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IN2MBeaconFactory {\\n function getERC721Implementation() external view returns (address);\\n function getERC1155Implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x2025b2e89d5b2ccdfc3b3d0162fb2241d2fa0e95eb4b5ef6abcaaa4f3c7fe71e\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol":{"IN2MCrossFactory":{"abi":[{"inputs":[],"name":"getN2MTreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","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":"tokenId","type":"uint256"}],"name":"strictOwnerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getN2MTreasuryAddress()":"3765cb6a","ownerOf(uint256)":"6352211e","strictOwnerOf(uint256)":"713562fe"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getN2MTreasuryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"strictOwnerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\":\"IN2MCrossFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IN2MCrossFactory {\\n function getN2MTreasuryAddress() external pure returns (address);\\n function ownerOf(uint256 tokenId) external view returns (address);\\n function strictOwnerOf(uint256 tokenId) external view returns (address);\\n}\\n\",\"keccak256\":\"0xa82780a2da4848f8c0f93e1a2da64e9b7e90869803050e6921863fe5683af43d\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol":{"IN2M_ERCBase":{"abi":[{"inputs":[{"internalType":"address","name":"filtered","type":"address"}],"name":"AddressFiltered","type":"error"},{"inputs":[],"name":"CantLowerCurrentPercentages","type":"error"},{"inputs":[],"name":"CantRevealYetWaitABitToBeAbleToRedeem","type":"error"},{"inputs":[],"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","type":"error"},{"inputs":[],"name":"CollectionSoldOut","type":"error"},{"inputs":[],"name":"ContractMetadataURIAlreadyFixed","type":"error"},{"inputs":[],"name":"InputSizeMismatch","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidDropDate","type":"error"},{"inputs":[],"name":"InvalidInputSizesDontMatch","type":"error"},{"inputs":[],"name":"InvalidMintFee","type":"error"},{"inputs":[],"name":"InvalidMintFeeForFreeMinting","type":"error"},{"inputs":[],"name":"InvalidMintingType","type":"error"},{"inputs":[],"name":"InvalidPercentageOrDiscountValues","type":"error"},{"inputs":[],"name":"InvalidPhaseWithoutDate","type":"error"},{"inputs":[],"name":"InvalidRevenuePercentage","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MaxPerAddressExceeded","type":"error"},{"inputs":[],"name":"MetadataAlreadyFixed","type":"error"},{"inputs":[],"name":"NewBaseURICantBeEmpty","type":"error"},{"inputs":[],"name":"NewPlaceholderCantBeEmpty","type":"error"},{"inputs":[],"name":"NoBaseURINorPlaceholderSet","type":"error"},{"inputs":[],"name":"NonTransferrableSoulboundNFT","type":"error"},{"inputs":[],"name":"NotEnoughAmountToMint","type":"error"},{"inputs":[],"name":"NothingToRedeem","type":"error"},{"inputs":[],"name":"OnlyAffiliateOrN2M","type":"error"},{"inputs":[],"name":"OnlyOwnerOrN2M","type":"error"},{"inputs":[],"name":"PresaleInvalidMintingType","type":"error"},{"inputs":[],"name":"PresaleNotOpen","type":"error"},{"inputs":[],"name":"PublicSaleNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"RoyaltyFeeTooHigh","type":"error"},{"inputs":[],"name":"SaleFinished","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[],"name":"SignatureMismatch","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TotalSupplyMustBeGreaterThanZero","type":"error"},{"inputs":[],"name":"WaitUntilDropDate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"affiliate","type":"address"}],"name":"AffiliateSell","type":"event"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSequential","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSpecify","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"iMintPrice","type":"uint256"},{"internalType":"bytes32","name":"baseURICIDHash","type":"bytes32"},{"internalType":"bytes32","name":"placeholderImageCIDHash","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint16","name":"percentage","type":"uint16"}],"internalType":"struct IN2M_ERCStorage.RevenueAddress[]","name":"revenueAddresses","type":"tuple[]"},{"internalType":"address","name":"iErc20PaymentAddress","type":"address"},{"internalType":"uint32","name":"iTotalSupply","type":"uint32"},{"internalType":"uint16","name":"iRoyaltyFee","type":"uint16"},{"internalType":"bool","name":"soulboundCollection","type":"bool"},{"internalType":"enum IN2M_ERCStorage.MintingType","name":"iMintingType","type":"uint8"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"isMetadataFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"customURICIDHash","type":"bytes32"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"mintCustomURITo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"freeMinting","type":"bool"},{"internalType":"uint256","name":"customFee","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"soulbound","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mintPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeemRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","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":"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"}],"devdoc":{"events":{"AffiliateSell(address)":{"params":{"affiliate":"The affiliate address"}}},"kind":"dev","methods":{"airdropRandom(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSequential(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSpecify(address[],uint256[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"maxPerAddress()":{"returns":{"_0":"Max per address allowed."}},"mint(uint256)":{"params":{"amount":"The number of NFTs to mint"}},"mint(uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint"}},"mintCustomURITo(address,bytes32,bool)":{"params":{"customURICIDHash":"The CID of the given token.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The address of the NFTs receiver"}},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"params":{"amount":"Amount to mint.","customFee":"Zero is fee is different from `mintingPrice`.","freeMinting":"True is minting is free","maxAmount":"Max Amount to be minted with the given `signature`.","signature":"Valid `signature` for the presale/whitelist.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`."}},"mintPrice()":{"returns":{"_0":"Mint price for one NFT in native coin or ERC-20."}},"mintRandomTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintRandomTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintSpecifyTo(address,uint256[])":{"params":{"to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintSpecifyTo(address,uint256[],address)":{"params":{"affiliate":"The affiliate address","to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"supportsInterface(bytes4)":{"details":"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."},"symbol()":{"returns":{"_0":"the collection symbol"}},"tokenURI(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\"."},"totalSupply()":{"returns":{"_0":"Current total supply."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"airdropRandom(address[],bool)":"be172edf","airdropSequential(address[],bool)":"68fdda33","airdropSpecify(address[],uint256[],bool)":"71e6775f","initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":"5066e5c2","isMetadataFixed()":"0de77eb8","maxPerAddress()":"639814e0","mint()":"1249c58b","mint(uint256)":"a0712d68","mint(uint256,address)":"94bf804d","mintCustomURITo(address,bytes32,bool)":"6ad54240","mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":"9d13a5ba","mintPrice()":"6817c76c","mintRandomTo(address,uint256)":"1d7df191","mintRandomTo(address,uint256,address)":"fefa5d72","mintSpecifyTo(address,uint256[])":"4402d254","mintSpecifyTo(address,uint256[],address)":"4a50aa85","mintTo(address,uint256)":"449a52f8","mintTo(address,uint256,address)":"438b1b4b","n2mVersion()":"cb93c48f","name()":"06fdde03","redeemRandom()":"1ff4cc7d","royaltyInfo(uint256,uint256)":"2a55205a","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filtered\",\"type\":\"address\"}],\"name\":\"AddressFiltered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantLowerCurrentPercentages\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantRevealYetWaitABitToBeAbleToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSetBaseURIAndPlaceholderAtTheSameTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CollectionSoldOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractMetadataURIAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputSizeMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDropDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputSizesDontMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFeeForFreeMinting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercentageOrDiscountValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPhaseWithoutDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevenuePercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerAddressExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetadataAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBaseURICantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPlaceholderCantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseURINorPlaceholderSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonTransferrableSoulboundNFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughAmountToMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAffiliateOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOwnerOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleInvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PublicSaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoyaltyFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaleFinished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyMinted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WaitUntilDropDate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"AffiliateSell\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSequential\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSpecify\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"iMintPrice\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"baseURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"placeholderImageCIDHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"percentage\",\"type\":\"uint16\"}],\"internalType\":\"struct IN2M_ERCStorage.RevenueAddress[]\",\"name\":\"revenueAddresses\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"iErc20PaymentAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"iTotalSupply\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"iRoyaltyFee\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"soulboundCollection\",\"type\":\"bool\"},{\"internalType\":\"enum IN2M_ERCStorage.MintingType\",\"name\":\"iMintingType\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isMetadataFixed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPerAddress\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"customURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"mintCustomURITo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"freeMinting\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"customFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"mintPresale\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"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\"}],\"devdoc\":{\"events\":{\"AffiliateSell(address)\":{\"params\":{\"affiliate\":\"The affiliate address\"}}},\"kind\":\"dev\",\"methods\":{\"airdropRandom(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSequential(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSpecify(address[],uint256[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"maxPerAddress()\":{\"returns\":{\"_0\":\"Max per address allowed.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint\"}},\"mint(uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint\"}},\"mintCustomURITo(address,bytes32,bool)\":{\"params\":{\"customURICIDHash\":\"The CID of the given token.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The address of the NFTs receiver\"}},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"amount\":\"Amount to mint.\",\"customFee\":\"Zero is fee is different from `mintingPrice`.\",\"freeMinting\":\"True is minting is free\",\"maxAmount\":\"Max Amount to be minted with the given `signature`.\",\"signature\":\"Valid `signature` for the presale/whitelist.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\"}},\"mintPrice()\":{\"returns\":{\"_0\":\"Mint price for one NFT in native coin or ERC-20.\"}},\"mintRandomTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintRandomTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintSpecifyTo(address,uint256[])\":{\"params\":{\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintSpecifyTo(address,uint256[],address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"supportsInterface(bytes4)\":{\"details\":\"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.\"},\"symbol()\":{\"returns\":{\"_0\":\"the collection symbol\"}},\"tokenURI(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \\\"ERC721 Metadata JSON Schema\\\".\"},\"totalSupply()\":{\"returns\":{\"_0\":\"Current total supply.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AddressFiltered(address)\":[{\"notice\":\"Operator address is filtered\"}],\"CantLowerCurrentPercentages()\":[{\"notice\":\"Can't lower current percentages\"}],\"CantRevealYetWaitABitToBeAbleToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets too soon\"}],\"CantSetBaseURIAndPlaceholderAtTheSameTime()\":[{\"notice\":\"Can't set BaseURI and Placeholder at the same time\"}],\"CollectionSoldOut()\":[{\"notice\":\"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\"}],\"ContractMetadataURIAlreadyFixed()\":[{\"notice\":\"Contract MetadataURI already fixed\"}],\"InputSizeMismatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidAmount()\":[{\"notice\":\"Error thrown when the input amount is not valid\"}],\"InvalidDropDate()\":[{\"notice\":\"Invalid drop date\"}],\"InvalidInputSizesDontMatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidMintFee()\":[{\"notice\":\"Error thrown when the sent amount is not valid\"}],\"InvalidMintFeeForFreeMinting()\":[{\"notice\":\"Error thrown when sending funds to a free minting\"}],\"InvalidMintingType()\":[{\"notice\":\"Invalid collection minting type for the current minting function\"}],\"InvalidPercentageOrDiscountValues()\":[{\"notice\":\"Invalid percentage or discount values\"}],\"InvalidPhaseWithoutDate()\":[{\"notice\":\"Invalid phase can't be set without giving a date, use the proper functions\"}],\"InvalidRevenuePercentage()\":[{\"notice\":\"The input revenue percentages are not valid\"}],\"InvalidTokenId()\":[{\"notice\":\"Error thrown when trying to mint a token with a given invalid id\"}],\"MaxPerAddressExceeded()\":[{\"notice\":\"The address exceeded the max per address amount\"}],\"MetadataAlreadyFixed()\":[{\"notice\":\"Metadata is already fixed. Can't change metadata once fixed\"}],\"NewBaseURICantBeEmpty()\":[{\"notice\":\"New BaseURI can't be empty\"}],\"NewPlaceholderCantBeEmpty()\":[{\"notice\":\"New Placeholder can't be empty\"}],\"NoBaseURINorPlaceholderSet()\":[{\"notice\":\"No BaseURI nor Placeholder set\"}],\"NonTransferrableSoulboundNFT()\":[{\"notice\":\"Can't transfer a Soulbound Token (SBT)\"}],\"NotEnoughAmountToMint()\":[{\"notice\":\"Error thrown when trying to mint more than the allowance to mint\"}],\"NothingToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets with no amount to redeem\"}],\"OnlyAffiliateOrN2M()\":[{\"notice\":\"Only the given affiliate or N2M can call this function\"}],\"OnlyOwnerOrN2M()\":[{\"notice\":\"Only owner of N2M can call this function\"}],\"PresaleInvalidMintingType()\":[{\"notice\":\"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\"}],\"PresaleNotOpen()\":[{\"notice\":\"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\"}],\"PublicSaleNotOpen()\":[{\"notice\":\"Error thrown when trying to mint and the collection current phase is not `open`\"}],\"ReentrancyGuard()\":[{\"notice\":\"Reentrancy Guard protection\"}],\"RoyaltyFeeTooHigh()\":[{\"notice\":\"Royalty fee can't be higher than 10%\"}],\"SaleFinished()\":[{\"notice\":\"Error thrown when trying to mint but the sale has already finished\"}],\"SignatureExpired()\":[{\"notice\":\"The signature has expired\"}],\"SignatureMismatch()\":[{\"notice\":\"The given signature doesn't match the input values\"}],\"TokenAlreadyMinted()\":[{\"notice\":\"Error thrown when trying to mint a token with a given id which is already minted\"}],\"TotalSupplyMustBeGreaterThanZero()\":[{\"notice\":\"Invalid input. Total supply must be greater than zero\"}],\"WaitUntilDropDate()\":[{\"notice\":\"Can't mint until specified drop date\"}]},\"events\":{\"AffiliateSell(address)\":{\"notice\":\"This event is emitted when a token is minted using an affiliate\"}},\"kind\":\"user\",\"methods\":{\"airdropRandom(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\"},\"airdropSequential(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\"},\"airdropSpecify(address[],uint256[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\"},\"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)\":{\"notice\":\"To be called to create the collection. Can only be called once.\"},\"isMetadataFixed()\":{\"notice\":\"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\"},\"maxPerAddress()\":{\"notice\":\"Max amount of NFTs to be hold per address.\"},\"mint()\":{\"notice\":\"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256,address)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintCustomURITo(address,bytes32,bool)\":{\"notice\":\"Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\"},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\"},\"mintPrice()\":{\"notice\":\"Returns the minting price of one NFT.\"},\"mintRandomTo(address,uint256)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintRandomTo(address,uint256,address)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintSpecifyTo(address,uint256[])\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintSpecifyTo(address,uint256[],address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256)\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256,address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"redeemRandom()\":{\"notice\":\"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"totalSupply()\":{\"notice\":\"Returns the current total supply.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol\":\"IN2M_ERCBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCBase is IERC2981Upgradeable, IN2M_ERCStorage {\\n /// @notice To be called to create the collection. Can only be called once.\\n function initialize\\n (\\n string memory tokenName,\\n string memory tokenSymbol,\\n uint256 iMintPrice,\\n bytes32 baseURICIDHash,\\n bytes32 placeholderImageCIDHash,\\n RevenueAddress[] calldata revenueAddresses,\\n address iErc20PaymentAddress,\\n uint32 iTotalSupply,\\n uint16 iRoyaltyFee,\\n bool soulboundCollection,\\n MintingType iMintingType\\n ) external payable;\\n\\n /// @notice A descriptive name for a collection of NFTs in this contract\\n function name() external view returns (string memory);\\n\\n /// @notice An abbreviated name for NFTs in this contract\\n /// @return the collection symbol\\n function symbol() external view returns (string memory);\\n\\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\\n /// 3986. The URI may point to a JSON file that conforms to the \\\"ERC721\\n /// Metadata JSON Schema\\\".\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable; \\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds) external payable; \\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) external payable; \\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(address[] memory to, uint256[] memory tokenIds, bool soulbound) external payable;\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale (\\n address to, \\n uint256[] memory tokenIds,\\n bool freeMinting, \\n uint256 customFee, \\n uint256 maxAmount,\\n uint256 amount, \\n bool soulbound,\\n bytes calldata signature) payable external;\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256);\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256);\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view returns (uint16);\\n\\n}\\n\\n\",\"keccak256\":\"0xfded09e330fd4f048b81b38352d7c4480b09f691dc1360a6857f1b5d9681b7f4\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"../important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0xfda5b953ecaa603de1c1b1c789767ea9aa2e1b9d5e12b7e1af68c581e35c225f\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n */\\n function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n external\\n view\\n returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"AddressFiltered(address)":[{"notice":"Operator address is filtered"}],"CantLowerCurrentPercentages()":[{"notice":"Can't lower current percentages"}],"CantRevealYetWaitABitToBeAbleToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets too soon"}],"CantSetBaseURIAndPlaceholderAtTheSameTime()":[{"notice":"Can't set BaseURI and Placeholder at the same time"}],"CollectionSoldOut()":[{"notice":"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"}],"ContractMetadataURIAlreadyFixed()":[{"notice":"Contract MetadataURI already fixed"}],"InputSizeMismatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidAmount()":[{"notice":"Error thrown when the input amount is not valid"}],"InvalidDropDate()":[{"notice":"Invalid drop date"}],"InvalidInputSizesDontMatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidMintFee()":[{"notice":"Error thrown when the sent amount is not valid"}],"InvalidMintFeeForFreeMinting()":[{"notice":"Error thrown when sending funds to a free minting"}],"InvalidMintingType()":[{"notice":"Invalid collection minting type for the current minting function"}],"InvalidPercentageOrDiscountValues()":[{"notice":"Invalid percentage or discount values"}],"InvalidPhaseWithoutDate()":[{"notice":"Invalid phase can't be set without giving a date, use the proper functions"}],"InvalidRevenuePercentage()":[{"notice":"The input revenue percentages are not valid"}],"InvalidTokenId()":[{"notice":"Error thrown when trying to mint a token with a given invalid id"}],"MaxPerAddressExceeded()":[{"notice":"The address exceeded the max per address amount"}],"MetadataAlreadyFixed()":[{"notice":"Metadata is already fixed. Can't change metadata once fixed"}],"NewBaseURICantBeEmpty()":[{"notice":"New BaseURI can't be empty"}],"NewPlaceholderCantBeEmpty()":[{"notice":"New Placeholder can't be empty"}],"NoBaseURINorPlaceholderSet()":[{"notice":"No BaseURI nor Placeholder set"}],"NonTransferrableSoulboundNFT()":[{"notice":"Can't transfer a Soulbound Token (SBT)"}],"NotEnoughAmountToMint()":[{"notice":"Error thrown when trying to mint more than the allowance to mint"}],"NothingToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets with no amount to redeem"}],"OnlyAffiliateOrN2M()":[{"notice":"Only the given affiliate or N2M can call this function"}],"OnlyOwnerOrN2M()":[{"notice":"Only owner of N2M can call this function"}],"PresaleInvalidMintingType()":[{"notice":"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"}],"PresaleNotOpen()":[{"notice":"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"}],"PublicSaleNotOpen()":[{"notice":"Error thrown when trying to mint and the collection current phase is not `open`"}],"ReentrancyGuard()":[{"notice":"Reentrancy Guard protection"}],"RoyaltyFeeTooHigh()":[{"notice":"Royalty fee can't be higher than 10%"}],"SaleFinished()":[{"notice":"Error thrown when trying to mint but the sale has already finished"}],"SignatureExpired()":[{"notice":"The signature has expired"}],"SignatureMismatch()":[{"notice":"The given signature doesn't match the input values"}],"TokenAlreadyMinted()":[{"notice":"Error thrown when trying to mint a token with a given id which is already minted"}],"TotalSupplyMustBeGreaterThanZero()":[{"notice":"Invalid input. Total supply must be greater than zero"}],"WaitUntilDropDate()":[{"notice":"Can't mint until specified drop date"}]},"events":{"AffiliateSell(address)":{"notice":"This event is emitted when a token is minted using an affiliate"}},"kind":"user","methods":{"airdropRandom(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`."},"airdropSequential(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`."},"airdropSpecify(address[],uint256[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`."},"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":{"notice":"To be called to create the collection. Can only be called once."},"isMetadataFixed()":{"notice":"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."},"maxPerAddress()":{"notice":"Max amount of NFTs to be hold per address."},"mint()":{"notice":"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256)":{"notice":"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256,address)":{"notice":"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintCustomURITo(address,bytes32,bool)":{"notice":"Mints one NFT to `to` address. Requires `minting type` to be `customURI`."},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"notice":"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale."},"mintPrice()":{"notice":"Returns the minting price of one NFT."},"mintRandomTo(address,uint256)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintRandomTo(address,uint256,address)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintSpecifyTo(address,uint256[])":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintSpecifyTo(address,uint256[],address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256)":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256,address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"redeemRandom()":{"notice":"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs."},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"},"tokenURI(uint256)":{"notice":"A distinct Uniform Resource Identifier (URI) for a given asset."},"totalSupply()":{"notice":"Returns the current total supply."}},"version":1}}},"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol":{"IN2M_ERCStorage":{"abi":[{"inputs":[{"internalType":"address","name":"filtered","type":"address"}],"name":"AddressFiltered","type":"error"},{"inputs":[],"name":"CantLowerCurrentPercentages","type":"error"},{"inputs":[],"name":"CantRevealYetWaitABitToBeAbleToRedeem","type":"error"},{"inputs":[],"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","type":"error"},{"inputs":[],"name":"CollectionSoldOut","type":"error"},{"inputs":[],"name":"ContractMetadataURIAlreadyFixed","type":"error"},{"inputs":[],"name":"InputSizeMismatch","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidDropDate","type":"error"},{"inputs":[],"name":"InvalidInputSizesDontMatch","type":"error"},{"inputs":[],"name":"InvalidMintFee","type":"error"},{"inputs":[],"name":"InvalidMintFeeForFreeMinting","type":"error"},{"inputs":[],"name":"InvalidMintingType","type":"error"},{"inputs":[],"name":"InvalidPercentageOrDiscountValues","type":"error"},{"inputs":[],"name":"InvalidPhaseWithoutDate","type":"error"},{"inputs":[],"name":"InvalidRevenuePercentage","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MaxPerAddressExceeded","type":"error"},{"inputs":[],"name":"MetadataAlreadyFixed","type":"error"},{"inputs":[],"name":"NewBaseURICantBeEmpty","type":"error"},{"inputs":[],"name":"NewPlaceholderCantBeEmpty","type":"error"},{"inputs":[],"name":"NoBaseURINorPlaceholderSet","type":"error"},{"inputs":[],"name":"NonTransferrableSoulboundNFT","type":"error"},{"inputs":[],"name":"NotEnoughAmountToMint","type":"error"},{"inputs":[],"name":"NothingToRedeem","type":"error"},{"inputs":[],"name":"OnlyAffiliateOrN2M","type":"error"},{"inputs":[],"name":"OnlyOwnerOrN2M","type":"error"},{"inputs":[],"name":"PresaleInvalidMintingType","type":"error"},{"inputs":[],"name":"PresaleNotOpen","type":"error"},{"inputs":[],"name":"PublicSaleNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"RoyaltyFeeTooHigh","type":"error"},{"inputs":[],"name":"SaleFinished","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[],"name":"SignatureMismatch","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TotalSupplyMustBeGreaterThanZero","type":"error"},{"inputs":[],"name":"WaitUntilDropDate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"affiliate","type":"address"}],"name":"AffiliateSell","type":"event"},{"inputs":[],"name":"isMetadataFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"devdoc":{"events":{"AffiliateSell(address)":{"params":{"affiliate":"The affiliate address"}}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isMetadataFixed()":"0de77eb8","n2mVersion()":"cb93c48f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filtered\",\"type\":\"address\"}],\"name\":\"AddressFiltered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantLowerCurrentPercentages\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantRevealYetWaitABitToBeAbleToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSetBaseURIAndPlaceholderAtTheSameTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CollectionSoldOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractMetadataURIAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputSizeMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDropDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputSizesDontMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFeeForFreeMinting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercentageOrDiscountValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPhaseWithoutDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevenuePercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerAddressExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetadataAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBaseURICantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPlaceholderCantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseURINorPlaceholderSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonTransferrableSoulboundNFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughAmountToMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAffiliateOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOwnerOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleInvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PublicSaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoyaltyFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaleFinished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyMinted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WaitUntilDropDate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"AffiliateSell\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"isMetadataFixed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AffiliateSell(address)\":{\"params\":{\"affiliate\":\"The affiliate address\"}}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"AddressFiltered(address)\":[{\"notice\":\"Operator address is filtered\"}],\"CantLowerCurrentPercentages()\":[{\"notice\":\"Can't lower current percentages\"}],\"CantRevealYetWaitABitToBeAbleToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets too soon\"}],\"CantSetBaseURIAndPlaceholderAtTheSameTime()\":[{\"notice\":\"Can't set BaseURI and Placeholder at the same time\"}],\"CollectionSoldOut()\":[{\"notice\":\"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\"}],\"ContractMetadataURIAlreadyFixed()\":[{\"notice\":\"Contract MetadataURI already fixed\"}],\"InputSizeMismatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidAmount()\":[{\"notice\":\"Error thrown when the input amount is not valid\"}],\"InvalidDropDate()\":[{\"notice\":\"Invalid drop date\"}],\"InvalidInputSizesDontMatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidMintFee()\":[{\"notice\":\"Error thrown when the sent amount is not valid\"}],\"InvalidMintFeeForFreeMinting()\":[{\"notice\":\"Error thrown when sending funds to a free minting\"}],\"InvalidMintingType()\":[{\"notice\":\"Invalid collection minting type for the current minting function\"}],\"InvalidPercentageOrDiscountValues()\":[{\"notice\":\"Invalid percentage or discount values\"}],\"InvalidPhaseWithoutDate()\":[{\"notice\":\"Invalid phase can't be set without giving a date, use the proper functions\"}],\"InvalidRevenuePercentage()\":[{\"notice\":\"The input revenue percentages are not valid\"}],\"InvalidTokenId()\":[{\"notice\":\"Error thrown when trying to mint a token with a given invalid id\"}],\"MaxPerAddressExceeded()\":[{\"notice\":\"The address exceeded the max per address amount\"}],\"MetadataAlreadyFixed()\":[{\"notice\":\"Metadata is already fixed. Can't change metadata once fixed\"}],\"NewBaseURICantBeEmpty()\":[{\"notice\":\"New BaseURI can't be empty\"}],\"NewPlaceholderCantBeEmpty()\":[{\"notice\":\"New Placeholder can't be empty\"}],\"NoBaseURINorPlaceholderSet()\":[{\"notice\":\"No BaseURI nor Placeholder set\"}],\"NonTransferrableSoulboundNFT()\":[{\"notice\":\"Can't transfer a Soulbound Token (SBT)\"}],\"NotEnoughAmountToMint()\":[{\"notice\":\"Error thrown when trying to mint more than the allowance to mint\"}],\"NothingToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets with no amount to redeem\"}],\"OnlyAffiliateOrN2M()\":[{\"notice\":\"Only the given affiliate or N2M can call this function\"}],\"OnlyOwnerOrN2M()\":[{\"notice\":\"Only owner of N2M can call this function\"}],\"PresaleInvalidMintingType()\":[{\"notice\":\"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\"}],\"PresaleNotOpen()\":[{\"notice\":\"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\"}],\"PublicSaleNotOpen()\":[{\"notice\":\"Error thrown when trying to mint and the collection current phase is not `open`\"}],\"ReentrancyGuard()\":[{\"notice\":\"Reentrancy Guard protection\"}],\"RoyaltyFeeTooHigh()\":[{\"notice\":\"Royalty fee can't be higher than 10%\"}],\"SaleFinished()\":[{\"notice\":\"Error thrown when trying to mint but the sale has already finished\"}],\"SignatureExpired()\":[{\"notice\":\"The signature has expired\"}],\"SignatureMismatch()\":[{\"notice\":\"The given signature doesn't match the input values\"}],\"TokenAlreadyMinted()\":[{\"notice\":\"Error thrown when trying to mint a token with a given id which is already minted\"}],\"TotalSupplyMustBeGreaterThanZero()\":[{\"notice\":\"Invalid input. Total supply must be greater than zero\"}],\"WaitUntilDropDate()\":[{\"notice\":\"Can't mint until specified drop date\"}]},\"events\":{\"AffiliateSell(address)\":{\"notice\":\"This event is emitted when a token is minted using an affiliate\"}},\"kind\":\"user\",\"methods\":{\"isMetadataFixed()\":{\"notice\":\"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\":\"IN2M_ERCStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"../important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0xfda5b953ecaa603de1c1b1c789767ea9aa2e1b9d5e12b7e1af68c581e35c225f\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"AddressFiltered(address)":[{"notice":"Operator address is filtered"}],"CantLowerCurrentPercentages()":[{"notice":"Can't lower current percentages"}],"CantRevealYetWaitABitToBeAbleToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets too soon"}],"CantSetBaseURIAndPlaceholderAtTheSameTime()":[{"notice":"Can't set BaseURI and Placeholder at the same time"}],"CollectionSoldOut()":[{"notice":"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"}],"ContractMetadataURIAlreadyFixed()":[{"notice":"Contract MetadataURI already fixed"}],"InputSizeMismatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidAmount()":[{"notice":"Error thrown when the input amount is not valid"}],"InvalidDropDate()":[{"notice":"Invalid drop date"}],"InvalidInputSizesDontMatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidMintFee()":[{"notice":"Error thrown when the sent amount is not valid"}],"InvalidMintFeeForFreeMinting()":[{"notice":"Error thrown when sending funds to a free minting"}],"InvalidMintingType()":[{"notice":"Invalid collection minting type for the current minting function"}],"InvalidPercentageOrDiscountValues()":[{"notice":"Invalid percentage or discount values"}],"InvalidPhaseWithoutDate()":[{"notice":"Invalid phase can't be set without giving a date, use the proper functions"}],"InvalidRevenuePercentage()":[{"notice":"The input revenue percentages are not valid"}],"InvalidTokenId()":[{"notice":"Error thrown when trying to mint a token with a given invalid id"}],"MaxPerAddressExceeded()":[{"notice":"The address exceeded the max per address amount"}],"MetadataAlreadyFixed()":[{"notice":"Metadata is already fixed. Can't change metadata once fixed"}],"NewBaseURICantBeEmpty()":[{"notice":"New BaseURI can't be empty"}],"NewPlaceholderCantBeEmpty()":[{"notice":"New Placeholder can't be empty"}],"NoBaseURINorPlaceholderSet()":[{"notice":"No BaseURI nor Placeholder set"}],"NonTransferrableSoulboundNFT()":[{"notice":"Can't transfer a Soulbound Token (SBT)"}],"NotEnoughAmountToMint()":[{"notice":"Error thrown when trying to mint more than the allowance to mint"}],"NothingToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets with no amount to redeem"}],"OnlyAffiliateOrN2M()":[{"notice":"Only the given affiliate or N2M can call this function"}],"OnlyOwnerOrN2M()":[{"notice":"Only owner of N2M can call this function"}],"PresaleInvalidMintingType()":[{"notice":"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"}],"PresaleNotOpen()":[{"notice":"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"}],"PublicSaleNotOpen()":[{"notice":"Error thrown when trying to mint and the collection current phase is not `open`"}],"ReentrancyGuard()":[{"notice":"Reentrancy Guard protection"}],"RoyaltyFeeTooHigh()":[{"notice":"Royalty fee can't be higher than 10%"}],"SaleFinished()":[{"notice":"Error thrown when trying to mint but the sale has already finished"}],"SignatureExpired()":[{"notice":"The signature has expired"}],"SignatureMismatch()":[{"notice":"The given signature doesn't match the input values"}],"TokenAlreadyMinted()":[{"notice":"Error thrown when trying to mint a token with a given id which is already minted"}],"TotalSupplyMustBeGreaterThanZero()":[{"notice":"Invalid input. Total supply must be greater than zero"}],"WaitUntilDropDate()":[{"notice":"Can't mint until specified drop date"}]},"events":{"AffiliateSell(address)":{"notice":"This event is emitted when a token is minted using an affiliate"}},"kind":"user","methods":{"isMetadataFixed()":{"notice":"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."}},"version":1}}},"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol":{"IOperatorFilterRegistry":{"abi":[{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"codeHashOf","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"registrantToCopy","type":"address"}],"name":"copyEntriesOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"filteredCodeHashAt","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"filteredCodeHashes","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"filteredOperatorAt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"filteredOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"bytes32","name":"codeHash","type":"bytes32"}],"name":"isCodeHashFiltered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"operatorWithCode","type":"address"}],"name":"isCodeHashOfFiltered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isOperatorAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isOperatorFiltered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"registrantToCopy","type":"address"}],"name":"registerAndCopyEntries","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"subscription","type":"address"}],"name":"registerAndSubscribe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"registrantToSubscribe","type":"address"}],"name":"subscribe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"subscriberAt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"}],"name":"subscribers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"subscriptionOf","outputs":[{"internalType":"address","name":"registrant","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"bool","name":"copyExistingEntries","type":"bool"}],"name":"unsubscribe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"bytes32","name":"codehash","type":"bytes32"},{"internalType":"bool","name":"filtered","type":"bool"}],"name":"updateCodeHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"bytes32[]","name":"codeHashes","type":"bytes32[]"},{"internalType":"bool","name":"filtered","type":"bool"}],"name":"updateCodeHashes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"filtered","type":"bool"}],"name":"updateOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bool","name":"filtered","type":"bool"}],"name":"updateOperators","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"codeHashOf(address)":"bbd652c7","copyEntriesOf(address,address)":"1e06b4b4","filteredCodeHashAt(address,uint256)":"a6529eb5","filteredCodeHashes(address)":"22fa2762","filteredOperatorAt(address,uint256)":"3f1cc5fa","filteredOperators(address)":"c4308805","isCodeHashFiltered(address,bytes32)":"6af0c315","isCodeHashOfFiltered(address,address)":"5eae3173","isOperatorAllowed(address,address)":"c6171134","isOperatorFiltered(address,address)":"e4aecb54","isRegistered(address)":"c3c5a547","register(address)":"4420e486","registerAndCopyEntries(address,address)":"a0af2903","registerAndSubscribe(address,address)":"7d3e3dbe","subscribe(address,address)":"b314d414","subscriberAt(address,uint256)":"55940e51","subscribers(address)":"5745ae28","subscriptionOf(address)":"3c5030bb","unsubscribe(address,bool)":"34a0dc10","updateCodeHash(address,bytes32,bool)":"712fc00b","updateCodeHashes(address,bytes32[],bool)":"063298b6","updateOperator(address,address,bool)":"a2f367ab","updateOperators(address,address[],bool)":"a14584c1"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"codeHashOf\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"registrantToCopy\",\"type\":\"address\"}],\"name\":\"copyEntriesOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"filteredCodeHashAt\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"filteredCodeHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"filteredOperatorAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"filteredOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"codeHash\",\"type\":\"bytes32\"}],\"name\":\"isCodeHashFiltered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorWithCode\",\"type\":\"address\"}],\"name\":\"isCodeHashOfFiltered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorFiltered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"registrantToCopy\",\"type\":\"address\"}],\"name\":\"registerAndCopyEntries\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"subscription\",\"type\":\"address\"}],\"name\":\"registerAndSubscribe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"registrantToSubscribe\",\"type\":\"address\"}],\"name\":\"subscribe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"subscriberAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"}],\"name\":\"subscribers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"subscriptionOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"copyExistingEntries\",\"type\":\"bool\"}],\"name\":\"unsubscribe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"codehash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"filtered\",\"type\":\"bool\"}],\"name\":\"updateCodeHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"codeHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"bool\",\"name\":\"filtered\",\"type\":\"bool\"}],\"name\":\"updateCodeHashes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"filtered\",\"type\":\"bool\"}],\"name\":\"updateOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"filtered\",\"type\":\"bool\"}],\"name\":\"updateOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\":\"IOperatorFilterRegistry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IOperatorFilterRegistry {\\n function isOperatorAllowed(address registrant, address operator) external view returns (bool);\\n function register(address registrant) external;\\n function registerAndSubscribe(address registrant, address subscription) external;\\n function registerAndCopyEntries(address registrant, address registrantToCopy) external;\\n function updateOperator(address registrant, address operator, bool filtered) external;\\n function updateOperators(address registrant, address[] calldata operators, bool filtered) external;\\n function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;\\n function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;\\n function subscribe(address registrant, address registrantToSubscribe) external;\\n function unsubscribe(address registrant, bool copyExistingEntries) external;\\n function subscriptionOf(address addr) external returns (address registrant);\\n function subscribers(address registrant) external returns (address[] memory);\\n function subscriberAt(address registrant, uint256 index) external returns (address);\\n function copyEntriesOf(address registrant, address registrantToCopy) external;\\n function isOperatorFiltered(address registrant, address operator) external returns (bool);\\n function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);\\n function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);\\n function filteredOperators(address addr) external returns (address[] memory);\\n function filteredCodeHashes(address addr) external returns (bytes32[] memory);\\n function filteredOperatorAt(address registrant, uint256 index) external returns (address);\\n function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);\\n function isRegistered(address addr) external view returns (bool);\\n function codeHashOf(address addr) external view returns (bytes32);\\n}\",\"keccak256\":\"0x94297c604eea7c0dcac072ec8257d58f3927fc2c1f22b41c9f78d82e4a8cf5a5\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol":{"NFTOwnableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"The NFTs2Me Team","custom:security-contact":"security@nfts2me.com","custom:terms-of-service":"https://nfts2me.com/terms-of-service/","custom:website":"https://nfts2me.com/","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"returns":{"_0":"The address of the owner."}}},"title":"NFTs2Me.com Smart Contracts","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The NFTs2Me Team\",\"custom:security-contact\":\"security@nfts2me.com\",\"custom:terms-of-service\":\"https://nfts2me.com/terms-of-service/\",\"custom:website\":\"https://nfts2me.com/\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"returns\":{\"_0\":\"The address of the owner.\"}}},\"title\":\"NFTs2Me.com Smart Contracts\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"owner()\":{\"notice\":\"Returns the address of the current collection owner.\"}},\"notice\":\"Read our terms of service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\":\"NFTOwnableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract NFTOwnableUpgradeable is Initializable, ContextUpgradeable {\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n modifier onlyStrictOwner() {\\n _checkStrictOwner();\\n _;\\n }\\n\\n modifier onlyOwnerOrN2M() {\\n _checkOwnerOrN2M();\\n _;\\n }\\n\\n modifier onlyN2M() {\\n _checkN2M();\\n _;\\n }\\n\\n /// @notice Returns the address of the current collection owner.\\n /// @return The address of the owner.\\n function owner() public view virtual returns (address);\\n function _strictOwner() internal view virtual returns (address);\\n function _getN2MFeeAddress() internal view virtual returns (address);\\n\\n function _checkOwner() internal view virtual {\\n require(owner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkStrictOwner() internal view virtual {\\n require(_strictOwner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkOwnerOrN2M() internal view virtual {\\n require(owner() == msg.sender || _getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkN2M() internal view virtual {\\n require(_getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n}\",\"keccak256\":\"0x0b3a2ca7a3f09ec6c3e387f9102e32bf755baf64986076d114f584fea0f17b38\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol:NFTOwnableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol:NFTOwnableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol:NFTOwnableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"owner()":{"notice":"Returns the address of the current collection owner."}},"notice":"Read our terms of service","version":1}}},"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol":{"IVotesUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts. _Available since v4.5._","events":{"DelegateChanged(address,address,address)":{"details":"Emitted when an account changes their delegate."},"DelegateVotesChanged(address,uint256,uint256)":{"details":"Emitted when a token transfer or delegate change results in changes to a delegate's number of votes."}},"kind":"dev","methods":{"delegate(address)":{"details":"Delegates votes from the sender to `delegatee`."},"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Delegates votes from signer to `delegatee`."},"delegates(address)":{"details":"Returns the delegate that `account` has chosen."},"getPastTotalSupply(uint256)":{"details":"Returns the total supply of votes available at the end of a past block (`blockNumber`). NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote."},"getPastVotes(address,uint256)":{"details":"Returns the amount of votes that `account` had at the end of a past block (`blockNumber`)."},"getVotes(address)":{"details":"Returns the current amount of votes that `account` has."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"delegate(address)":"5c19a95c","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"c3cda520","delegates(address)":"587cde1e","getPastTotalSupply(uint256)":"8e539e8c","getPastVotes(address,uint256)":"3a46b1a8","getVotes(address)":"9ab24eb0"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts. _Available since v4.5._\",\"events\":{\"DelegateChanged(address,address,address)\":{\"details\":\"Emitted when an account changes their delegate.\"},\"DelegateVotesChanged(address,uint256,uint256)\":{\"details\":\"Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\"}},\"kind\":\"dev\",\"methods\":{\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at the end of a past block (`blockNumber`). NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":\"IVotesUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/IVotes.sol)\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\\n *\\n * _Available since v4.5._\\n */\\ninterface IVotesUpgradeable {\\n /**\\n * @dev Emitted when an account changes their delegate.\\n */\\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\\n\\n /**\\n * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\\n */\\n event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance);\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n */\\n function getPastVotes(address account, uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n */\\n function getPastTotalSupply(uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) external view returns (address);\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) external;\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n}\\n\",\"keccak256\":\"0xe8e2d2f70db1913260634f710cc057d669b06eccf4dca27e18b79c3bbb101da6\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol":{"VotesUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This is a base abstract contract that tracks voting units, which are a measure of voting power that can be transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of \"representative\" that will pool delegated voting units from different accounts and can then use it to vote in decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative. This contract is often combined with a token contract such that voting units correspond to token units. For an example, see {ERC721Votes}. The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the cost of this history tracking optional. When using this module the derived contract must implement {_getVotingUnits} (for example, make it return {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the previous example, it would be included in {ERC721-_beforeTokenTransfer}). _Available since v4.5._","events":{"DelegateChanged(address,address,address)":{"details":"Emitted when an account changes their delegate."},"DelegateVotesChanged(address,uint256,uint256)":{"details":"Emitted when a token transfer or delegate change results in changes to a delegate's number of votes."},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the contract's {EIP712} domain separator."},"delegate(address)":{"details":"Delegates votes from the sender to `delegatee`."},"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Delegates votes from signer to `delegatee`."},"delegates(address)":{"details":"Returns the delegate that `account` has chosen."},"getPastTotalSupply(uint256)":{"details":"Returns the total supply of votes available at the end of a past block (`blockNumber`). NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `blockNumber` must have been already mined"},"getPastVotes(address,uint256)":{"details":"Returns the amount of votes that `account` had at the end of a past block (`blockNumber`). Requirements: - `blockNumber` must have been already mined"},"getVotes(address)":{"details":"Returns the current amount of votes that `account` has."},"nonces(address)":{"details":"Returns an address nonce."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","delegate(address)":"5c19a95c","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"c3cda520","delegates(address)":"587cde1e","getPastTotalSupply(uint256)":"8e539e8c","getPastVotes(address,uint256)":"3a46b1a8","getVotes(address)":"9ab24eb0","nonces(address)":"7ecebe00"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is a base abstract contract that tracks voting units, which are a measure of voting power that can be transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of \\\"representative\\\" that will pool delegated voting units from different accounts and can then use it to vote in decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative. This contract is often combined with a token contract such that voting units correspond to token units. For an example, see {ERC721Votes}. The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the cost of this history tracking optional. When using this module the derived contract must implement {_getVotingUnits} (for example, make it return {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the previous example, it would be included in {ERC721-_beforeTokenTransfer}). _Available since v4.5._\",\"events\":{\"DelegateChanged(address,address,address)\":{\"details\":\"Emitted when an account changes their delegate.\"},\"DelegateVotesChanged(address,uint256,uint256)\":{\"details\":\"Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the contract's {EIP712} domain separator.\"},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at the end of a past block (`blockNumber`). NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `blockNumber` must have been already mined\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at the end of a past block (`blockNumber`). Requirements: - `blockNumber` must have been already mined\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"nonces(address)\":{\"details\":\"Returns an address nonce.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol\":\"VotesUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/IVotes.sol)\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\\n *\\n * _Available since v4.5._\\n */\\ninterface IVotesUpgradeable {\\n /**\\n * @dev Emitted when an account changes their delegate.\\n */\\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\\n\\n /**\\n * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\\n */\\n event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance);\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n */\\n function getPastVotes(address account, uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n */\\n function getPastTotalSupply(uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) external view returns (address);\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) external;\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n}\\n\",\"keccak256\":\"0xe8e2d2f70db1913260634f710cc057d669b06eccf4dca27e18b79c3bbb101da6\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (governance/utils/Votes.sol)\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/CountersUpgradeable.sol\\\";\\nimport \\\"../../utils/CheckpointsUpgradeable.sol\\\";\\nimport \\\"../../utils/cryptography/EIP712Upgradeable.sol\\\";\\nimport \\\"./IVotesUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This is a base abstract contract that tracks voting units, which are a measure of voting power that can be\\n * transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of\\n * \\\"representative\\\" that will pool delegated voting units from different accounts and can then use it to vote in\\n * decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to\\n * delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative.\\n *\\n * This contract is often combined with a token contract such that voting units correspond to token units. For an\\n * example, see {ERC721Votes}.\\n *\\n * The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed\\n * at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the\\n * cost of this history tracking optional.\\n *\\n * When using this module the derived contract must implement {_getVotingUnits} (for example, make it return\\n * {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the\\n * previous example, it would be included in {ERC721-_beforeTokenTransfer}).\\n *\\n * _Available since v4.5._\\n */\\nabstract contract VotesUpgradeable is Initializable, IVotesUpgradeable, ContextUpgradeable, EIP712Upgradeable {\\n function __Votes_init() internal onlyInitializing {\\n }\\n\\n function __Votes_init_unchained() internal onlyInitializing {\\n }\\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\\n using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n bytes32 private constant _DELEGATION_TYPEHASH =\\n keccak256(\\\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\\\");\\n\\n mapping(address => address) private _delegation;\\n mapping(address => CheckpointsUpgradeable.History) private _delegateCheckpoints;\\n CheckpointsUpgradeable.History private _totalCheckpoints;\\n\\n mapping(address => CountersUpgradeable.Counter) private _nonces;\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) public view virtual override returns (uint256) {\\n return _delegateCheckpoints[account].latest();\\n }\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n *\\n * Requirements:\\n *\\n * - `blockNumber` must have been already mined\\n */\\n function getPastVotes(address account, uint256 blockNumber) public view virtual override returns (uint256) {\\n return _delegateCheckpoints[account].getAtProbablyRecentBlock(blockNumber);\\n }\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n *\\n * Requirements:\\n *\\n * - `blockNumber` must have been already mined\\n */\\n function getPastTotalSupply(uint256 blockNumber) public view virtual override returns (uint256) {\\n require(blockNumber < block.number, \\\"Votes: block not yet mined\\\");\\n return _totalCheckpoints.getAtProbablyRecentBlock(blockNumber);\\n }\\n\\n /**\\n * @dev Returns the current total supply of votes.\\n */\\n function _getTotalSupply() internal view virtual returns (uint256) {\\n return _totalCheckpoints.latest();\\n }\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) public view virtual override returns (address) {\\n return _delegation[account];\\n }\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) public virtual override {\\n address account = _msgSender();\\n _delegate(account, delegatee);\\n }\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public virtual override {\\n require(block.timestamp <= expiry, \\\"Votes: signature expired\\\");\\n address signer = ECDSAUpgradeable.recover(\\n _hashTypedDataV4(keccak256(abi.encode(_DELEGATION_TYPEHASH, delegatee, nonce, expiry))),\\n v,\\n r,\\n s\\n );\\n require(nonce == _useNonce(signer), \\\"Votes: invalid nonce\\\");\\n _delegate(signer, delegatee);\\n }\\n\\n /**\\n * @dev Delegate all of `account`'s voting units to `delegatee`.\\n *\\n * Emits events {IVotes-DelegateChanged} and {IVotes-DelegateVotesChanged}.\\n */\\n function _delegate(address account, address delegatee) internal virtual {\\n address oldDelegate = delegates(account);\\n _delegation[account] = delegatee;\\n\\n emit DelegateChanged(account, oldDelegate, delegatee);\\n _moveDelegateVotes(oldDelegate, delegatee, _getVotingUnits(account));\\n }\\n\\n /**\\n * @dev Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to`\\n * should be zero. Total supply of voting units will be adjusted with mints and burns.\\n */\\n function _transferVotingUnits(\\n address from,\\n address to,\\n uint256 amount\\n ) internal virtual {\\n if (from == address(0)) {\\n _totalCheckpoints.push(_add, amount);\\n }\\n if (to == address(0)) {\\n _totalCheckpoints.push(_subtract, amount);\\n }\\n _moveDelegateVotes(delegates(from), delegates(to), amount);\\n }\\n\\n /**\\n * @dev Moves delegated votes from one delegate to another.\\n */\\n function _moveDelegateVotes(\\n address from,\\n address to,\\n uint256 amount\\n ) private {\\n if (from != to && amount > 0) {\\n if (from != address(0)) {\\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[from].push(_subtract, amount);\\n emit DelegateVotesChanged(from, oldValue, newValue);\\n }\\n if (to != address(0)) {\\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[to].push(_add, amount);\\n emit DelegateVotesChanged(to, oldValue, newValue);\\n }\\n }\\n }\\n\\n function _add(uint256 a, uint256 b) private pure returns (uint256) {\\n return a + b;\\n }\\n\\n function _subtract(uint256 a, uint256 b) private pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Consumes a nonce.\\n *\\n * Returns the current value and increments nonce.\\n */\\n function _useNonce(address owner) internal virtual returns (uint256 current) {\\n CountersUpgradeable.Counter storage nonce = _nonces[owner];\\n current = nonce.current();\\n nonce.increment();\\n }\\n\\n /**\\n * @dev Returns an address nonce.\\n */\\n function nonces(address owner) public view virtual returns (uint256) {\\n return _nonces[owner].current();\\n }\\n\\n /**\\n * @dev Returns the contract's {EIP712} domain separator.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32) {\\n return _domainSeparatorV4();\\n }\\n\\n /**\\n * @dev Must return the voting units held by an account.\\n */\\n function _getVotingUnits(address) internal view virtual returns (uint256);\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[46] private __gap;\\n}\\n\",\"keccak256\":\"0x03d4e5b8237229d370c92981f6642e67c075c3cc4f759a76ea4c73a2b27d36e5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(History storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _blockNumber,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace224 storage self,\\n uint32 key,\\n uint224 value\\n ) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _key,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint224[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint224 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace160 storage self,\\n uint96 key,\\n uint160 value\\n ) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint96 _key,\\n uint160 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint160 value\\n ) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint160[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint160 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x92fe8e1836627ba1baa62a2d4bd76c52ccfe53fec6650b609af33918be967a82\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n}\\n\",\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x12f297cafe6e2847ae0378502f155654d0764b532a9873c8afe4350950fa7971\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/EIP712.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ECDSAUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * _Available since v3.4._\\n *\\n * @custom:storage-size 52\\n */\\nabstract contract EIP712Upgradeable is Initializable {\\n /* solhint-disable var-name-mixedcase */\\n bytes32 private _HASHED_NAME;\\n bytes32 private _HASHED_VERSION;\\n bytes32 private constant _TYPE_HASH = keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\");\\n\\n /* solhint-enable var-name-mixedcase */\\n\\n /**\\n * @dev Initializes the domain separator and parameter caches.\\n *\\n * The meaning of `name` and `version` is specified in\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n *\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n * - `version`: the current major version of the signing domain.\\n *\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n * contract upgrade].\\n */\\n function __EIP712_init(string memory name, string memory version) internal onlyInitializing {\\n __EIP712_init_unchained(name, version);\\n }\\n\\n function __EIP712_init_unchained(string memory name, string memory version) internal onlyInitializing {\\n bytes32 hashedName = keccak256(bytes(name));\\n bytes32 hashedVersion = keccak256(bytes(version));\\n _HASHED_NAME = hashedName;\\n _HASHED_VERSION = hashedVersion;\\n }\\n\\n /**\\n * @dev Returns the domain separator for the current chain.\\n */\\n function _domainSeparatorV4() internal view returns (bytes32) {\\n return _buildDomainSeparator(_TYPE_HASH, _EIP712NameHash(), _EIP712VersionHash());\\n }\\n\\n function _buildDomainSeparator(\\n bytes32 typeHash,\\n bytes32 nameHash,\\n bytes32 versionHash\\n ) private view returns (bytes32) {\\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\\n }\\n\\n /**\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\n *\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n *\\n * ```solidity\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n * keccak256(\\\"Mail(address to,string contents)\\\"),\\n * mailTo,\\n * keccak256(bytes(mailContents))\\n * )));\\n * address signer = ECDSA.recover(digest, signature);\\n * ```\\n */\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n return ECDSAUpgradeable.toTypedDataHash(_domainSeparatorV4(), structHash);\\n }\\n\\n /**\\n * @dev The hash of the name parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712NameHash() internal virtual view returns (bytes32) {\\n return _HASHED_NAME;\\n }\\n\\n /**\\n * @dev The hash of the version parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712VersionHash() internal virtual view returns (bytes32) {\\n return _HASHED_VERSION;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x3017aded62c4a2b9707f5f06f92934e592c1c9b6f384b91b51340a6d5f841931\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":7108,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"_HASHED_NAME","offset":0,"slot":"51","type":"t_bytes32"},{"astId":7110,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"_HASHED_VERSION","offset":0,"slot":"52","type":"t_bytes32"},{"astId":7248,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"__gap","offset":0,"slot":"53","type":"t_array(t_uint256)50_storage"},{"astId":850,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"_delegation","offset":0,"slot":"103","type":"t_mapping(t_address,t_address)"},{"astId":855,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"_delegateCheckpoints","offset":0,"slot":"104","type":"t_mapping(t_address,t_struct(History)5086_storage)"},{"astId":858,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"_totalCheckpoints","offset":0,"slot":"105","type":"t_struct(History)5086_storage"},{"astId":863,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"_nonces","offset":0,"slot":"106","type":"t_mapping(t_address,t_struct(Counter)6495_storage)"},{"astId":1277,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"__gap","offset":0,"slot":"107","type":"t_array(t_uint256)46_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Checkpoint)5091_storage)dyn_storage":{"base":"t_struct(Checkpoint)5091_storage","encoding":"dynamic_array","label":"struct CheckpointsUpgradeable.Checkpoint[]","numberOfBytes":"32"},"t_array(t_uint256)46_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[46]","numberOfBytes":"1472"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_address)":{"encoding":"mapping","key":"t_address","label":"mapping(address => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_address,t_struct(Counter)6495_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct CountersUpgradeable.Counter)","numberOfBytes":"32","value":"t_struct(Counter)6495_storage"},"t_mapping(t_address,t_struct(History)5086_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct CheckpointsUpgradeable.History)","numberOfBytes":"32","value":"t_struct(History)5086_storage"},"t_struct(Checkpoint)5091_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.Checkpoint","members":[{"astId":5088,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"_blockNumber","offset":0,"slot":"0","type":"t_uint32"},{"astId":5090,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"_value","offset":4,"slot":"0","type":"t_uint224"}],"numberOfBytes":"32"},"t_struct(Counter)6495_storage":{"encoding":"inplace","label":"struct CountersUpgradeable.Counter","members":[{"astId":6494,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_struct(History)5086_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.History","members":[{"astId":5085,"contract":"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol:VotesUpgradeable","label":"_checkpoints","offset":0,"slot":"0","type":"t_array(t_struct(Checkpoint)5091_storage)dyn_storage"}],"numberOfBytes":"32"},"t_uint224":{"encoding":"inplace","label":"uint224","numberOfBytes":"28"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol":{"IERC2981Upgradeable":{"abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface for the NFT Royalty Standard. A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal support for royalty payments across all NFT marketplaces and ecosystem participants. _Available since v4.5._","kind":"dev","methods":{"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"supportsInterface(bytes4)":{"details":"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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"royaltyInfo(uint256,uint256)":"2a55205a","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the NFT Royalty Standard. A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal support for royalty payments across all NFT marketplaces and ecosystem participants. _Available since v4.5._\",\"kind\":\"dev\",\"methods\":{\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"supportsInterface(bytes4)\":{\"details\":\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":\"IERC2981Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n */\\n function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n external\\n view\\n returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"constructor constructor() { _disableInitializers(); } ``` ====","details":"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ``` contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"_initialized":{"custom:oz-retyped-from":"bool","details":"Indicates that the contract has been initialized."},"_initializing":{"details":"Indicates that the contract is in the process of being initialized."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ``` contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol":{"ERC1155Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the basic standard multi-token. See https://eips.ethereum.org/EIPS/eip-1155 Originally based on code by Enjin: https://github.com/enjin/erc-1155 _Available since v3.1._","events":{"ApprovalForAll(address,address,bool)":{"details":"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"TransferBatch(address,address,address,uint256[],uint256[])":{"details":"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."},"TransferSingle(address,address,address,uint256,uint256)":{"details":"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"URI(string,uint256)":{"details":"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."}},"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"uri(uint256)":{"details":"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\{id\\}` substring with the actual token type ID."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523461001657611426908161001c8239f35b600080fdfe60406080815260048036101561001457600080fd5b600091823560e01c8062fdd58e14610d7f57806301ffc9a714610cad5780630e89341c14610b5e5780632eb2c2d6146107c15780634e1273f4146105ba578063a22cb46514610485578063e985e9c5146104265763f242432a1461007757600080fd5b346104225760a060031936011261042257610090610daf565b83610099610dd7565b916044359060643560843567ffffffffffffffff811161041e576100c09036908901610f3e565b9273ffffffffffffffffffffffffffffffffffffffff8093169233841480156103ff575b6100ed90611144565b8616906100fb8215156111cf565b610104816113ba565b5061010e836113ba565b5080865260209660658852888720858852885283898820546101328282101561125a565b83895260658a528a8920878a528a5203898820558187526065885288872083885288528887206101638582546112e5565b905582858a51848152868b8201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628c3392a43b61019f578580f35b889587946101f98a51978896879586947ff23a6e61000000000000000000000000000000000000000000000000000000009c8d8752339087015260248601526044850152606484015260a0608484015260a4830190610dfa565b03925af18691816103d0575b5061031457505060019061021761132a565b6308c379a0146102c7575b506102375750505b3880808381808080808580f35b6102c39250519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560408201527f526563656976657220696d706c656d656e74657200000000000000000000000060608201520190565b0390fd5b6102cf611348565b806102da5750610222565b6102c3859185519384937f08c379a00000000000000000000000000000000000000000000000000000000085528401526024830190610dfa565b7fffffffff000000000000000000000000000000000000000000000000000000001603905061034457505061022a565b6102c39250519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a6563746560408201527f6420746f6b656e7300000000000000000000000000000000000000000000000060608201520190565b6103f1919250843d86116103f8575b6103e98183610e58565b8101906112f2565b9038610205565b503d6103df565b508386526066602090815288872033885290528786205460ff166100e4565b8480fd5b8280fd5b83823461048157806003193601126104815760ff81602093610446610daf565b61044e610dd7565b73ffffffffffffffffffffffffffffffffffffffff91821683526066875283832091168252855220549151911615158152f35b5080fd5b503461042257806003193601126104225761049e610daf565b906024359182151580930361041e5773ffffffffffffffffffffffffffffffffffffffff1692833314610538575033845260666020528084208385526020528084207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8416179055519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152fd5b509034610422578160031936011261042257803567ffffffffffffffff80821161041e573660238301121561041e5781830135906105f782610ec8565b9261060486519485610e58565b82845260209260248486019160051b830101913683116107bd57602401905b82821061078d57505050602435908111610789576106449036908501610ee0565b92825184510361070857508151947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061069461067f88610ec8565b9761068c8851998a610e58565b808952610ec8565b0136838801375b82518110156106f257806106dd73ffffffffffffffffffffffffffffffffffffffff6106ca6106ed9487611101565b51166106d68388611101565b5190610fe7565b6106e78289611101565b526110a5565b61069b565b84518281528061070481850189610fb3565b0390f35b6084918551917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152fd5b8580fd5b813573ffffffffffffffffffffffffffffffffffffffff811681036107b9578152908401908401610623565b8980fd5b8880fd5b509034610422576003199160a083360112610b5a576107de610daf565b926107e7610dd7565b9367ffffffffffffffff93604435858111610b56576108099036908301610ee0565b906064358681116107bd576108219036908301610ee0565b956084359081116107bd576108399036908301610f3e565b9373ffffffffffffffffffffffffffffffffffffffff809416933385148015610b37575b61086690611144565b8351885103610ab45788169461087d8615156111cf565b895b8a85518210156109055790896108f98a610900948a6108a9866108a2818e611101565b5196611101565b519480835260659086602093838552868620818752855286862054906108d18383101561125a565b8387528486528787209087528552038585205583528152828220908d835252209182546112e5565b90556110a5565b61087f565b50509094939596929197848789518a81527f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6109438c830188610fb3565b9180830360208201528061095833948b610fb3565b0390a43b610964578880f35b865194859384937fbc197c810000000000000000000000000000000000000000000000000000000098898652338c87015260248601526044850160a0905260a485016109af91610fb3565b828582030160648601526109c291610fb3565b908382030160848401526109d591610dfa565b0381885a94602095f1859181610a94575b50610a6657505060016109f761132a565b6308c379a014610a15575b6102375750505b38808080808080808880f35b610a1d611348565b80610a285750610a02565b90506102c39160209450519384937f08c379a00000000000000000000000000000000000000000000000000000000085528401526024830190610dfa565b7fffffffff000000000000000000000000000000000000000000000000000000001603610344575050610a09565b610aad91925060203d81116103f8576103e98183610e58565b90386109e6565b60848360208951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b50848a5260666020908152878b20338c529052868a205460ff1661085d565b8780fd5b8380fd5b50829034610481576020908160031936011261042257805192806067549060019082821c928281168015610ca3575b8785108114610c77578899509688969785829a529182600014610c32575050600114610bd6575b5050506107049291610bc7910385610e58565b51928284938452830190610dfa565b9190869350606783527f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae5b828410610c1a5750505082010181610bc7610704610bb4565b8054848a018601528895508794909301928101610c01565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b86019093019350849250610bc791506107049050610bb4565b60248360228c7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b93607f1693610b8d565b5090346104225760206003193601126104225735907fffffffff00000000000000000000000000000000000000000000000000000000821680920361042257602092507fd9b67a26000000000000000000000000000000000000000000000000000000008214918215610d55575b8215610d2b575b50519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000014915038610d22565b7f0e89341c0000000000000000000000000000000000000000000000000000000081149250610d1b565b838234610481578060031936011261048157602090610da8610d9f610daf565b60243590610fe7565b9051908152f35b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610dd257565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff82168203610dd257565b919082519283825260005b848110610e445750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201610e05565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610e9957604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111610e995760051b60200190565b81601f82011215610dd257803591610ef783610ec8565b92610f056040519485610e58565b808452602092838086019260051b820101928311610dd2578301905b828210610f2f575050505090565b81358152908301908301610f21565b81601f82011215610dd25780359067ffffffffffffffff8211610e995760405192610f9160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185610e58565b82845260208383010111610dd257816000926020809301838601378301015290565b90815180825260208080930193019160005b828110610fd3575050505090565b835185529381019392810192600101610fc5565b73ffffffffffffffffffffffffffffffffffffffff1690811561102157600052606560205260406000209060005260205260406000205490565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e6572000000000000000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110d25760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80518210156111155760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1561114b57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f7665640000000000000000000000000000000000006064820152fd5b156111d657565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b1561126157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e73666572000000000000000000000000000000000000000000006064820152fd5b919082018092116110d257565b90816020910312610dd257517fffffffff0000000000000000000000000000000000000000000000000000000081168103610dd25790565b60009060033d1161133757565b905060046000803e60005160e01c90565b600060443d106113a65760405160031991823d016004833e815167ffffffffffffffff918282113d6024840111176113a9578184019485519384116113b1573d850101602084870101116113a957506113a692910160200190610e58565b90565b949350505050565b50949350505050565b604051906040820182811067ffffffffffffffff821117610e99576040526001825260208201602036823782511561111557529056fea26469706673582212206b1e79918006cc1b39f62044ddf02f0ca1e3c9a2c6be1f3e88a415a83520425364736f6c63430008130033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x16 JUMPI PUSH2 0x1426 SWAP1 DUP2 PUSH2 0x1C DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0xFDD58E EQ PUSH2 0xD7F JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xCAD JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0xB5E JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x7C1 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x5BA JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x485 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x426 JUMPI PUSH4 0xF242432A EQ PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x422 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x422 JUMPI PUSH2 0x90 PUSH2 0xDAF JUMP JUMPDEST DUP4 PUSH2 0x99 PUSH2 0xDD7 JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x41E JUMPI PUSH2 0xC0 SWAP1 CALLDATASIZE SWAP1 DUP10 ADD PUSH2 0xF3E JUMP JUMPDEST SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP4 AND SWAP3 CALLER DUP5 EQ DUP1 ISZERO PUSH2 0x3FF JUMPI JUMPDEST PUSH2 0xED SWAP1 PUSH2 0x1144 JUMP JUMPDEST DUP7 AND SWAP1 PUSH2 0xFB DUP3 ISZERO ISZERO PUSH2 0x11CF JUMP JUMPDEST PUSH2 0x104 DUP2 PUSH2 0x13BA JUMP JUMPDEST POP PUSH2 0x10E DUP4 PUSH2 0x13BA JUMP JUMPDEST POP DUP1 DUP7 MSTORE PUSH1 0x20 SWAP7 PUSH1 0x65 DUP9 MSTORE DUP9 DUP8 KECCAK256 DUP6 DUP9 MSTORE DUP9 MSTORE DUP4 DUP10 DUP9 KECCAK256 SLOAD PUSH2 0x132 DUP3 DUP3 LT ISZERO PUSH2 0x125A JUMP JUMPDEST DUP4 DUP10 MSTORE PUSH1 0x65 DUP11 MSTORE DUP11 DUP10 KECCAK256 DUP8 DUP11 MSTORE DUP11 MSTORE SUB DUP10 DUP9 KECCAK256 SSTORE DUP2 DUP8 MSTORE PUSH1 0x65 DUP9 MSTORE DUP9 DUP8 KECCAK256 DUP4 DUP9 MSTORE DUP9 MSTORE DUP9 DUP8 KECCAK256 PUSH2 0x163 DUP6 DUP3 SLOAD PUSH2 0x12E5 JUMP JUMPDEST SWAP1 SSTORE DUP3 DUP6 DUP11 MLOAD DUP5 DUP2 MSTORE DUP7 DUP12 DUP3 ADD MSTORE PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP13 CALLER SWAP3 LOG4 EXTCODESIZE PUSH2 0x19F JUMPI DUP6 DUP1 RETURN JUMPDEST DUP9 SWAP6 DUP8 SWAP5 PUSH2 0x1F9 DUP11 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP13 DUP14 DUP8 MSTORE CALLER SWAP1 DUP8 ADD MSTORE PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD MSTORE PUSH1 0xA4 DUP4 ADD SWAP1 PUSH2 0xDFA JUMP JUMPDEST SUB SWAP3 GAS CALL DUP7 SWAP2 DUP2 PUSH2 0x3D0 JUMPI JUMPDEST POP PUSH2 0x314 JUMPI POP POP PUSH1 0x1 SWAP1 PUSH2 0x217 PUSH2 0x132A JUMP JUMPDEST PUSH4 0x8C379A0 EQ PUSH2 0x2C7 JUMPI JUMPDEST POP PUSH2 0x237 JUMPI POP POP JUMPDEST CODESIZE DUP1 DUP1 DUP4 DUP2 DUP1 DUP1 DUP1 DUP1 DUP6 DUP1 RETURN JUMPDEST PUSH2 0x2C3 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD PUSH1 0x80 SWAP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2CF PUSH2 0x1348 JUMP JUMPDEST DUP1 PUSH2 0x2DA JUMPI POP PUSH2 0x222 JUMP JUMPDEST PUSH2 0x2C3 DUP6 SWAP2 DUP6 MLOAD SWAP4 DUP5 SWAP4 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0xDFA JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SUB SWAP1 POP PUSH2 0x344 JUMPI POP POP PUSH2 0x22A JUMP JUMPDEST PUSH2 0x2C3 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD PUSH1 0x80 SWAP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x28 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6420746F6B656E73000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x3F1 SWAP2 SWAP3 POP DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x3F8 JUMPI JUMPDEST PUSH2 0x3E9 DUP2 DUP4 PUSH2 0xE58 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12F2 JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x205 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3DF JUMP JUMPDEST POP DUP4 DUP7 MSTORE PUSH1 0x66 PUSH1 0x20 SWAP1 DUP2 MSTORE DUP9 DUP8 KECCAK256 CALLER DUP9 MSTORE SWAP1 MSTORE DUP8 DUP7 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xE4 JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x481 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x481 JUMPI PUSH1 0xFF DUP2 PUSH1 0x20 SWAP4 PUSH2 0x446 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x44E PUSH2 0xDD7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP4 MSTORE PUSH1 0x66 DUP8 MSTORE DUP4 DUP4 KECCAK256 SWAP2 AND DUP3 MSTORE DUP6 MSTORE KECCAK256 SLOAD SWAP2 MLOAD SWAP2 AND ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x422 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x422 JUMPI PUSH2 0x49E PUSH2 0xDAF JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP2 DUP3 ISZERO ISZERO DUP1 SWAP4 SUB PUSH2 0x41E JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 DUP4 CALLER EQ PUSH2 0x538 JUMPI POP CALLER DUP5 MSTORE PUSH1 0x66 PUSH1 0x20 MSTORE DUP1 DUP5 KECCAK256 DUP4 DUP6 MSTORE PUSH1 0x20 MSTORE DUP1 DUP5 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND PUSH1 0xFF DUP5 AND OR SWAP1 SSTORE MLOAD SWAP1 DUP2 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 PUSH1 0x20 CALLER SWAP3 LOG3 DUP1 RETURN JUMPDEST PUSH1 0x20 PUSH1 0x84 SWAP3 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x422 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x422 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT PUSH2 0x41E JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x41E JUMPI DUP2 DUP4 ADD CALLDATALOAD SWAP1 PUSH2 0x5F7 DUP3 PUSH2 0xEC8 JUMP JUMPDEST SWAP3 PUSH2 0x604 DUP7 MLOAD SWAP5 DUP6 PUSH2 0xE58 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x24 DUP5 DUP7 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x7BD JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x78D JUMPI POP POP POP PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x789 JUMPI PUSH2 0x644 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0xEE0 JUMP JUMPDEST SWAP3 DUP3 MLOAD DUP5 MLOAD SUB PUSH2 0x708 JUMPI POP DUP2 MLOAD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x694 PUSH2 0x67F DUP9 PUSH2 0xEC8 JUMP JUMPDEST SWAP8 PUSH2 0x68C DUP9 MLOAD SWAP10 DUP11 PUSH2 0xE58 JUMP JUMPDEST DUP1 DUP10 MSTORE PUSH2 0xEC8 JUMP JUMPDEST ADD CALLDATASIZE DUP4 DUP9 ADD CALLDATACOPY JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x6F2 JUMPI DUP1 PUSH2 0x6DD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x6CA PUSH2 0x6ED SWAP5 DUP8 PUSH2 0x1101 JUMP JUMPDEST MLOAD AND PUSH2 0x6D6 DUP4 DUP9 PUSH2 0x1101 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0xFE7 JUMP JUMPDEST PUSH2 0x6E7 DUP3 DUP10 PUSH2 0x1101 JUMP JUMPDEST MSTORE PUSH2 0x10A5 JUMP JUMPDEST PUSH2 0x69B JUMP JUMPDEST DUP5 MLOAD DUP3 DUP2 MSTORE DUP1 PUSH2 0x704 DUP2 DUP6 ADD DUP10 PUSH2 0xFB3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x84 SWAP2 DUP6 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST DUP6 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x7B9 JUMPI DUP2 MSTORE SWAP1 DUP5 ADD SWAP1 DUP5 ADD PUSH2 0x623 JUMP JUMPDEST DUP10 DUP1 REVERT JUMPDEST DUP9 DUP1 REVERT JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x422 JUMPI PUSH1 0x3 NOT SWAP2 PUSH1 0xA0 DUP4 CALLDATASIZE ADD SLT PUSH2 0xB5A JUMPI PUSH2 0x7DE PUSH2 0xDAF JUMP JUMPDEST SWAP3 PUSH2 0x7E7 PUSH2 0xDD7 JUMP JUMPDEST SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 PUSH1 0x44 CALLDATALOAD DUP6 DUP2 GT PUSH2 0xB56 JUMPI PUSH2 0x809 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xEE0 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD DUP7 DUP2 GT PUSH2 0x7BD JUMPI PUSH2 0x821 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xEE0 JUMP JUMPDEST SWAP6 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x7BD JUMPI PUSH2 0x839 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xF3E JUMP JUMPDEST SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 AND SWAP4 CALLER DUP6 EQ DUP1 ISZERO PUSH2 0xB37 JUMPI JUMPDEST PUSH2 0x866 SWAP1 PUSH2 0x1144 JUMP JUMPDEST DUP4 MLOAD DUP9 MLOAD SUB PUSH2 0xAB4 JUMPI DUP9 AND SWAP5 PUSH2 0x87D DUP7 ISZERO ISZERO PUSH2 0x11CF JUMP JUMPDEST DUP10 JUMPDEST DUP11 DUP6 MLOAD DUP3 LT ISZERO PUSH2 0x905 JUMPI SWAP1 DUP10 PUSH2 0x8F9 DUP11 PUSH2 0x900 SWAP5 DUP11 PUSH2 0x8A9 DUP7 PUSH2 0x8A2 DUP2 DUP15 PUSH2 0x1101 JUMP JUMPDEST MLOAD SWAP7 PUSH2 0x1101 JUMP JUMPDEST MLOAD SWAP5 DUP1 DUP4 MSTORE PUSH1 0x65 SWAP1 DUP7 PUSH1 0x20 SWAP4 DUP4 DUP6 MSTORE DUP7 DUP7 KECCAK256 DUP2 DUP8 MSTORE DUP6 MSTORE DUP7 DUP7 KECCAK256 SLOAD SWAP1 PUSH2 0x8D1 DUP4 DUP4 LT ISZERO PUSH2 0x125A JUMP JUMPDEST DUP4 DUP8 MSTORE DUP5 DUP7 MSTORE DUP8 DUP8 KECCAK256 SWAP1 DUP8 MSTORE DUP6 MSTORE SUB DUP6 DUP6 KECCAK256 SSTORE DUP4 MSTORE DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP1 DUP14 DUP4 MSTORE MSTORE KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x12E5 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x10A5 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST POP POP SWAP1 SWAP5 SWAP4 SWAP6 SWAP7 SWAP3 SWAP2 SWAP8 DUP5 DUP8 DUP10 MLOAD DUP11 DUP2 MSTORE PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB PUSH2 0x943 DUP13 DUP4 ADD DUP9 PUSH2 0xFB3 JUMP JUMPDEST SWAP2 DUP1 DUP4 SUB PUSH1 0x20 DUP3 ADD MSTORE DUP1 PUSH2 0x958 CALLER SWAP5 DUP12 PUSH2 0xFB3 JUMP JUMPDEST SUB SWAP1 LOG4 EXTCODESIZE PUSH2 0x964 JUMPI DUP9 DUP1 RETURN JUMPDEST DUP7 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP9 DUP10 DUP7 MSTORE CALLER DUP13 DUP8 ADD MSTORE PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD PUSH1 0xA0 SWAP1 MSTORE PUSH1 0xA4 DUP6 ADD PUSH2 0x9AF SWAP2 PUSH2 0xFB3 JUMP JUMPDEST DUP3 DUP6 DUP3 SUB ADD PUSH1 0x64 DUP7 ADD MSTORE PUSH2 0x9C2 SWAP2 PUSH2 0xFB3 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB ADD PUSH1 0x84 DUP5 ADD MSTORE PUSH2 0x9D5 SWAP2 PUSH2 0xDFA JUMP JUMPDEST SUB DUP2 DUP9 GAS SWAP5 PUSH1 0x20 SWAP6 CALL DUP6 SWAP2 DUP2 PUSH2 0xA94 JUMPI JUMPDEST POP PUSH2 0xA66 JUMPI POP POP PUSH1 0x1 PUSH2 0x9F7 PUSH2 0x132A JUMP JUMPDEST PUSH4 0x8C379A0 EQ PUSH2 0xA15 JUMPI JUMPDEST PUSH2 0x237 JUMPI POP POP JUMPDEST CODESIZE DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP9 DUP1 RETURN JUMPDEST PUSH2 0xA1D PUSH2 0x1348 JUMP JUMPDEST DUP1 PUSH2 0xA28 JUMPI POP PUSH2 0xA02 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C3 SWAP2 PUSH1 0x20 SWAP5 POP MLOAD SWAP4 DUP5 SWAP4 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0xDFA JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SUB PUSH2 0x344 JUMPI POP POP PUSH2 0xA09 JUMP JUMPDEST PUSH2 0xAAD SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3F8 JUMPI PUSH2 0x3E9 DUP2 DUP4 PUSH2 0xE58 JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x9E6 JUMP JUMPDEST PUSH1 0x84 DUP4 PUSH1 0x20 DUP10 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST POP DUP5 DUP11 MSTORE PUSH1 0x66 PUSH1 0x20 SWAP1 DUP2 MSTORE DUP8 DUP12 KECCAK256 CALLER DUP13 MSTORE SWAP1 MSTORE DUP7 DUP11 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x85D JUMP JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 CALLVALUE PUSH2 0x481 JUMPI PUSH1 0x20 SWAP1 DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x422 JUMPI DUP1 MLOAD SWAP3 DUP1 PUSH1 0x67 SLOAD SWAP1 PUSH1 0x1 SWAP1 DUP3 DUP3 SHR SWAP3 DUP3 DUP2 AND DUP1 ISZERO PUSH2 0xCA3 JUMPI JUMPDEST DUP8 DUP6 LT DUP2 EQ PUSH2 0xC77 JUMPI DUP9 SWAP10 POP SWAP7 DUP9 SWAP7 SWAP8 DUP6 DUP3 SWAP11 MSTORE SWAP2 DUP3 PUSH1 0x0 EQ PUSH2 0xC32 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xBD6 JUMPI JUMPDEST POP POP POP PUSH2 0x704 SWAP3 SWAP2 PUSH2 0xBC7 SWAP2 SUB DUP6 PUSH2 0xE58 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0xDFA JUMP JUMPDEST SWAP2 SWAP1 DUP7 SWAP4 POP PUSH1 0x67 DUP4 MSTORE PUSH32 0x9787EEB91FE3101235E4A76063C7023ECB40F923F97916639C598592FA30D6AE JUMPDEST DUP3 DUP5 LT PUSH2 0xC1A JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0xBC7 PUSH2 0x704 PUSH2 0xBB4 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xC01 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0xBC7 SWAP2 POP PUSH2 0x704 SWAP1 POP PUSH2 0xBB4 JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH1 0x22 DUP13 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST SWAP4 PUSH1 0x7F AND SWAP4 PUSH2 0xB8D JUMP JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x422 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x422 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x422 JUMPI PUSH1 0x20 SWAP3 POP PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 DUP3 EQ SWAP2 DUP3 ISZERO PUSH2 0xD55 JUMPI JUMPDEST DUP3 ISZERO PUSH2 0xD2B JUMPI JUMPDEST POP MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 POP CODESIZE PUSH2 0xD22 JUMP JUMPDEST PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP3 POP PUSH2 0xD1B JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x481 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x481 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xDA8 PUSH2 0xD9F PUSH2 0xDAF JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xFE7 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xDD2 JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xDD2 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0xE44 JUMPI POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 ADD DUP2 ADD MLOAD DUP5 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xE05 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xE99 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE99 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xDD2 JUMPI DUP1 CALLDATALOAD SWAP2 PUSH2 0xEF7 DUP4 PUSH2 0xEC8 JUMP JUMPDEST SWAP3 PUSH2 0xF05 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xE58 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP3 DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0xDD2 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xF2F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0xF21 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xDD2 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xE99 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0xF91 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP7 ADD AND ADD DUP6 PUSH2 0xE58 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0xDD2 JUMPI DUP2 PUSH1 0x0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0xFD3 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xFC5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 ISZERO PUSH2 0x1021 JUMPI PUSH1 0x0 MSTORE PUSH1 0x65 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x10D2 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1115 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ISZERO PUSH2 0x114B JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572206F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x11D6 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x1261 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72207472616E7366657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x10D2 JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xDD2 JUMPI MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0xDD2 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x3 RETURNDATASIZE GT PUSH2 0x1337 JUMPI JUMP JUMPDEST SWAP1 POP PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY PUSH1 0x0 MLOAD PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT PUSH2 0x13A6 JUMPI PUSH1 0x40 MLOAD PUSH1 0x3 NOT SWAP2 DUP3 RETURNDATASIZE ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT RETURNDATASIZE PUSH1 0x24 DUP5 ADD GT OR PUSH2 0x13A9 JUMPI DUP2 DUP5 ADD SWAP5 DUP6 MLOAD SWAP4 DUP5 GT PUSH2 0x13B1 JUMPI RETURNDATASIZE DUP6 ADD ADD PUSH1 0x20 DUP5 DUP8 ADD ADD GT PUSH2 0x13A9 JUMPI POP PUSH2 0x13A6 SWAP3 SWAP2 ADD PUSH1 0x20 ADD SWAP1 PUSH2 0xE58 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x40 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xE99 JUMPI PUSH1 0x40 MSTORE PUSH1 0x1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x20 CALLDATASIZE DUP3 CALLDATACOPY DUP3 MLOAD ISZERO PUSH2 0x1115 JUMPI MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0x1E79918006CC1B39F62044DD CREATE 0x2F 0xC LOG1 0xE3 0xC9 LOG2 0xC6 0xBE 0x1F RETURNDATACOPY DUP9 LOG4 ISZERO 0xA8 CALLDATALOAD KECCAK256 TIMESTAMP MSTORE8 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"682:17320:11:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":3543,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_9318":{"entryPoint":3503,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":3808,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":3902,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes4_fromMemory":{"entryPoint":4850,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":4019,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":3578,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f591":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":3784,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":4837,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":3672,"id":null,"parameterSlots":2,"returnSlots":0},"fun_asSingletonArray":{"entryPoint":5050,"id":2705,"parameterSlots":1,"returnSlots":1},"fun_balanceOf":{"entryPoint":4071,"id":1599,"parameterSlots":2,"returnSlots":1},"increment_uint256":{"entryPoint":4261,"id":null,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_address_dyn":{"entryPoint":4353,"id":null,"parameterSlots":2,"returnSlots":1},"require_helper_stringliteral_47c7":{"entryPoint":4420,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_6faf":{"entryPoint":4559,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_8ac7":{"entryPoint":4698,"id":null,"parameterSlots":1,"returnSlots":0},"return_data_selector":{"entryPoint":4906,"id":null,"parameterSlots":0,"returnSlots":1},"try_decode_error_message":{"entryPoint":4936,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60406080815260048036101561001457600080fd5b600091823560e01c8062fdd58e14610d7f57806301ffc9a714610cad5780630e89341c14610b5e5780632eb2c2d6146107c15780634e1273f4146105ba578063a22cb46514610485578063e985e9c5146104265763f242432a1461007757600080fd5b346104225760a060031936011261042257610090610daf565b83610099610dd7565b916044359060643560843567ffffffffffffffff811161041e576100c09036908901610f3e565b9273ffffffffffffffffffffffffffffffffffffffff8093169233841480156103ff575b6100ed90611144565b8616906100fb8215156111cf565b610104816113ba565b5061010e836113ba565b5080865260209660658852888720858852885283898820546101328282101561125a565b83895260658a528a8920878a528a5203898820558187526065885288872083885288528887206101638582546112e5565b905582858a51848152868b8201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628c3392a43b61019f578580f35b889587946101f98a51978896879586947ff23a6e61000000000000000000000000000000000000000000000000000000009c8d8752339087015260248601526044850152606484015260a0608484015260a4830190610dfa565b03925af18691816103d0575b5061031457505060019061021761132a565b6308c379a0146102c7575b506102375750505b3880808381808080808580f35b6102c39250519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560408201527f526563656976657220696d706c656d656e74657200000000000000000000000060608201520190565b0390fd5b6102cf611348565b806102da5750610222565b6102c3859185519384937f08c379a00000000000000000000000000000000000000000000000000000000085528401526024830190610dfa565b7fffffffff000000000000000000000000000000000000000000000000000000001603905061034457505061022a565b6102c39250519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a6563746560408201527f6420746f6b656e7300000000000000000000000000000000000000000000000060608201520190565b6103f1919250843d86116103f8575b6103e98183610e58565b8101906112f2565b9038610205565b503d6103df565b508386526066602090815288872033885290528786205460ff166100e4565b8480fd5b8280fd5b83823461048157806003193601126104815760ff81602093610446610daf565b61044e610dd7565b73ffffffffffffffffffffffffffffffffffffffff91821683526066875283832091168252855220549151911615158152f35b5080fd5b503461042257806003193601126104225761049e610daf565b906024359182151580930361041e5773ffffffffffffffffffffffffffffffffffffffff1692833314610538575033845260666020528084208385526020528084207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8416179055519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152fd5b509034610422578160031936011261042257803567ffffffffffffffff80821161041e573660238301121561041e5781830135906105f782610ec8565b9261060486519485610e58565b82845260209260248486019160051b830101913683116107bd57602401905b82821061078d57505050602435908111610789576106449036908501610ee0565b92825184510361070857508151947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061069461067f88610ec8565b9761068c8851998a610e58565b808952610ec8565b0136838801375b82518110156106f257806106dd73ffffffffffffffffffffffffffffffffffffffff6106ca6106ed9487611101565b51166106d68388611101565b5190610fe7565b6106e78289611101565b526110a5565b61069b565b84518281528061070481850189610fb3565b0390f35b6084918551917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152fd5b8580fd5b813573ffffffffffffffffffffffffffffffffffffffff811681036107b9578152908401908401610623565b8980fd5b8880fd5b509034610422576003199160a083360112610b5a576107de610daf565b926107e7610dd7565b9367ffffffffffffffff93604435858111610b56576108099036908301610ee0565b906064358681116107bd576108219036908301610ee0565b956084359081116107bd576108399036908301610f3e565b9373ffffffffffffffffffffffffffffffffffffffff809416933385148015610b37575b61086690611144565b8351885103610ab45788169461087d8615156111cf565b895b8a85518210156109055790896108f98a610900948a6108a9866108a2818e611101565b5196611101565b519480835260659086602093838552868620818752855286862054906108d18383101561125a565b8387528486528787209087528552038585205583528152828220908d835252209182546112e5565b90556110a5565b61087f565b50509094939596929197848789518a81527f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6109438c830188610fb3565b9180830360208201528061095833948b610fb3565b0390a43b610964578880f35b865194859384937fbc197c810000000000000000000000000000000000000000000000000000000098898652338c87015260248601526044850160a0905260a485016109af91610fb3565b828582030160648601526109c291610fb3565b908382030160848401526109d591610dfa565b0381885a94602095f1859181610a94575b50610a6657505060016109f761132a565b6308c379a014610a15575b6102375750505b38808080808080808880f35b610a1d611348565b80610a285750610a02565b90506102c39160209450519384937f08c379a00000000000000000000000000000000000000000000000000000000085528401526024830190610dfa565b7fffffffff000000000000000000000000000000000000000000000000000000001603610344575050610a09565b610aad91925060203d81116103f8576103e98183610e58565b90386109e6565b60848360208951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b50848a5260666020908152878b20338c529052868a205460ff1661085d565b8780fd5b8380fd5b50829034610481576020908160031936011261042257805192806067549060019082821c928281168015610ca3575b8785108114610c77578899509688969785829a529182600014610c32575050600114610bd6575b5050506107049291610bc7910385610e58565b51928284938452830190610dfa565b9190869350606783527f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae5b828410610c1a5750505082010181610bc7610704610bb4565b8054848a018601528895508794909301928101610c01565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b86019093019350849250610bc791506107049050610bb4565b60248360228c7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b93607f1693610b8d565b5090346104225760206003193601126104225735907fffffffff00000000000000000000000000000000000000000000000000000000821680920361042257602092507fd9b67a26000000000000000000000000000000000000000000000000000000008214918215610d55575b8215610d2b575b50519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000014915038610d22565b7f0e89341c0000000000000000000000000000000000000000000000000000000081149250610d1b565b838234610481578060031936011261048157602090610da8610d9f610daf565b60243590610fe7565b9051908152f35b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610dd257565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff82168203610dd257565b919082519283825260005b848110610e445750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201610e05565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610e9957604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111610e995760051b60200190565b81601f82011215610dd257803591610ef783610ec8565b92610f056040519485610e58565b808452602092838086019260051b820101928311610dd2578301905b828210610f2f575050505090565b81358152908301908301610f21565b81601f82011215610dd25780359067ffffffffffffffff8211610e995760405192610f9160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185610e58565b82845260208383010111610dd257816000926020809301838601378301015290565b90815180825260208080930193019160005b828110610fd3575050505090565b835185529381019392810192600101610fc5565b73ffffffffffffffffffffffffffffffffffffffff1690811561102157600052606560205260406000209060005260205260406000205490565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e6572000000000000000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110d25760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80518210156111155760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1561114b57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f7665640000000000000000000000000000000000006064820152fd5b156111d657565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b1561126157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e73666572000000000000000000000000000000000000000000006064820152fd5b919082018092116110d257565b90816020910312610dd257517fffffffff0000000000000000000000000000000000000000000000000000000081168103610dd25790565b60009060033d1161133757565b905060046000803e60005160e01c90565b600060443d106113a65760405160031991823d016004833e815167ffffffffffffffff918282113d6024840111176113a9578184019485519384116113b1573d850101602084870101116113a957506113a692910160200190610e58565b90565b949350505050565b50949350505050565b604051906040820182811067ffffffffffffffff821117610e99576040526001825260208201602036823782511561111557529056fea26469706673582212206b1e79918006cc1b39f62044ddf02f0ca1e3c9a2c6be1f3e88a415a83520425364736f6c63430008130033","opcodes":"PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0xFDD58E EQ PUSH2 0xD7F JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xCAD JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0xB5E JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x7C1 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x5BA JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x485 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x426 JUMPI PUSH4 0xF242432A EQ PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x422 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x422 JUMPI PUSH2 0x90 PUSH2 0xDAF JUMP JUMPDEST DUP4 PUSH2 0x99 PUSH2 0xDD7 JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x41E JUMPI PUSH2 0xC0 SWAP1 CALLDATASIZE SWAP1 DUP10 ADD PUSH2 0xF3E JUMP JUMPDEST SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP4 AND SWAP3 CALLER DUP5 EQ DUP1 ISZERO PUSH2 0x3FF JUMPI JUMPDEST PUSH2 0xED SWAP1 PUSH2 0x1144 JUMP JUMPDEST DUP7 AND SWAP1 PUSH2 0xFB DUP3 ISZERO ISZERO PUSH2 0x11CF JUMP JUMPDEST PUSH2 0x104 DUP2 PUSH2 0x13BA JUMP JUMPDEST POP PUSH2 0x10E DUP4 PUSH2 0x13BA JUMP JUMPDEST POP DUP1 DUP7 MSTORE PUSH1 0x20 SWAP7 PUSH1 0x65 DUP9 MSTORE DUP9 DUP8 KECCAK256 DUP6 DUP9 MSTORE DUP9 MSTORE DUP4 DUP10 DUP9 KECCAK256 SLOAD PUSH2 0x132 DUP3 DUP3 LT ISZERO PUSH2 0x125A JUMP JUMPDEST DUP4 DUP10 MSTORE PUSH1 0x65 DUP11 MSTORE DUP11 DUP10 KECCAK256 DUP8 DUP11 MSTORE DUP11 MSTORE SUB DUP10 DUP9 KECCAK256 SSTORE DUP2 DUP8 MSTORE PUSH1 0x65 DUP9 MSTORE DUP9 DUP8 KECCAK256 DUP4 DUP9 MSTORE DUP9 MSTORE DUP9 DUP8 KECCAK256 PUSH2 0x163 DUP6 DUP3 SLOAD PUSH2 0x12E5 JUMP JUMPDEST SWAP1 SSTORE DUP3 DUP6 DUP11 MLOAD DUP5 DUP2 MSTORE DUP7 DUP12 DUP3 ADD MSTORE PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP13 CALLER SWAP3 LOG4 EXTCODESIZE PUSH2 0x19F JUMPI DUP6 DUP1 RETURN JUMPDEST DUP9 SWAP6 DUP8 SWAP5 PUSH2 0x1F9 DUP11 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP13 DUP14 DUP8 MSTORE CALLER SWAP1 DUP8 ADD MSTORE PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP5 ADD MSTORE PUSH1 0xA4 DUP4 ADD SWAP1 PUSH2 0xDFA JUMP JUMPDEST SUB SWAP3 GAS CALL DUP7 SWAP2 DUP2 PUSH2 0x3D0 JUMPI JUMPDEST POP PUSH2 0x314 JUMPI POP POP PUSH1 0x1 SWAP1 PUSH2 0x217 PUSH2 0x132A JUMP JUMPDEST PUSH4 0x8C379A0 EQ PUSH2 0x2C7 JUMPI JUMPDEST POP PUSH2 0x237 JUMPI POP POP JUMPDEST CODESIZE DUP1 DUP1 DUP4 DUP2 DUP1 DUP1 DUP1 DUP1 DUP6 DUP1 RETURN JUMPDEST PUSH2 0x2C3 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD PUSH1 0x80 SWAP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x2CF PUSH2 0x1348 JUMP JUMPDEST DUP1 PUSH2 0x2DA JUMPI POP PUSH2 0x222 JUMP JUMPDEST PUSH2 0x2C3 DUP6 SWAP2 DUP6 MLOAD SWAP4 DUP5 SWAP4 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0xDFA JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SUB SWAP1 POP PUSH2 0x344 JUMPI POP POP PUSH2 0x22A JUMP JUMPDEST PUSH2 0x2C3 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD PUSH1 0x80 SWAP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x28 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6420746F6B656E73000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST PUSH2 0x3F1 SWAP2 SWAP3 POP DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x3F8 JUMPI JUMPDEST PUSH2 0x3E9 DUP2 DUP4 PUSH2 0xE58 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12F2 JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x205 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3DF JUMP JUMPDEST POP DUP4 DUP7 MSTORE PUSH1 0x66 PUSH1 0x20 SWAP1 DUP2 MSTORE DUP9 DUP8 KECCAK256 CALLER DUP9 MSTORE SWAP1 MSTORE DUP8 DUP7 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xE4 JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x481 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x481 JUMPI PUSH1 0xFF DUP2 PUSH1 0x20 SWAP4 PUSH2 0x446 PUSH2 0xDAF JUMP JUMPDEST PUSH2 0x44E PUSH2 0xDD7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP4 MSTORE PUSH1 0x66 DUP8 MSTORE DUP4 DUP4 KECCAK256 SWAP2 AND DUP3 MSTORE DUP6 MSTORE KECCAK256 SLOAD SWAP2 MLOAD SWAP2 AND ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x422 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x422 JUMPI PUSH2 0x49E PUSH2 0xDAF JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP2 DUP3 ISZERO ISZERO DUP1 SWAP4 SUB PUSH2 0x41E JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 DUP4 CALLER EQ PUSH2 0x538 JUMPI POP CALLER DUP5 MSTORE PUSH1 0x66 PUSH1 0x20 MSTORE DUP1 DUP5 KECCAK256 DUP4 DUP6 MSTORE PUSH1 0x20 MSTORE DUP1 DUP5 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND PUSH1 0xFF DUP5 AND OR SWAP1 SSTORE MLOAD SWAP1 DUP2 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 PUSH1 0x20 CALLER SWAP3 LOG3 DUP1 RETURN JUMPDEST PUSH1 0x20 PUSH1 0x84 SWAP3 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x422 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x422 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT PUSH2 0x41E JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x41E JUMPI DUP2 DUP4 ADD CALLDATALOAD SWAP1 PUSH2 0x5F7 DUP3 PUSH2 0xEC8 JUMP JUMPDEST SWAP3 PUSH2 0x604 DUP7 MLOAD SWAP5 DUP6 PUSH2 0xE58 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x24 DUP5 DUP7 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x7BD JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x78D JUMPI POP POP POP PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x789 JUMPI PUSH2 0x644 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0xEE0 JUMP JUMPDEST SWAP3 DUP3 MLOAD DUP5 MLOAD SUB PUSH2 0x708 JUMPI POP DUP2 MLOAD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x694 PUSH2 0x67F DUP9 PUSH2 0xEC8 JUMP JUMPDEST SWAP8 PUSH2 0x68C DUP9 MLOAD SWAP10 DUP11 PUSH2 0xE58 JUMP JUMPDEST DUP1 DUP10 MSTORE PUSH2 0xEC8 JUMP JUMPDEST ADD CALLDATASIZE DUP4 DUP9 ADD CALLDATACOPY JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x6F2 JUMPI DUP1 PUSH2 0x6DD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x6CA PUSH2 0x6ED SWAP5 DUP8 PUSH2 0x1101 JUMP JUMPDEST MLOAD AND PUSH2 0x6D6 DUP4 DUP9 PUSH2 0x1101 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0xFE7 JUMP JUMPDEST PUSH2 0x6E7 DUP3 DUP10 PUSH2 0x1101 JUMP JUMPDEST MSTORE PUSH2 0x10A5 JUMP JUMPDEST PUSH2 0x69B JUMP JUMPDEST DUP5 MLOAD DUP3 DUP2 MSTORE DUP1 PUSH2 0x704 DUP2 DUP6 ADD DUP10 PUSH2 0xFB3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x84 SWAP2 DUP6 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST DUP6 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x7B9 JUMPI DUP2 MSTORE SWAP1 DUP5 ADD SWAP1 DUP5 ADD PUSH2 0x623 JUMP JUMPDEST DUP10 DUP1 REVERT JUMPDEST DUP9 DUP1 REVERT JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x422 JUMPI PUSH1 0x3 NOT SWAP2 PUSH1 0xA0 DUP4 CALLDATASIZE ADD SLT PUSH2 0xB5A JUMPI PUSH2 0x7DE PUSH2 0xDAF JUMP JUMPDEST SWAP3 PUSH2 0x7E7 PUSH2 0xDD7 JUMP JUMPDEST SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 PUSH1 0x44 CALLDATALOAD DUP6 DUP2 GT PUSH2 0xB56 JUMPI PUSH2 0x809 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xEE0 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD DUP7 DUP2 GT PUSH2 0x7BD JUMPI PUSH2 0x821 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xEE0 JUMP JUMPDEST SWAP6 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x7BD JUMPI PUSH2 0x839 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xF3E JUMP JUMPDEST SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 AND SWAP4 CALLER DUP6 EQ DUP1 ISZERO PUSH2 0xB37 JUMPI JUMPDEST PUSH2 0x866 SWAP1 PUSH2 0x1144 JUMP JUMPDEST DUP4 MLOAD DUP9 MLOAD SUB PUSH2 0xAB4 JUMPI DUP9 AND SWAP5 PUSH2 0x87D DUP7 ISZERO ISZERO PUSH2 0x11CF JUMP JUMPDEST DUP10 JUMPDEST DUP11 DUP6 MLOAD DUP3 LT ISZERO PUSH2 0x905 JUMPI SWAP1 DUP10 PUSH2 0x8F9 DUP11 PUSH2 0x900 SWAP5 DUP11 PUSH2 0x8A9 DUP7 PUSH2 0x8A2 DUP2 DUP15 PUSH2 0x1101 JUMP JUMPDEST MLOAD SWAP7 PUSH2 0x1101 JUMP JUMPDEST MLOAD SWAP5 DUP1 DUP4 MSTORE PUSH1 0x65 SWAP1 DUP7 PUSH1 0x20 SWAP4 DUP4 DUP6 MSTORE DUP7 DUP7 KECCAK256 DUP2 DUP8 MSTORE DUP6 MSTORE DUP7 DUP7 KECCAK256 SLOAD SWAP1 PUSH2 0x8D1 DUP4 DUP4 LT ISZERO PUSH2 0x125A JUMP JUMPDEST DUP4 DUP8 MSTORE DUP5 DUP7 MSTORE DUP8 DUP8 KECCAK256 SWAP1 DUP8 MSTORE DUP6 MSTORE SUB DUP6 DUP6 KECCAK256 SSTORE DUP4 MSTORE DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP1 DUP14 DUP4 MSTORE MSTORE KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x12E5 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x10A5 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST POP POP SWAP1 SWAP5 SWAP4 SWAP6 SWAP7 SWAP3 SWAP2 SWAP8 DUP5 DUP8 DUP10 MLOAD DUP11 DUP2 MSTORE PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB PUSH2 0x943 DUP13 DUP4 ADD DUP9 PUSH2 0xFB3 JUMP JUMPDEST SWAP2 DUP1 DUP4 SUB PUSH1 0x20 DUP3 ADD MSTORE DUP1 PUSH2 0x958 CALLER SWAP5 DUP12 PUSH2 0xFB3 JUMP JUMPDEST SUB SWAP1 LOG4 EXTCODESIZE PUSH2 0x964 JUMPI DUP9 DUP1 RETURN JUMPDEST DUP7 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP9 DUP10 DUP7 MSTORE CALLER DUP13 DUP8 ADD MSTORE PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD PUSH1 0xA0 SWAP1 MSTORE PUSH1 0xA4 DUP6 ADD PUSH2 0x9AF SWAP2 PUSH2 0xFB3 JUMP JUMPDEST DUP3 DUP6 DUP3 SUB ADD PUSH1 0x64 DUP7 ADD MSTORE PUSH2 0x9C2 SWAP2 PUSH2 0xFB3 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB ADD PUSH1 0x84 DUP5 ADD MSTORE PUSH2 0x9D5 SWAP2 PUSH2 0xDFA JUMP JUMPDEST SUB DUP2 DUP9 GAS SWAP5 PUSH1 0x20 SWAP6 CALL DUP6 SWAP2 DUP2 PUSH2 0xA94 JUMPI JUMPDEST POP PUSH2 0xA66 JUMPI POP POP PUSH1 0x1 PUSH2 0x9F7 PUSH2 0x132A JUMP JUMPDEST PUSH4 0x8C379A0 EQ PUSH2 0xA15 JUMPI JUMPDEST PUSH2 0x237 JUMPI POP POP JUMPDEST CODESIZE DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP9 DUP1 RETURN JUMPDEST PUSH2 0xA1D PUSH2 0x1348 JUMP JUMPDEST DUP1 PUSH2 0xA28 JUMPI POP PUSH2 0xA02 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C3 SWAP2 PUSH1 0x20 SWAP5 POP MLOAD SWAP4 DUP5 SWAP4 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0xDFA JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SUB PUSH2 0x344 JUMPI POP POP PUSH2 0xA09 JUMP JUMPDEST PUSH2 0xAAD SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3F8 JUMPI PUSH2 0x3E9 DUP2 DUP4 PUSH2 0xE58 JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x9E6 JUMP JUMPDEST PUSH1 0x84 DUP4 PUSH1 0x20 DUP10 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST POP DUP5 DUP11 MSTORE PUSH1 0x66 PUSH1 0x20 SWAP1 DUP2 MSTORE DUP8 DUP12 KECCAK256 CALLER DUP13 MSTORE SWAP1 MSTORE DUP7 DUP11 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x85D JUMP JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 CALLVALUE PUSH2 0x481 JUMPI PUSH1 0x20 SWAP1 DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x422 JUMPI DUP1 MLOAD SWAP3 DUP1 PUSH1 0x67 SLOAD SWAP1 PUSH1 0x1 SWAP1 DUP3 DUP3 SHR SWAP3 DUP3 DUP2 AND DUP1 ISZERO PUSH2 0xCA3 JUMPI JUMPDEST DUP8 DUP6 LT DUP2 EQ PUSH2 0xC77 JUMPI DUP9 SWAP10 POP SWAP7 DUP9 SWAP7 SWAP8 DUP6 DUP3 SWAP11 MSTORE SWAP2 DUP3 PUSH1 0x0 EQ PUSH2 0xC32 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xBD6 JUMPI JUMPDEST POP POP POP PUSH2 0x704 SWAP3 SWAP2 PUSH2 0xBC7 SWAP2 SUB DUP6 PUSH2 0xE58 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0xDFA JUMP JUMPDEST SWAP2 SWAP1 DUP7 SWAP4 POP PUSH1 0x67 DUP4 MSTORE PUSH32 0x9787EEB91FE3101235E4A76063C7023ECB40F923F97916639C598592FA30D6AE JUMPDEST DUP3 DUP5 LT PUSH2 0xC1A JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0xBC7 PUSH2 0x704 PUSH2 0xBB4 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xC01 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0xBC7 SWAP2 POP PUSH2 0x704 SWAP1 POP PUSH2 0xBB4 JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH1 0x22 DUP13 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST SWAP4 PUSH1 0x7F AND SWAP4 PUSH2 0xB8D JUMP JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x422 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x422 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x422 JUMPI PUSH1 0x20 SWAP3 POP PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 DUP3 EQ SWAP2 DUP3 ISZERO PUSH2 0xD55 JUMPI JUMPDEST DUP3 ISZERO PUSH2 0xD2B JUMPI JUMPDEST POP MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 POP CODESIZE PUSH2 0xD22 JUMP JUMPDEST PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP3 POP PUSH2 0xD1B JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x481 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x481 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xDA8 PUSH2 0xD9F PUSH2 0xDAF JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xFE7 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xDD2 JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xDD2 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0xE44 JUMPI POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 ADD DUP2 ADD MLOAD DUP5 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xE05 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xE99 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xE99 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xDD2 JUMPI DUP1 CALLDATALOAD SWAP2 PUSH2 0xEF7 DUP4 PUSH2 0xEC8 JUMP JUMPDEST SWAP3 PUSH2 0xF05 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xE58 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP3 DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0xDD2 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xF2F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0xF21 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xDD2 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xE99 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0xF91 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP7 ADD AND ADD DUP6 PUSH2 0xE58 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0xDD2 JUMPI DUP2 PUSH1 0x0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0xFD3 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xFC5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 ISZERO PUSH2 0x1021 JUMPI PUSH1 0x0 MSTORE PUSH1 0x65 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x10D2 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1115 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ISZERO PUSH2 0x114B JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572206F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x11D6 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x1261 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72207472616E7366657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x10D2 JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xDD2 JUMPI MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0xDD2 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x3 RETURNDATASIZE GT PUSH2 0x1337 JUMPI JUMP JUMPDEST SWAP1 POP PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY PUSH1 0x0 MLOAD PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT PUSH2 0x13A6 JUMPI PUSH1 0x40 MLOAD PUSH1 0x3 NOT SWAP2 DUP3 RETURNDATASIZE ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT RETURNDATASIZE PUSH1 0x24 DUP5 ADD GT OR PUSH2 0x13A9 JUMPI DUP2 DUP5 ADD SWAP5 DUP6 MLOAD SWAP4 DUP5 GT PUSH2 0x13B1 JUMPI RETURNDATASIZE DUP6 ADD ADD PUSH1 0x20 DUP5 DUP8 ADD ADD GT PUSH2 0x13A9 JUMPI POP PUSH2 0x13A6 SWAP3 SWAP2 ADD PUSH1 0x20 ADD SWAP1 PUSH2 0xE58 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x40 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xE99 JUMPI PUSH1 0x40 MSTORE PUSH1 0x1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x20 CALLDATASIZE DUP3 CALLDATACOPY DUP3 MLOAD ISZERO PUSH2 0x1115 JUMPI MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0x1E79918006CC1B39F62044DD CREATE 0x2F 0xC LOG1 0xE3 0xC9 LOG2 0xC6 0xBE 0x1F RETURNDATACOPY DUP9 LOG4 ISZERO 0xA8 CALLDATALOAD KECCAK256 TIMESTAMP MSTORE8 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"682:17320:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;682:17320:11;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;929:10:27;;4206:20:11;;:60;;;;682:17320;4185:153;;;:::i;:::-;682:17320;;5529:16;5521:66;5529:16;;;5521:66;:::i;:::-;5662:21;;;:::i;:::-;;5720:25;;;:::i;:::-;;682:17320;;;;;5849:9;682:17320;;;;;;;;;;;;;;;5878:76;5886:21;;;;5878:76;:::i;:::-;682:17320;;;5849:9;682:17320;;;;;;;;;;;;;;;;;;5849:9;682:17320;;;;;;;;;;;;;6050:27;682:17320;;;6050:27;:::i;:::-;682:17320;;;;;;;;;;;;;;6093:46;929:10:27;;6093:46:11;;1476:19:25;16146:538:11;;682:17320;;;16146:538;682:17320;;;;;;;;;;;;;;;16185:83;;;;929:10:27;16185:83:11;;;682:17320;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16185:83;;;;;;;;;16146:538;-1:-1:-1;16181:493:11;;;;682:17320;16181:493;;;:::i;:::-;;;;;;;;;;;;16146:538;;;;;;;;;682:17320;;;16181:493;16597:62;682:17320;;;16597:62;;;;;;;;682:17320;;;;;;;;;;;;;;;;;;;;;;;16597:62;;;;16181:493;16491:81;;:::i;:::-;;;;16181:493;;;16491:81;682:17320;16491:81;;;682:17320;16543:14;;;;;;;;682:17320;;;;;;:::i;16181:493::-;682:17320;;16317:66;;-1:-1:-1;16313:163:11;;16181:493;;;;16313:163;16407:50;682:17320;;;16407:50;;;;;;;;682:17320;;;;;;;;;;;;;;;;;;;;;;;16185:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;4206:60;-1:-1:-1;682:17320:11;;;3895:18;682:17320;;;;;;;929:10:27;682:17320:11;;;;;;;;;;4206:60;;682:17320;;;;;;;;;;;;;;;-1:-1:-1;;682:17320:11;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;3895:18;682:17320;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;682:17320:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;929:10:27;;;13459:17:11;682:17320;;929:10:27;;682:17320:11;;13532:18;682:17320;;;;;;;;;;;;;;;;;;;;;;;;;;;13593:41;682:17320;929:10:27;13593:41:11;;682:17320;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;682:17320:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3168:29;682:17320;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;3369:3;682:17320;;3348:19;;;;;3417:11;3407:30;682:17320;3417:11;3369:3;3417:11;;;:::i;:::-;682:17320;;3430:6;;;;:::i;:::-;682:17320;3407:30;;:::i;:::-;3388:49;;;;:::i;:::-;682:17320;3369:3;:::i;:::-;3333:13;;3348:19;682:17320;;;;;;;;;;3348:19;682:17320;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;682:17320:11;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;929:10:27;;4697:20:11;;:60;;;;682:17320;4676:153;;;:::i;:::-;682:17320;;;;6847:28;682:17320;;;;6938:16;6930:66;6938:16;;;6930:66;:::i;:::-;7125:13;7156:3;682:17320;;;7140:14;;;;;7188:6;;7493:27;7188:6;7156:3;7188:6;;7225:10;7188:6;;;;;:::i;:::-;682:17320;7225:10;;:::i;:::-;682:17320;;;;;7272:9;682:17320;;;;;;;;;;;;;;;;;;;7313:21;7305:76;7313:21;;;;7305:76;:::i;:::-;682:17320;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7493:27;:::i;:::-;682:17320;;7156:3;:::i;:::-;7125:13;;7140:14;;;;;;;;;;;682:17320;;;;;;;7546:47;682:17320;;;;;;:::i;:::-;;;;;;;;;929:10:27;682:17320:11;929:10:27;682:17320:11;;;:::i;:::-;7546:47;;;1476:19:25;16924:580:11;;682:17320;;;16924:580;682:17320;;;;;;;;16963:90;;;;929:10:27;16963:90:11;;;682:17320;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16963:90;;;;;682:17320;16963:90;;;;;;;16924:580;-1:-1:-1;16959:535:11;;;;;;;:::i;:::-;;;;;;;;;;;16924:580;;;;;;;;682:17320;;;16959:535;17311:81;;:::i;:::-;;;;16959:535;;;17311:81;;;682:17320;17311:81;682:17320;17311:81;682:17320;;17363:14;;;;;;;;682:17320;;;;;;:::i;16959:535::-;682:17320;;17132:71;17128:168;;16959:535;;;;16963:90;;;;;682:17320;16963:90;;;;;;;;;:::i;:::-;;;;;682:17320;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4697:60;-1:-1:-1;682:17320:11;;;3895:18;682:17320;;;;;;;929:10:27;682:17320:11;;;;;;;;;;4697:60;;682:17320;;;;;;;;;;;;;;;;;;-1:-1:-1;;682:17320:11;;;;;;;;;2440:4;682:17320;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;2440:4;682:17320;;;;;;;;;-1:-1:-1;;;682:17320:11;;;;;;;;;;;;;;;;;;;-1:-1:-1;682:17320:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;682:17320:11;;-1:-1:-1;682:17320:11;;-1:-1:-1;682:17320:11;;-1:-1:-1;682:17320:11;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;682:17320:11;;;;;;;;;;;;;;;;1759:52;;1774:37;1759:52;;:131;;;;;682:17320;1759:183;;;;682:17320;;;;;;;;;1759:183;1183:36:32;1168:51;;-1:-1:-1;1759:183:11;;;:131;1842:48;1827:63;;;-1:-1:-1;1759:131:11;;682:17320;;;;;;;-1:-1:-1;;682:17320:11;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;682:17320:11;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;682:17320:11;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;2593:227;682:17320;;2706:21;;;682:17320;;2725:1;682:17320;2791:9;682:17320;;;2725:1;682:17320;;2725:1;682:17320;;;;2725:1;682:17320;;2593:227;:::o;682:17320::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;682:17320:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;682:17320:11;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;17516:193::-;682:17320;;;;;;;;;;;;;;;;;17649:1;682:17320;;;;;;;;;;;;;;;17516:193;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"1031600","executionCost":"1082","totalCost":"1032682"},"external":{"balanceOf(address,uint256)":"2519","balanceOfBatch(address[],uint256[])":"infinite","isApprovedForAll(address,address)":"2672","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"infinite","safeTransferFrom(address,address,uint256,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26523","supportsInterface(bytes4)":"336","uri(uint256)":"infinite"},"internal":{"__ERC1155_init(string memory)":"infinite","__ERC1155_init_unchained(string memory)":"infinite","_afterTokenTransfer(address,address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_asSingletonArray(uint256)":"infinite","_beforeTokenTransfer(address,address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_burn(address,uint256,uint256)":"infinite","_burnBatch(address,uint256[] memory,uint256[] memory)":"infinite","_doSafeBatchTransferAcceptanceCheck(address,address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_doSafeTransferAcceptanceCheck(address,address,address,uint256,uint256,bytes memory)":"infinite","_mint(address,uint256,uint256,bytes memory)":"infinite","_mintBatch(address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_safeBatchTransferFrom(address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_safeTransferFrom(address,address,uint256,uint256,bytes memory)":"infinite","_setApprovalForAll(address,address,bool)":"infinite","_setURI(string memory)":"infinite"}},"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the basic standard multi-token. See https://eips.ethereum.org/EIPS/eip-1155 Originally based on code by Enjin: https://github.com/enjin/erc-1155 _Available since v3.1._\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol\":\"ERC1155Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC1155/ERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC1155Upgradeable.sol\\\";\\nimport \\\"./IERC1155ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC1155MetadataURIUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the basic standard multi-token.\\n * See https://eips.ethereum.org/EIPS/eip-1155\\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\\n *\\n * _Available since v3.1._\\n */\\ncontract ERC1155Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC1155Upgradeable, IERC1155MetadataURIUpgradeable {\\n using AddressUpgradeable for address;\\n\\n // Mapping from token ID to account balances\\n mapping(uint256 => mapping(address => uint256)) private _balances;\\n\\n // Mapping from account to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\\n string private _uri;\\n\\n /**\\n * @dev See {_setURI}.\\n */\\n function __ERC1155_init(string memory uri_) internal onlyInitializing {\\n __ERC1155_init_unchained(uri_);\\n }\\n\\n function __ERC1155_init_unchained(string memory uri_) internal onlyInitializing {\\n _setURI(uri_);\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n return\\n interfaceId == type(IERC1155Upgradeable).interfaceId ||\\n interfaceId == type(IERC1155MetadataURIUpgradeable).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC1155MetadataURI-uri}.\\n *\\n * This implementation returns the same URI for *all* token types. It relies\\n * on the token type ID substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * Clients calling this function must replace the `\\\\{id\\\\}` substring with the\\n * actual token type ID.\\n */\\n function uri(uint256) public view virtual override returns (string memory) {\\n return _uri;\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\\n require(account != address(0), \\\"ERC1155: address zero is not a valid owner\\\");\\n return _balances[id][account];\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOfBatch}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(address[] memory accounts, uint256[] memory ids)\\n public\\n view\\n virtual\\n override\\n returns (uint256[] memory)\\n {\\n require(accounts.length == ids.length, \\\"ERC1155: accounts and ids length mismatch\\\");\\n\\n uint256[] memory batchBalances = new uint256[](accounts.length);\\n\\n for (uint256 i = 0; i < accounts.length; ++i) {\\n batchBalances[i] = balanceOf(accounts[i], ids[i]);\\n }\\n\\n return batchBalances;\\n }\\n\\n /**\\n * @dev See {IERC1155-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC1155-isApprovedForAll}.\\n */\\n function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[account][operator];\\n }\\n\\n /**\\n * @dev See {IERC1155-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeTransferFrom(from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev See {IERC1155-safeBatchTransferFrom}.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeBatchTransferFrom(from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n\\n emit TransferSingle(operator, from, to, id, amount);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; ++i) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n }\\n\\n emit TransferBatch(operator, from, to, ids, amounts);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Sets a new URI for all token types, by relying on the token type ID\\n * substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * By this mechanism, any occurrence of the `\\\\{id\\\\}` substring in either the\\n * URI or any of the amounts in the JSON file at said URI will be replaced by\\n * clients with the token type ID.\\n *\\n * For example, the `https://token-cdn-domain/\\\\{id\\\\}.json` URI would be\\n * interpreted by clients as\\n * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\\n * for token type ID 0x4cce0.\\n *\\n * See {uri}.\\n *\\n * Because these URIs cannot be meaningfully represented by the {URI} event,\\n * this function emits no events.\\n */\\n function _setURI(string memory newuri) internal virtual {\\n _uri = newuri;\\n }\\n\\n /**\\n * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _mint(\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _balances[id][to] += amount;\\n emit TransferSingle(operator, address(0), to, id, amount);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _mintBatch(\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n _balances[ids[i]][to] += amounts[i];\\n }\\n\\n emit TransferBatch(operator, address(0), to, ids, amounts);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens of token type `id` from `from`\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `from` must have at least `amount` tokens of token type `id`.\\n */\\n function _burn(\\n address from,\\n uint256 id,\\n uint256 amount\\n ) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n\\n emit TransferSingle(operator, from, address(0), id, amount);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n */\\n function _burnBatch(\\n address from,\\n uint256[] memory ids,\\n uint256[] memory amounts\\n ) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n }\\n\\n emit TransferBatch(operator, from, address(0), ids, amounts);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC1155: setting approval status for self\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `ids` and `amounts` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `id` and `amount` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n function _doSafeTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155ReceiverUpgradeable(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\\n if (response != IERC1155ReceiverUpgradeable.onERC1155Received.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _doSafeBatchTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155ReceiverUpgradeable(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\\n bytes4 response\\n ) {\\n if (response != IERC1155ReceiverUpgradeable.onERC1155BatchReceived.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\\n uint256[] memory array = new uint256[](1);\\n array[0] = element;\\n\\n return array;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[47] private __gap;\\n}\\n\",\"keccak256\":\"0x6de308cde403f95519bf4b25123cbfe9126f2e0212564bb2ad3c23ac99f1a9cb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155ReceiverUpgradeable is IERC165Upgradeable {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n external\\n view\\n returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0x091a49ef99a2be002680781a10cc9dd74c0f348301ede5482c4ea625f79a8ffe\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURIUpgradeable is IERC1155Upgradeable {\\n /**\\n * @dev Returns the URI for token type `id`.\\n *\\n * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n * clients with the actual token type ID.\\n */\\n function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol:ERC1155Upgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol:ERC1155Upgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol:ERC1155Upgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":7292,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol:ERC1155Upgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":1495,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol:ERC1155Upgradeable","label":"_balances","offset":0,"slot":"101","type":"t_mapping(t_uint256,t_mapping(t_address,t_uint256))"},{"astId":1501,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol:ERC1155Upgradeable","label":"_operatorApprovals","offset":0,"slot":"102","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":1503,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol:ERC1155Upgradeable","label":"_uri","offset":0,"slot":"103","type":"t_string_storage"},{"astId":2710,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol:ERC1155Upgradeable","label":"__gap","offset":0,"slot":"104","type":"t_array(t_uint256)47_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)47_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[47]","numberOfBytes":"1504"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"IERC1155ReceiverUpgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"_Available since v3.1._","kind":"dev","methods":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81, or its own function selector).","params":{"data":"Additional data with no specified format","from":"The address which previously owned the token","ids":"An array containing ids of each token being transferred (order and length must match values array)","operator":"The address which initiated the batch transfer (i.e. msg.sender)","values":"An array containing amounts of each token being transferred (order and length must match ids array)"},"returns":{"_0":"`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"}},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61, or its own function selector).","params":{"data":"Additional data with no specified format","from":"The address which previously owned the token","id":"The ID of the token being transferred","operator":"The address which initiated the transfer (i.e. msg.sender)","value":"The amount of tokens being transferred"},"returns":{"_0":"`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"}},"supportsInterface(bytes4)":{"details":"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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"_Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"supportsInterface(bytes4)\":{\"details\":\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":\"IERC1155ReceiverUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155ReceiverUpgradeable is IERC165Upgradeable {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol":{"IERC1155Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._","events":{"ApprovalForAll(address,address,bool)":{"details":"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."},"TransferBatch(address,address,address,uint256[],uint256[])":{"details":"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."},"TransferSingle(address,address,address,uint256,uint256)":{"details":"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"URI(string,uint256)":{"details":"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."}},"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."},"setApprovalForAll(address,bool)":{"details":"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller."},"supportsInterface(bytes4)":{"details":"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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol\":\"IERC1155Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n external\\n view\\n returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0x091a49ef99a2be002680781a10cc9dd74c0f348301ede5482c4ea625f79a8ffe\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"ERC1155SupplyUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Extension of ERC1155 that adds tracking of total supply per id. Useful for scenarios where Fungible and Non-fungible tokens have to be clearly identified. Note: While a totalSupply of 1 might mean the corresponding is an NFT, there is no guarantees that no other token with the same id are not going to be minted.","events":{"ApprovalForAll(address,address,bool)":{"details":"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"TransferBatch(address,address,address,uint256[],uint256[])":{"details":"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."},"TransferSingle(address,address,address,uint256,uint256)":{"details":"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"URI(string,uint256)":{"details":"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."}},"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"exists(uint256)":{"details":"Indicates whether any token exist with a given id, or not."},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"totalSupply(uint256)":{"details":"Total amount of tokens in with a given id."},"uri(uint256)":{"details":"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\{id\\}` substring with the actual token type ID."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","exists(uint256)":"4f558e79","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","totalSupply(uint256)":"bd85b039","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of ERC1155 that adds tracking of total supply per id. Useful for scenarios where Fungible and Non-fungible tokens have to be clearly identified. Note: While a totalSupply of 1 might mean the corresponding is an NFT, there is no guarantees that no other token with the same id are not going to be minted.\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":\"ERC1155SupplyUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC1155/ERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC1155Upgradeable.sol\\\";\\nimport \\\"./IERC1155ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC1155MetadataURIUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the basic standard multi-token.\\n * See https://eips.ethereum.org/EIPS/eip-1155\\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\\n *\\n * _Available since v3.1._\\n */\\ncontract ERC1155Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC1155Upgradeable, IERC1155MetadataURIUpgradeable {\\n using AddressUpgradeable for address;\\n\\n // Mapping from token ID to account balances\\n mapping(uint256 => mapping(address => uint256)) private _balances;\\n\\n // Mapping from account to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\\n string private _uri;\\n\\n /**\\n * @dev See {_setURI}.\\n */\\n function __ERC1155_init(string memory uri_) internal onlyInitializing {\\n __ERC1155_init_unchained(uri_);\\n }\\n\\n function __ERC1155_init_unchained(string memory uri_) internal onlyInitializing {\\n _setURI(uri_);\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n return\\n interfaceId == type(IERC1155Upgradeable).interfaceId ||\\n interfaceId == type(IERC1155MetadataURIUpgradeable).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC1155MetadataURI-uri}.\\n *\\n * This implementation returns the same URI for *all* token types. It relies\\n * on the token type ID substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * Clients calling this function must replace the `\\\\{id\\\\}` substring with the\\n * actual token type ID.\\n */\\n function uri(uint256) public view virtual override returns (string memory) {\\n return _uri;\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\\n require(account != address(0), \\\"ERC1155: address zero is not a valid owner\\\");\\n return _balances[id][account];\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOfBatch}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(address[] memory accounts, uint256[] memory ids)\\n public\\n view\\n virtual\\n override\\n returns (uint256[] memory)\\n {\\n require(accounts.length == ids.length, \\\"ERC1155: accounts and ids length mismatch\\\");\\n\\n uint256[] memory batchBalances = new uint256[](accounts.length);\\n\\n for (uint256 i = 0; i < accounts.length; ++i) {\\n batchBalances[i] = balanceOf(accounts[i], ids[i]);\\n }\\n\\n return batchBalances;\\n }\\n\\n /**\\n * @dev See {IERC1155-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC1155-isApprovedForAll}.\\n */\\n function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[account][operator];\\n }\\n\\n /**\\n * @dev See {IERC1155-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeTransferFrom(from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev See {IERC1155-safeBatchTransferFrom}.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeBatchTransferFrom(from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n\\n emit TransferSingle(operator, from, to, id, amount);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; ++i) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n }\\n\\n emit TransferBatch(operator, from, to, ids, amounts);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Sets a new URI for all token types, by relying on the token type ID\\n * substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * By this mechanism, any occurrence of the `\\\\{id\\\\}` substring in either the\\n * URI or any of the amounts in the JSON file at said URI will be replaced by\\n * clients with the token type ID.\\n *\\n * For example, the `https://token-cdn-domain/\\\\{id\\\\}.json` URI would be\\n * interpreted by clients as\\n * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\\n * for token type ID 0x4cce0.\\n *\\n * See {uri}.\\n *\\n * Because these URIs cannot be meaningfully represented by the {URI} event,\\n * this function emits no events.\\n */\\n function _setURI(string memory newuri) internal virtual {\\n _uri = newuri;\\n }\\n\\n /**\\n * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _mint(\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _balances[id][to] += amount;\\n emit TransferSingle(operator, address(0), to, id, amount);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _mintBatch(\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n _balances[ids[i]][to] += amounts[i];\\n }\\n\\n emit TransferBatch(operator, address(0), to, ids, amounts);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens of token type `id` from `from`\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `from` must have at least `amount` tokens of token type `id`.\\n */\\n function _burn(\\n address from,\\n uint256 id,\\n uint256 amount\\n ) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n\\n emit TransferSingle(operator, from, address(0), id, amount);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n */\\n function _burnBatch(\\n address from,\\n uint256[] memory ids,\\n uint256[] memory amounts\\n ) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n }\\n\\n emit TransferBatch(operator, from, address(0), ids, amounts);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC1155: setting approval status for self\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `ids` and `amounts` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `id` and `amount` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n function _doSafeTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155ReceiverUpgradeable(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\\n if (response != IERC1155ReceiverUpgradeable.onERC1155Received.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _doSafeBatchTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155ReceiverUpgradeable(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\\n bytes4 response\\n ) {\\n if (response != IERC1155ReceiverUpgradeable.onERC1155BatchReceived.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\\n uint256[] memory array = new uint256[](1);\\n array[0] = element;\\n\\n return array;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[47] private __gap;\\n}\\n\",\"keccak256\":\"0x6de308cde403f95519bf4b25123cbfe9126f2e0212564bb2ad3c23ac99f1a9cb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155ReceiverUpgradeable is IERC165Upgradeable {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n external\\n view\\n returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0x091a49ef99a2be002680781a10cc9dd74c0f348301ede5482c4ea625f79a8ffe\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC1155/extensions/ERC1155Supply.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC1155Upgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Extension of ERC1155 that adds tracking of total supply per id.\\n *\\n * Useful for scenarios where Fungible and Non-fungible tokens have to be\\n * clearly identified. Note: While a totalSupply of 1 might mean the\\n * corresponding is an NFT, there is no guarantees that no other token with the\\n * same id are not going to be minted.\\n */\\nabstract contract ERC1155SupplyUpgradeable is Initializable, ERC1155Upgradeable {\\n function __ERC1155Supply_init() internal onlyInitializing {\\n }\\n\\n function __ERC1155Supply_init_unchained() internal onlyInitializing {\\n }\\n mapping(uint256 => uint256) private _totalSupply;\\n\\n /**\\n * @dev Total amount of tokens in with a given id.\\n */\\n function totalSupply(uint256 id) public view virtual returns (uint256) {\\n return _totalSupply[id];\\n }\\n\\n /**\\n * @dev Indicates whether any token exist with a given id, or not.\\n */\\n function exists(uint256 id) public view virtual returns (bool) {\\n return ERC1155SupplyUpgradeable.totalSupply(id) > 0;\\n }\\n\\n /**\\n * @dev See {ERC1155-_beforeTokenTransfer}.\\n */\\n function _beforeTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual override {\\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n if (from == address(0)) {\\n for (uint256 i = 0; i < ids.length; ++i) {\\n _totalSupply[ids[i]] += amounts[i];\\n }\\n }\\n\\n if (to == address(0)) {\\n for (uint256 i = 0; i < ids.length; ++i) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n uint256 supply = _totalSupply[id];\\n require(supply >= amount, \\\"ERC1155: burn amount exceeds totalSupply\\\");\\n unchecked {\\n _totalSupply[id] = supply - amount;\\n }\\n }\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURIUpgradeable is IERC1155Upgradeable {\\n /**\\n * @dev Returns the URI for token type `id`.\\n *\\n * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n * clients with the actual token type ID.\\n */\\n function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol:ERC1155SupplyUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol:ERC1155SupplyUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol:ERC1155SupplyUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":7292,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol:ERC1155SupplyUpgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":1495,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol:ERC1155SupplyUpgradeable","label":"_balances","offset":0,"slot":"101","type":"t_mapping(t_uint256,t_mapping(t_address,t_uint256))"},{"astId":1501,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol:ERC1155SupplyUpgradeable","label":"_operatorApprovals","offset":0,"slot":"102","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":1503,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol:ERC1155SupplyUpgradeable","label":"_uri","offset":0,"slot":"103","type":"t_string_storage"},{"astId":2710,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol:ERC1155SupplyUpgradeable","label":"__gap","offset":0,"slot":"104","type":"t_array(t_uint256)47_storage"},{"astId":2899,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol:ERC1155SupplyUpgradeable","label":"_totalSupply","offset":0,"slot":"151","type":"t_mapping(t_uint256,t_uint256)"},{"astId":3050,"contract":"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol:ERC1155SupplyUpgradeable","label":"__gap","offset":0,"slot":"152","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)47_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[47]","numberOfBytes":"1504"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"IERC1155MetadataURIUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._","events":{"ApprovalForAll(address,address,bool)":{"details":"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."},"TransferBatch(address,address,address,uint256[],uint256[])":{"details":"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."},"TransferSingle(address,address,address,uint256,uint256)":{"details":"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"URI(string,uint256)":{"details":"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."}},"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."},"setApprovalForAll(address,bool)":{"details":"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller."},"supportsInterface(bytes4)":{"details":"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."},"uri(uint256)":{"details":"Returns the URI for token type `id`. If the `\\{id\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"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.\"},\"uri(uint256)\":{\"details\":\"Returns the URI for token type `id`. If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":\"IERC1155MetadataURIUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n external\\n view\\n returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0x091a49ef99a2be002680781a10cc9dd74c0f348301ede5482c4ea625f79a8ffe\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURIUpgradeable is IERC1155Upgradeable {\\n /**\\n * @dev Returns the URI for token type `id`.\\n *\\n * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n * clients with the actual token type ID.\\n */\\n function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"IERC20Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":\"IERC20Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol":{"IERC20PermitUpgradeable":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.","kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol\":\"IERC20PermitUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xcc70d8e2281fb3ff69e8ab242500f10142cd0a7fa8dd9e45882be270d4d09024\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"SafeERC20Upgradeable":{"abi":[],"devdoc":{"details":"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.","kind":"dev","methods":{},"title":"SafeERC20","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212201b7b061dc982b4cb892934f0c50702ef7adca6a4faa96915ae2c809cefb474fa64736f6c63430008130033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL PUSH28 0x61DC982B4CB892934F0C50702EF7ADCA6A4FAA96915AE2C809CEFB4 PUSH21 0xFA64736F6C63430008130033000000000000000000 ","sourceMap":"740:3847:18:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea26469706673582212201b7b061dc982b4cb892934f0c50702ef7adca6a4faa96915ae2c809cefb474fa64736f6c63430008130033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL PUSH28 0x61DC982B4CB892934F0C50702EF7ADCA6A4FAA96915AE2C809CEFB4 PUSH21 0xFA64736F6C63430008130033000000000000000000 ","sourceMap":"740:3847:18:-:0;;"},"gasEstimates":{"creation":{"codeDepositCost":"11600","executionCost":"infinite","totalCost":"infinite"},"internal":{"_callOptionalReturn(contract IERC20Upgradeable,bytes memory)":"infinite","safeApprove(contract IERC20Upgradeable,address,uint256)":"infinite","safeDecreaseAllowance(contract IERC20Upgradeable,address,uint256)":"infinite","safeIncreaseAllowance(contract IERC20Upgradeable,address,uint256)":"infinite","safePermit(contract IERC20PermitUpgradeable,address,address,uint256,uint256,uint8,bytes32,bytes32)":"infinite","safeTransfer(contract IERC20Upgradeable,address,uint256)":"infinite","safeTransferFrom(contract IERC20Upgradeable,address,address,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":\"SafeERC20Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xcc70d8e2281fb3ff69e8ab242500f10142cd0a7fa8dd9e45882be270d4d09024\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/draft-IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n function safeTransfer(\\n IERC20Upgradeable token,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n function safeTransferFrom(\\n IERC20Upgradeable token,\\n address from,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n function safeIncreaseAllowance(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n uint256 newAllowance = token.allowance(address(this), spender) + value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n function safeDecreaseAllowance(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n uint256 newAllowance = oldAllowance - value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n }\\n\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n if (returndata.length > 0) {\\n // Return data is optional\\n require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n }\\n}\\n\",\"keccak256\":\"0x220c4a5af915e656be2aaa85ca57505d102418e476b1e2ef6c62e0c6ac143871\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol":{"ERC721Upgradeable":{"abi":[{"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":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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"}],"devdoc":{"details":"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234610016576111f3908161001c8239f35b600080fdfe608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a71461089d5750816306fdde03146107d0578163081812fc1461079b578163095ea7b3146105b757816323b872dd1461058d57816342842e0e146105645781636352211e1461052757816370a082311461045657816395d89b4114610305578163a22cb465146101f0578163b88d4fde14610162578163c87b56dd14610111575063e985e9c5146100b457600080fd5b3461010d578060031936011261010d5760ff816020936100d26109ca565b6100da6109f2565b73ffffffffffffffffffffffffffffffffffffffff9182168352606a875283832091168252855220549151911615158152f35b5080fd5b83833461010d57602060031936011261010d5761013161015e9335610fa9565b81815161013d81610a57565b5280519161014a83610a57565b82525191829160208352602083019061096c565b0390f35b919050346101ec5760806003193601126101ec5761017e6109ca565b6101866109f2565b846064359467ffffffffffffffff861161010d573660238701121561010d57850135946101be6101b587610ae3565b95519586610aa2565b858552366024878301011161010d57856101e996602460209301838801378501015260443591610c6f565b80f35b8280fd5b919050346101ec57806003193601126101ec5761020b6109ca565b90602435918215158093036103015773ffffffffffffffffffffffffffffffffffffffff16928333146102a55750338452606a6020528084208385526020528084207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8416179055519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b8480fd5b8284346104535780600319360112610453578151918160665492600184811c91818616958615610449575b602096878510811461041d578899509688969785829a5291826000146103d857505060011461037c575b50505061015e929161036d910385610aa2565b5192828493845283019061096c565b9190869350606683527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e943545b8284106103c0575050508201018161036d61015e61035a565b8054848a0186015288955087949093019281016103a7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b8601909301935084925061036d915061015e905061035a565b60248360228c7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b92607f1692610330565b80fd5b8391503461010d57602060031936011261010d5773ffffffffffffffffffffffffffffffffffffffff6104876109ca565b169081156104a45760208480858581526068845220549051908152f35b60849060208551917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152fd5b828434610453576020600319360112610453575073ffffffffffffffffffffffffffffffffffffffff61055c60209335610b82565b915191168152f35b50503461010d576101e99061057836610a15565b9192519261058584610a57565b858452610c6f565b8334610453576101e961059f36610a15565b916105b26105ad8433610d1f565b610be4565b610e25565b9050346101ec57816003193601126101ec576105d16109ca565b906024359273ffffffffffffffffffffffffffffffffffffffff9182806105f787610b82565b16941693808514610718578033149081156106f9575b5015610677575083855260696020528420827fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905561064f83610b82565b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152fd5b90508652606a60205281862033875260205260ff82872054163861060d565b50602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152fd5b828434610453576020600319360112610453575073ffffffffffffffffffffffffffffffffffffffff61055c60209335610bb4565b8284346104535780600319360112610453578151918160655492600184811c91818616958615610893575b602096878510811461041d578899509688969785829a5291826000146103d85750506001146108375750505061015e929161036d910385610aa2565b9190869350606583527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c75b82841061087b575050508201018161036d61015e61035a565b8054848a018601528895508794909301928101610862565b92607f16926107fb565b8491346101ec5760206003193601126101ec57357fffffffff0000000000000000000000000000000000000000000000000000000081168091036101ec57602092507f80ac58cd000000000000000000000000000000000000000000000000000000008114908115610942575b8115610918575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610911565b7f5b5e139f000000000000000000000000000000000000000000000000000000008114915061090a565b919082519283825260005b8481106109b65750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201610977565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036109ed57565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036109ed57565b60031960609101126109ed5773ffffffffffffffffffffffffffffffffffffffff9060043582811681036109ed579160243590811681036109ed579060443590565b6020810190811067ffffffffffffffff821117610a7357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a7357604052565b67ffffffffffffffff8111610a7357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b15610b2457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152fd5b600052606760205273ffffffffffffffffffffffffffffffffffffffff60406000205416610bb1811515610b1d565b90565b610bbd81610fa9565b600052606960205273ffffffffffffffffffffffffffffffffffffffff6040600020541690565b15610beb57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152fd5b90610c93939291610c836105ad8433610d1f565b610c8e838383610e25565b610fd9565b15610c9a57565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b9073ffffffffffffffffffffffffffffffffffffffff8080610d4084610b82565b16931691838314938415610d73575b508315610d5d575b50505090565b610d6991929350610bb4565b1614388080610d57565b909350600052606a60205260406000208260005260205260ff604060002054169238610d4f565b15610da157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152fd5b90610e5a91610e3384610b82565b9173ffffffffffffffffffffffffffffffffffffffff938493848094169485911614610d9a565b16918215610f265781610e7791610e7086610b82565b1614610d9a565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60008481526069602052604081207fffffffffffffffffffffffff0000000000000000000000000000000000000000908181541690558382526068602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81540190558482526040822060018154019055858252606760205284604083209182541617905580a4565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6000526067602052610fd773ffffffffffffffffffffffffffffffffffffffff604060002054161515610b1d565b565b9293600093909291803b156111b25794849161105a96604051809481937f150b7a02000000000000000000000000000000000000000000000000000000009788845233600485015273ffffffffffffffffffffffffffffffffffffffff80921660248501526044840152608060648401528260209b8c97608483019061096c565b0393165af184918161115a575b50611131575050503d600014611129573d61108181610ae3565b9061108f6040519283610aa2565b81528091833d92013e5b80519182611126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b01fd5b506060611099565b7fffffffff00000000000000000000000000000000000000000000000000000000161492509050565b9091508581813d83116111ab575b6111728183610aa2565b8101031261030157517fffffffff0000000000000000000000000000000000000000000000000000000081168103610301579038611067565b503d611168565b50505091505060019056fea2646970667358221220d3ce54e43efda9cb7127e726c5c69c7ebea538a33de4b4fb06537c05c7bdde2a64736f6c63430008130033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x16 JUMPI PUSH2 0x11F3 SWAP1 DUP2 PUSH2 0x1C DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP2 DUP3 CALLDATASIZE LT ISZERO PUSH2 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 DUP4 CALLDATALOAD PUSH1 0xE0 SHR SWAP2 DUP3 PUSH4 0x1FFC9A7 EQ PUSH2 0x89D JUMPI POP DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x7D0 JUMPI DUP2 PUSH4 0x81812FC EQ PUSH2 0x79B JUMPI DUP2 PUSH4 0x95EA7B3 EQ PUSH2 0x5B7 JUMPI DUP2 PUSH4 0x23B872DD EQ PUSH2 0x58D JUMPI DUP2 PUSH4 0x42842E0E EQ PUSH2 0x564 JUMPI DUP2 PUSH4 0x6352211E EQ PUSH2 0x527 JUMPI DUP2 PUSH4 0x70A08231 EQ PUSH2 0x456 JUMPI DUP2 PUSH4 0x95D89B41 EQ PUSH2 0x305 JUMPI DUP2 PUSH4 0xA22CB465 EQ PUSH2 0x1F0 JUMPI DUP2 PUSH4 0xB88D4FDE EQ PUSH2 0x162 JUMPI DUP2 PUSH4 0xC87B56DD EQ PUSH2 0x111 JUMPI POP PUSH4 0xE985E9C5 EQ PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x10D JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x10D JUMPI PUSH1 0xFF DUP2 PUSH1 0x20 SWAP4 PUSH2 0xD2 PUSH2 0x9CA JUMP JUMPDEST PUSH2 0xDA PUSH2 0x9F2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP4 MSTORE PUSH1 0x6A DUP8 MSTORE DUP4 DUP4 KECCAK256 SWAP2 AND DUP3 MSTORE DUP6 MSTORE KECCAK256 SLOAD SWAP2 MLOAD SWAP2 AND ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST DUP4 DUP4 CALLVALUE PUSH2 0x10D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x10D JUMPI PUSH2 0x131 PUSH2 0x15E SWAP4 CALLDATALOAD PUSH2 0xFA9 JUMP JUMPDEST DUP2 DUP2 MLOAD PUSH2 0x13D DUP2 PUSH2 0xA57 JUMP JUMPDEST MSTORE DUP1 MLOAD SWAP2 PUSH2 0x14A DUP4 PUSH2 0xA57 JUMP JUMPDEST DUP3 MSTORE MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x96C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP2 SWAP1 POP CALLVALUE PUSH2 0x1EC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1EC JUMPI PUSH2 0x17E PUSH2 0x9CA JUMP JUMPDEST PUSH2 0x186 PUSH2 0x9F2 JUMP JUMPDEST DUP5 PUSH1 0x64 CALLDATALOAD SWAP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP7 GT PUSH2 0x10D JUMPI CALLDATASIZE PUSH1 0x23 DUP8 ADD SLT ISZERO PUSH2 0x10D JUMPI DUP6 ADD CALLDATALOAD SWAP5 PUSH2 0x1BE PUSH2 0x1B5 DUP8 PUSH2 0xAE3 JUMP JUMPDEST SWAP6 MLOAD SWAP6 DUP7 PUSH2 0xAA2 JUMP JUMPDEST DUP6 DUP6 MSTORE CALLDATASIZE PUSH1 0x24 DUP8 DUP4 ADD ADD GT PUSH2 0x10D JUMPI DUP6 PUSH2 0x1E9 SWAP7 PUSH1 0x24 PUSH1 0x20 SWAP4 ADD DUP4 DUP9 ADD CALLDATACOPY DUP6 ADD ADD MSTORE PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0xC6F JUMP JUMPDEST DUP1 RETURN JUMPDEST DUP3 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP CALLVALUE PUSH2 0x1EC JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1EC JUMPI PUSH2 0x20B PUSH2 0x9CA JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP2 DUP3 ISZERO ISZERO DUP1 SWAP4 SUB PUSH2 0x301 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 DUP4 CALLER EQ PUSH2 0x2A5 JUMPI POP CALLER DUP5 MSTORE PUSH1 0x6A PUSH1 0x20 MSTORE DUP1 DUP5 KECCAK256 DUP4 DUP6 MSTORE PUSH1 0x20 MSTORE DUP1 DUP5 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND PUSH1 0xFF DUP5 AND OR SWAP1 SSTORE MLOAD SWAP1 DUP2 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 PUSH1 0x20 CALLER SWAP3 LOG3 DUP1 RETURN JUMPDEST PUSH1 0x20 PUSH1 0x64 SWAP3 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP3 DUP5 CALLVALUE PUSH2 0x453 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x453 JUMPI DUP2 MLOAD SWAP2 DUP2 PUSH1 0x66 SLOAD SWAP3 PUSH1 0x1 DUP5 DUP2 SHR SWAP2 DUP2 DUP7 AND SWAP6 DUP7 ISZERO PUSH2 0x449 JUMPI JUMPDEST PUSH1 0x20 SWAP7 DUP8 DUP6 LT DUP2 EQ PUSH2 0x41D JUMPI DUP9 SWAP10 POP SWAP7 DUP9 SWAP7 SWAP8 DUP6 DUP3 SWAP11 MSTORE SWAP2 DUP3 PUSH1 0x0 EQ PUSH2 0x3D8 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x37C JUMPI JUMPDEST POP POP POP PUSH2 0x15E SWAP3 SWAP2 PUSH2 0x36D SWAP2 SUB DUP6 PUSH2 0xAA2 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x96C JUMP JUMPDEST SWAP2 SWAP1 DUP7 SWAP4 POP PUSH1 0x66 DUP4 MSTORE PUSH32 0x46501879B8CA8525E8C2FD519E2FBFCFA2EBEA26501294AA02CBFCFB12E94354 JUMPDEST DUP3 DUP5 LT PUSH2 0x3C0 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x36D PUSH2 0x15E PUSH2 0x35A JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0x36D SWAP2 POP PUSH2 0x15E SWAP1 POP PUSH2 0x35A JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH1 0x22 DUP13 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x330 JUMP JUMPDEST DUP1 REVERT JUMPDEST DUP4 SWAP2 POP CALLVALUE PUSH2 0x10D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x10D JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x487 PUSH2 0x9CA JUMP JUMPDEST AND SWAP1 DUP2 ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x20 DUP5 DUP1 DUP6 DUP6 DUP2 MSTORE PUSH1 0x68 DUP5 MSTORE KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x84 SWAP1 PUSH1 0x20 DUP6 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST DUP3 DUP5 CALLVALUE PUSH2 0x453 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x453 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x55C PUSH1 0x20 SWAP4 CALLDATALOAD PUSH2 0xB82 JUMP JUMPDEST SWAP2 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST POP POP CALLVALUE PUSH2 0x10D JUMPI PUSH2 0x1E9 SWAP1 PUSH2 0x578 CALLDATASIZE PUSH2 0xA15 JUMP JUMPDEST SWAP2 SWAP3 MLOAD SWAP3 PUSH2 0x585 DUP5 PUSH2 0xA57 JUMP JUMPDEST DUP6 DUP5 MSTORE PUSH2 0xC6F JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x453 JUMPI PUSH2 0x1E9 PUSH2 0x59F CALLDATASIZE PUSH2 0xA15 JUMP JUMPDEST SWAP2 PUSH2 0x5B2 PUSH2 0x5AD DUP5 CALLER PUSH2 0xD1F JUMP JUMPDEST PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0xE25 JUMP JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x1EC JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1EC JUMPI PUSH2 0x5D1 PUSH2 0x9CA JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP1 PUSH2 0x5F7 DUP8 PUSH2 0xB82 JUMP JUMPDEST AND SWAP5 AND SWAP4 DUP1 DUP6 EQ PUSH2 0x718 JUMPI DUP1 CALLER EQ SWAP1 DUP2 ISZERO PUSH2 0x6F9 JUMPI JUMPDEST POP ISZERO PUSH2 0x677 JUMPI POP DUP4 DUP6 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE DUP5 KECCAK256 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x64F DUP4 PUSH2 0xB82 JUMP JUMPDEST AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 DUP1 LOG4 DUP1 RETURN JUMPDEST PUSH1 0x20 PUSH1 0x84 SWAP3 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 POP DUP7 MSTORE PUSH1 0x6A PUSH1 0x20 MSTORE DUP2 DUP7 KECCAK256 CALLER DUP8 MSTORE PUSH1 0x20 MSTORE PUSH1 0xFF DUP3 DUP8 KECCAK256 SLOAD AND CODESIZE PUSH2 0x60D JUMP JUMPDEST POP PUSH1 0x20 PUSH1 0x84 SWAP3 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST DUP3 DUP5 CALLVALUE PUSH2 0x453 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x453 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x55C PUSH1 0x20 SWAP4 CALLDATALOAD PUSH2 0xBB4 JUMP JUMPDEST DUP3 DUP5 CALLVALUE PUSH2 0x453 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x453 JUMPI DUP2 MLOAD SWAP2 DUP2 PUSH1 0x65 SLOAD SWAP3 PUSH1 0x1 DUP5 DUP2 SHR SWAP2 DUP2 DUP7 AND SWAP6 DUP7 ISZERO PUSH2 0x893 JUMPI JUMPDEST PUSH1 0x20 SWAP7 DUP8 DUP6 LT DUP2 EQ PUSH2 0x41D JUMPI DUP9 SWAP10 POP SWAP7 DUP9 SWAP7 SWAP8 DUP6 DUP3 SWAP11 MSTORE SWAP2 DUP3 PUSH1 0x0 EQ PUSH2 0x3D8 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x837 JUMPI POP POP POP PUSH2 0x15E SWAP3 SWAP2 PUSH2 0x36D SWAP2 SUB DUP6 PUSH2 0xAA2 JUMP JUMPDEST SWAP2 SWAP1 DUP7 SWAP4 POP PUSH1 0x65 DUP4 MSTORE PUSH32 0x8FF97419363FFD7000167F130EF7168FBEA05FAF9251824CA5043F113CC6A7C7 JUMPDEST DUP3 DUP5 LT PUSH2 0x87B JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x36D PUSH2 0x15E PUSH2 0x35A JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x862 JUMP JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x7FB JUMP JUMPDEST DUP5 SWAP2 CALLVALUE PUSH2 0x1EC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1EC JUMPI CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x1EC JUMPI PUSH1 0x20 SWAP3 POP PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x942 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x918 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ DUP4 PUSH2 0x911 JUMP JUMPDEST PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP PUSH2 0x90A JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x9B6 JUMPI POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 ADD DUP2 ADD MLOAD DUP5 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x977 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x9ED JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x9ED JUMPI JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x9ED JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x9ED JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x9ED JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA73 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA73 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA73 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xB24 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0xBB1 DUP2 ISZERO ISZERO PUSH2 0xB1D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBBD DUP2 PUSH2 0xFA9 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xBEB JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206F7220617070726F76656400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH2 0xC93 SWAP4 SWAP3 SWAP2 PUSH2 0xC83 PUSH2 0x5AD DUP5 CALLER PUSH2 0xD1F JUMP JUMPDEST PUSH2 0xC8E DUP4 DUP4 DUP4 PUSH2 0xE25 JUMP JUMPDEST PUSH2 0xFD9 JUMP JUMPDEST ISZERO PUSH2 0xC9A JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 PUSH2 0xD40 DUP5 PUSH2 0xB82 JUMP JUMPDEST AND SWAP4 AND SWAP2 DUP4 DUP4 EQ SWAP4 DUP5 ISZERO PUSH2 0xD73 JUMPI JUMPDEST POP DUP4 ISZERO PUSH2 0xD5D JUMPI JUMPDEST POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0xD69 SWAP2 SWAP3 SWAP4 POP PUSH2 0xBB4 JUMP JUMPDEST AND EQ CODESIZE DUP1 DUP1 PUSH2 0xD57 JUMP JUMPDEST SWAP1 SWAP4 POP PUSH1 0x0 MSTORE PUSH1 0x6A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP3 CODESIZE PUSH2 0xD4F JUMP JUMPDEST ISZERO PUSH2 0xDA1 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH2 0xE5A SWAP2 PUSH2 0xE33 DUP5 PUSH2 0xB82 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 SWAP4 DUP5 DUP1 SWAP5 AND SWAP5 DUP6 SWAP2 AND EQ PUSH2 0xD9A JUMP JUMPDEST AND SWAP2 DUP3 ISZERO PUSH2 0xF26 JUMPI DUP2 PUSH2 0xE77 SWAP2 PUSH2 0xE70 DUP7 PUSH2 0xB82 JUMP JUMPDEST AND EQ PUSH2 0xD9A JUMP JUMPDEST PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 DUP2 SLOAD AND SWAP1 SSTORE DUP4 DUP3 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 SLOAD ADD SWAP1 SSTORE DUP5 DUP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 PUSH1 0x1 DUP2 SLOAD ADD SWAP1 SSTORE DUP6 DUP3 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE DUP5 PUSH1 0x40 DUP4 KECCAK256 SWAP2 DUP3 SLOAD AND OR SWAP1 SSTORE DUP1 LOG4 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH2 0xFD7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO PUSH2 0xB1D JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP4 PUSH1 0x0 SWAP4 SWAP1 SWAP3 SWAP2 DUP1 EXTCODESIZE ISZERO PUSH2 0x11B2 JUMPI SWAP5 DUP5 SWAP2 PUSH2 0x105A SWAP7 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 SWAP8 DUP9 DUP5 MSTORE CALLER PUSH1 0x4 DUP6 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x80 PUSH1 0x64 DUP5 ADD MSTORE DUP3 PUSH1 0x20 SWAP12 DUP13 SWAP8 PUSH1 0x84 DUP4 ADD SWAP1 PUSH2 0x96C JUMP JUMPDEST SUB SWAP4 AND GAS CALL DUP5 SWAP2 DUP2 PUSH2 0x115A JUMPI JUMPDEST POP PUSH2 0x1131 JUMPI POP POP POP RETURNDATASIZE PUSH1 0x0 EQ PUSH2 0x1129 JUMPI RETURNDATASIZE PUSH2 0x1081 DUP2 PUSH2 0xAE3 JUMP JUMPDEST SWAP1 PUSH2 0x108F PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0xAA2 JUMP JUMPDEST DUP2 MSTORE DUP1 SWAP2 DUP4 RETURNDATASIZE SWAP3 ADD RETURNDATACOPY JUMPDEST DUP1 MLOAD SWAP2 DUP3 PUSH2 0x1126 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST ADD REVERT JUMPDEST POP PUSH1 0x60 PUSH2 0x1099 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ SWAP3 POP SWAP1 POP JUMP JUMPDEST SWAP1 SWAP2 POP DUP6 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x11AB JUMPI JUMPDEST PUSH2 0x1172 DUP2 DUP4 PUSH2 0xAA2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x301 JUMPI MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0x301 JUMPI SWAP1 CODESIZE PUSH2 0x1067 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1168 JUMP JUMPDEST POP POP POP SWAP2 POP POP PUSH1 0x1 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD3 0xCE SLOAD 0xE4 RETURNDATACOPY REVERT 0xA9 0xCB PUSH18 0x27E726C5C69C7EBEA538A33DE4B4FB06537C SDIV 0xC7 0xBD 0xDE 0x2A PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"751:17407:19:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":2546,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_8502":{"entryPoint":2506,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_addresst_addresst_uint256":{"entryPoint":2581,"id":null,"parameterSlots":1,"returnSlots":3},"abi_encode_string":{"entryPoint":2412,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral_1e76":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":2787,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":2722,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_10906":{"entryPoint":2647,"id":null,"parameterSlots":1,"returnSlots":0},"fun_checkOnERC721Received":{"entryPoint":4057,"id":4366,"parameterSlots":4,"returnSlots":1},"fun_getApproved":{"entryPoint":2996,"id":3756,"parameterSlots":1,"returnSlots":1},"fun_isApprovedOrOwner":{"entryPoint":3359,"id":3961,"parameterSlots":2,"returnSlots":1},"fun_ownerOf":{"entryPoint":2946,"id":3627,"parameterSlots":1,"returnSlots":1},"fun_requireMinted":{"entryPoint":4009,"id":4304,"parameterSlots":1,"returnSlots":0},"fun_safeTransferFrom":{"entryPoint":3183,"id":3867,"parameterSlots":4,"returnSlots":0},"fun_transfer":{"entryPoint":3621,"id":4234,"parameterSlots":3,"returnSlots":0},"require_helper_stringliteral_12a8":{"entryPoint":3044,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_277f":{"entryPoint":3482,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_b08d":{"entryPoint":2845,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a71461089d5750816306fdde03146107d0578163081812fc1461079b578163095ea7b3146105b757816323b872dd1461058d57816342842e0e146105645781636352211e1461052757816370a082311461045657816395d89b4114610305578163a22cb465146101f0578163b88d4fde14610162578163c87b56dd14610111575063e985e9c5146100b457600080fd5b3461010d578060031936011261010d5760ff816020936100d26109ca565b6100da6109f2565b73ffffffffffffffffffffffffffffffffffffffff9182168352606a875283832091168252855220549151911615158152f35b5080fd5b83833461010d57602060031936011261010d5761013161015e9335610fa9565b81815161013d81610a57565b5280519161014a83610a57565b82525191829160208352602083019061096c565b0390f35b919050346101ec5760806003193601126101ec5761017e6109ca565b6101866109f2565b846064359467ffffffffffffffff861161010d573660238701121561010d57850135946101be6101b587610ae3565b95519586610aa2565b858552366024878301011161010d57856101e996602460209301838801378501015260443591610c6f565b80f35b8280fd5b919050346101ec57806003193601126101ec5761020b6109ca565b90602435918215158093036103015773ffffffffffffffffffffffffffffffffffffffff16928333146102a55750338452606a6020528084208385526020528084207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8416179055519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b8480fd5b8284346104535780600319360112610453578151918160665492600184811c91818616958615610449575b602096878510811461041d578899509688969785829a5291826000146103d857505060011461037c575b50505061015e929161036d910385610aa2565b5192828493845283019061096c565b9190869350606683527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e943545b8284106103c0575050508201018161036d61015e61035a565b8054848a0186015288955087949093019281016103a7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b8601909301935084925061036d915061015e905061035a565b60248360228c7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b92607f1692610330565b80fd5b8391503461010d57602060031936011261010d5773ffffffffffffffffffffffffffffffffffffffff6104876109ca565b169081156104a45760208480858581526068845220549051908152f35b60849060208551917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152fd5b828434610453576020600319360112610453575073ffffffffffffffffffffffffffffffffffffffff61055c60209335610b82565b915191168152f35b50503461010d576101e99061057836610a15565b9192519261058584610a57565b858452610c6f565b8334610453576101e961059f36610a15565b916105b26105ad8433610d1f565b610be4565b610e25565b9050346101ec57816003193601126101ec576105d16109ca565b906024359273ffffffffffffffffffffffffffffffffffffffff9182806105f787610b82565b16941693808514610718578033149081156106f9575b5015610677575083855260696020528420827fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905561064f83610b82565b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152fd5b90508652606a60205281862033875260205260ff82872054163861060d565b50602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152fd5b828434610453576020600319360112610453575073ffffffffffffffffffffffffffffffffffffffff61055c60209335610bb4565b8284346104535780600319360112610453578151918160655492600184811c91818616958615610893575b602096878510811461041d578899509688969785829a5291826000146103d85750506001146108375750505061015e929161036d910385610aa2565b9190869350606583527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c75b82841061087b575050508201018161036d61015e61035a565b8054848a018601528895508794909301928101610862565b92607f16926107fb565b8491346101ec5760206003193601126101ec57357fffffffff0000000000000000000000000000000000000000000000000000000081168091036101ec57602092507f80ac58cd000000000000000000000000000000000000000000000000000000008114908115610942575b8115610918575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610911565b7f5b5e139f000000000000000000000000000000000000000000000000000000008114915061090a565b919082519283825260005b8481106109b65750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201610977565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036109ed57565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036109ed57565b60031960609101126109ed5773ffffffffffffffffffffffffffffffffffffffff9060043582811681036109ed579160243590811681036109ed579060443590565b6020810190811067ffffffffffffffff821117610a7357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a7357604052565b67ffffffffffffffff8111610a7357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b15610b2457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152fd5b600052606760205273ffffffffffffffffffffffffffffffffffffffff60406000205416610bb1811515610b1d565b90565b610bbd81610fa9565b600052606960205273ffffffffffffffffffffffffffffffffffffffff6040600020541690565b15610beb57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152fd5b90610c93939291610c836105ad8433610d1f565b610c8e838383610e25565b610fd9565b15610c9a57565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b9073ffffffffffffffffffffffffffffffffffffffff8080610d4084610b82565b16931691838314938415610d73575b508315610d5d575b50505090565b610d6991929350610bb4565b1614388080610d57565b909350600052606a60205260406000208260005260205260ff604060002054169238610d4f565b15610da157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152fd5b90610e5a91610e3384610b82565b9173ffffffffffffffffffffffffffffffffffffffff938493848094169485911614610d9a565b16918215610f265781610e7791610e7086610b82565b1614610d9a565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60008481526069602052604081207fffffffffffffffffffffffff0000000000000000000000000000000000000000908181541690558382526068602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81540190558482526040822060018154019055858252606760205284604083209182541617905580a4565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6000526067602052610fd773ffffffffffffffffffffffffffffffffffffffff604060002054161515610b1d565b565b9293600093909291803b156111b25794849161105a96604051809481937f150b7a02000000000000000000000000000000000000000000000000000000009788845233600485015273ffffffffffffffffffffffffffffffffffffffff80921660248501526044840152608060648401528260209b8c97608483019061096c565b0393165af184918161115a575b50611131575050503d600014611129573d61108181610ae3565b9061108f6040519283610aa2565b81528091833d92013e5b80519182611126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b01fd5b506060611099565b7fffffffff00000000000000000000000000000000000000000000000000000000161492509050565b9091508581813d83116111ab575b6111728183610aa2565b8101031261030157517fffffffff0000000000000000000000000000000000000000000000000000000081168103610301579038611067565b503d611168565b50505091505060019056fea2646970667358221220d3ce54e43efda9cb7127e726c5c69c7ebea538a33de4b4fb06537c05c7bdde2a64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP2 DUP3 CALLDATASIZE LT ISZERO PUSH2 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 DUP4 CALLDATALOAD PUSH1 0xE0 SHR SWAP2 DUP3 PUSH4 0x1FFC9A7 EQ PUSH2 0x89D JUMPI POP DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x7D0 JUMPI DUP2 PUSH4 0x81812FC EQ PUSH2 0x79B JUMPI DUP2 PUSH4 0x95EA7B3 EQ PUSH2 0x5B7 JUMPI DUP2 PUSH4 0x23B872DD EQ PUSH2 0x58D JUMPI DUP2 PUSH4 0x42842E0E EQ PUSH2 0x564 JUMPI DUP2 PUSH4 0x6352211E EQ PUSH2 0x527 JUMPI DUP2 PUSH4 0x70A08231 EQ PUSH2 0x456 JUMPI DUP2 PUSH4 0x95D89B41 EQ PUSH2 0x305 JUMPI DUP2 PUSH4 0xA22CB465 EQ PUSH2 0x1F0 JUMPI DUP2 PUSH4 0xB88D4FDE EQ PUSH2 0x162 JUMPI DUP2 PUSH4 0xC87B56DD EQ PUSH2 0x111 JUMPI POP PUSH4 0xE985E9C5 EQ PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x10D JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x10D JUMPI PUSH1 0xFF DUP2 PUSH1 0x20 SWAP4 PUSH2 0xD2 PUSH2 0x9CA JUMP JUMPDEST PUSH2 0xDA PUSH2 0x9F2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP4 MSTORE PUSH1 0x6A DUP8 MSTORE DUP4 DUP4 KECCAK256 SWAP2 AND DUP3 MSTORE DUP6 MSTORE KECCAK256 SLOAD SWAP2 MLOAD SWAP2 AND ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST DUP4 DUP4 CALLVALUE PUSH2 0x10D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x10D JUMPI PUSH2 0x131 PUSH2 0x15E SWAP4 CALLDATALOAD PUSH2 0xFA9 JUMP JUMPDEST DUP2 DUP2 MLOAD PUSH2 0x13D DUP2 PUSH2 0xA57 JUMP JUMPDEST MSTORE DUP1 MLOAD SWAP2 PUSH2 0x14A DUP4 PUSH2 0xA57 JUMP JUMPDEST DUP3 MSTORE MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x96C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP2 SWAP1 POP CALLVALUE PUSH2 0x1EC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1EC JUMPI PUSH2 0x17E PUSH2 0x9CA JUMP JUMPDEST PUSH2 0x186 PUSH2 0x9F2 JUMP JUMPDEST DUP5 PUSH1 0x64 CALLDATALOAD SWAP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP7 GT PUSH2 0x10D JUMPI CALLDATASIZE PUSH1 0x23 DUP8 ADD SLT ISZERO PUSH2 0x10D JUMPI DUP6 ADD CALLDATALOAD SWAP5 PUSH2 0x1BE PUSH2 0x1B5 DUP8 PUSH2 0xAE3 JUMP JUMPDEST SWAP6 MLOAD SWAP6 DUP7 PUSH2 0xAA2 JUMP JUMPDEST DUP6 DUP6 MSTORE CALLDATASIZE PUSH1 0x24 DUP8 DUP4 ADD ADD GT PUSH2 0x10D JUMPI DUP6 PUSH2 0x1E9 SWAP7 PUSH1 0x24 PUSH1 0x20 SWAP4 ADD DUP4 DUP9 ADD CALLDATACOPY DUP6 ADD ADD MSTORE PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0xC6F JUMP JUMPDEST DUP1 RETURN JUMPDEST DUP3 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP CALLVALUE PUSH2 0x1EC JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1EC JUMPI PUSH2 0x20B PUSH2 0x9CA JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP2 DUP3 ISZERO ISZERO DUP1 SWAP4 SUB PUSH2 0x301 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 DUP4 CALLER EQ PUSH2 0x2A5 JUMPI POP CALLER DUP5 MSTORE PUSH1 0x6A PUSH1 0x20 MSTORE DUP1 DUP5 KECCAK256 DUP4 DUP6 MSTORE PUSH1 0x20 MSTORE DUP1 DUP5 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND PUSH1 0xFF DUP5 AND OR SWAP1 SSTORE MLOAD SWAP1 DUP2 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 PUSH1 0x20 CALLER SWAP3 LOG3 DUP1 RETURN JUMPDEST PUSH1 0x20 PUSH1 0x64 SWAP3 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP3 DUP5 CALLVALUE PUSH2 0x453 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x453 JUMPI DUP2 MLOAD SWAP2 DUP2 PUSH1 0x66 SLOAD SWAP3 PUSH1 0x1 DUP5 DUP2 SHR SWAP2 DUP2 DUP7 AND SWAP6 DUP7 ISZERO PUSH2 0x449 JUMPI JUMPDEST PUSH1 0x20 SWAP7 DUP8 DUP6 LT DUP2 EQ PUSH2 0x41D JUMPI DUP9 SWAP10 POP SWAP7 DUP9 SWAP7 SWAP8 DUP6 DUP3 SWAP11 MSTORE SWAP2 DUP3 PUSH1 0x0 EQ PUSH2 0x3D8 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x37C JUMPI JUMPDEST POP POP POP PUSH2 0x15E SWAP3 SWAP2 PUSH2 0x36D SWAP2 SUB DUP6 PUSH2 0xAA2 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x96C JUMP JUMPDEST SWAP2 SWAP1 DUP7 SWAP4 POP PUSH1 0x66 DUP4 MSTORE PUSH32 0x46501879B8CA8525E8C2FD519E2FBFCFA2EBEA26501294AA02CBFCFB12E94354 JUMPDEST DUP3 DUP5 LT PUSH2 0x3C0 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x36D PUSH2 0x15E PUSH2 0x35A JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0x36D SWAP2 POP PUSH2 0x15E SWAP1 POP PUSH2 0x35A JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH1 0x22 DUP13 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x330 JUMP JUMPDEST DUP1 REVERT JUMPDEST DUP4 SWAP2 POP CALLVALUE PUSH2 0x10D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x10D JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x487 PUSH2 0x9CA JUMP JUMPDEST AND SWAP1 DUP2 ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x20 DUP5 DUP1 DUP6 DUP6 DUP2 MSTORE PUSH1 0x68 DUP5 MSTORE KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x84 SWAP1 PUSH1 0x20 DUP6 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST DUP3 DUP5 CALLVALUE PUSH2 0x453 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x453 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x55C PUSH1 0x20 SWAP4 CALLDATALOAD PUSH2 0xB82 JUMP JUMPDEST SWAP2 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST POP POP CALLVALUE PUSH2 0x10D JUMPI PUSH2 0x1E9 SWAP1 PUSH2 0x578 CALLDATASIZE PUSH2 0xA15 JUMP JUMPDEST SWAP2 SWAP3 MLOAD SWAP3 PUSH2 0x585 DUP5 PUSH2 0xA57 JUMP JUMPDEST DUP6 DUP5 MSTORE PUSH2 0xC6F JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x453 JUMPI PUSH2 0x1E9 PUSH2 0x59F CALLDATASIZE PUSH2 0xA15 JUMP JUMPDEST SWAP2 PUSH2 0x5B2 PUSH2 0x5AD DUP5 CALLER PUSH2 0xD1F JUMP JUMPDEST PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0xE25 JUMP JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x1EC JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1EC JUMPI PUSH2 0x5D1 PUSH2 0x9CA JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP1 PUSH2 0x5F7 DUP8 PUSH2 0xB82 JUMP JUMPDEST AND SWAP5 AND SWAP4 DUP1 DUP6 EQ PUSH2 0x718 JUMPI DUP1 CALLER EQ SWAP1 DUP2 ISZERO PUSH2 0x6F9 JUMPI JUMPDEST POP ISZERO PUSH2 0x677 JUMPI POP DUP4 DUP6 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE DUP5 KECCAK256 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x64F DUP4 PUSH2 0xB82 JUMP JUMPDEST AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 DUP1 LOG4 DUP1 RETURN JUMPDEST PUSH1 0x20 PUSH1 0x84 SWAP3 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 POP DUP7 MSTORE PUSH1 0x6A PUSH1 0x20 MSTORE DUP2 DUP7 KECCAK256 CALLER DUP8 MSTORE PUSH1 0x20 MSTORE PUSH1 0xFF DUP3 DUP8 KECCAK256 SLOAD AND CODESIZE PUSH2 0x60D JUMP JUMPDEST POP PUSH1 0x20 PUSH1 0x84 SWAP3 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST DUP3 DUP5 CALLVALUE PUSH2 0x453 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x453 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x55C PUSH1 0x20 SWAP4 CALLDATALOAD PUSH2 0xBB4 JUMP JUMPDEST DUP3 DUP5 CALLVALUE PUSH2 0x453 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x453 JUMPI DUP2 MLOAD SWAP2 DUP2 PUSH1 0x65 SLOAD SWAP3 PUSH1 0x1 DUP5 DUP2 SHR SWAP2 DUP2 DUP7 AND SWAP6 DUP7 ISZERO PUSH2 0x893 JUMPI JUMPDEST PUSH1 0x20 SWAP7 DUP8 DUP6 LT DUP2 EQ PUSH2 0x41D JUMPI DUP9 SWAP10 POP SWAP7 DUP9 SWAP7 SWAP8 DUP6 DUP3 SWAP11 MSTORE SWAP2 DUP3 PUSH1 0x0 EQ PUSH2 0x3D8 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x837 JUMPI POP POP POP PUSH2 0x15E SWAP3 SWAP2 PUSH2 0x36D SWAP2 SUB DUP6 PUSH2 0xAA2 JUMP JUMPDEST SWAP2 SWAP1 DUP7 SWAP4 POP PUSH1 0x65 DUP4 MSTORE PUSH32 0x8FF97419363FFD7000167F130EF7168FBEA05FAF9251824CA5043F113CC6A7C7 JUMPDEST DUP3 DUP5 LT PUSH2 0x87B JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x36D PUSH2 0x15E PUSH2 0x35A JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x862 JUMP JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x7FB JUMP JUMPDEST DUP5 SWAP2 CALLVALUE PUSH2 0x1EC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1EC JUMPI CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x1EC JUMPI PUSH1 0x20 SWAP3 POP PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x942 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x918 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ DUP4 PUSH2 0x911 JUMP JUMPDEST PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP PUSH2 0x90A JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x9B6 JUMPI POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP7 SWAP8 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 ADD DUP2 ADD MLOAD DUP5 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x977 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x9ED JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x9ED JUMPI JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x9ED JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x9ED JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x9ED JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA73 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA73 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA73 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xB24 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0xBB1 DUP2 ISZERO ISZERO PUSH2 0xB1D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xBBD DUP2 PUSH2 0xFA9 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST ISZERO PUSH2 0xBEB JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206F7220617070726F76656400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH2 0xC93 SWAP4 SWAP3 SWAP2 PUSH2 0xC83 PUSH2 0x5AD DUP5 CALLER PUSH2 0xD1F JUMP JUMPDEST PUSH2 0xC8E DUP4 DUP4 DUP4 PUSH2 0xE25 JUMP JUMPDEST PUSH2 0xFD9 JUMP JUMPDEST ISZERO PUSH2 0xC9A JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 PUSH2 0xD40 DUP5 PUSH2 0xB82 JUMP JUMPDEST AND SWAP4 AND SWAP2 DUP4 DUP4 EQ SWAP4 DUP5 ISZERO PUSH2 0xD73 JUMPI JUMPDEST POP DUP4 ISZERO PUSH2 0xD5D JUMPI JUMPDEST POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0xD69 SWAP2 SWAP3 SWAP4 POP PUSH2 0xBB4 JUMP JUMPDEST AND EQ CODESIZE DUP1 DUP1 PUSH2 0xD57 JUMP JUMPDEST SWAP1 SWAP4 POP PUSH1 0x0 MSTORE PUSH1 0x6A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP3 CODESIZE PUSH2 0xD4F JUMP JUMPDEST ISZERO PUSH2 0xDA1 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH2 0xE5A SWAP2 PUSH2 0xE33 DUP5 PUSH2 0xB82 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 SWAP4 DUP5 DUP1 SWAP5 AND SWAP5 DUP6 SWAP2 AND EQ PUSH2 0xD9A JUMP JUMPDEST AND SWAP2 DUP3 ISZERO PUSH2 0xF26 JUMPI DUP2 PUSH2 0xE77 SWAP2 PUSH2 0xE70 DUP7 PUSH2 0xB82 JUMP JUMPDEST AND EQ PUSH2 0xD9A JUMP JUMPDEST PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x69 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 DUP2 SLOAD AND SWAP1 SSTORE DUP4 DUP3 MSTORE PUSH1 0x68 PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 SLOAD ADD SWAP1 SSTORE DUP5 DUP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 PUSH1 0x1 DUP2 SLOAD ADD SWAP1 SSTORE DUP6 DUP3 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE DUP5 PUSH1 0x40 DUP4 KECCAK256 SWAP2 DUP3 SLOAD AND OR SWAP1 SSTORE DUP1 LOG4 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x67 PUSH1 0x20 MSTORE PUSH2 0xFD7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO PUSH2 0xB1D JUMP JUMPDEST JUMP JUMPDEST SWAP3 SWAP4 PUSH1 0x0 SWAP4 SWAP1 SWAP3 SWAP2 DUP1 EXTCODESIZE ISZERO PUSH2 0x11B2 JUMPI SWAP5 DUP5 SWAP2 PUSH2 0x105A SWAP7 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 SWAP8 DUP9 DUP5 MSTORE CALLER PUSH1 0x4 DUP6 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x80 PUSH1 0x64 DUP5 ADD MSTORE DUP3 PUSH1 0x20 SWAP12 DUP13 SWAP8 PUSH1 0x84 DUP4 ADD SWAP1 PUSH2 0x96C JUMP JUMPDEST SUB SWAP4 AND GAS CALL DUP5 SWAP2 DUP2 PUSH2 0x115A JUMPI JUMPDEST POP PUSH2 0x1131 JUMPI POP POP POP RETURNDATASIZE PUSH1 0x0 EQ PUSH2 0x1129 JUMPI RETURNDATASIZE PUSH2 0x1081 DUP2 PUSH2 0xAE3 JUMP JUMPDEST SWAP1 PUSH2 0x108F PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0xAA2 JUMP JUMPDEST DUP2 MSTORE DUP1 SWAP2 DUP4 RETURNDATASIZE SWAP3 ADD RETURNDATACOPY JUMPDEST DUP1 MLOAD SWAP2 DUP3 PUSH2 0x1126 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST ADD REVERT JUMPDEST POP PUSH1 0x60 PUSH2 0x1099 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ SWAP3 POP SWAP1 POP JUMP JUMPDEST SWAP1 SWAP2 POP DUP6 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x11AB JUMPI JUMPDEST PUSH2 0x1172 DUP2 DUP4 PUSH2 0xAA2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x301 JUMPI MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0x301 JUMPI SWAP1 CODESIZE PUSH2 0x1067 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1168 JUMP JUMPDEST POP POP POP SWAP2 POP POP PUSH1 0x1 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD3 0xCE SLOAD 0xE4 RETURNDATACOPY REVERT 0xA9 0xCB PUSH18 0x27E726C5C69C7EBEA538A33DE4B4FB06537C SDIV 0xC7 0xBD 0xDE 0x2A PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"751:17407:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;751:17407:19;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;4980:18;751:17407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;751:17407:19;;;;;3375:7;751:17407;;;3375:7;:::i;:::-;751:17407;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;751:17407:19;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;751:17407:19;;;;;;;:::i;:::-;;;;;;;;;;;;;;;929:10:27;;;13754:17:19;751:17407;;929:10:27;;751:17407:19;;13811:18;751:17407;;;;;;;;;;;;;;;;;;;;;;;;;;;13872:41;751:17407;929:10:27;13872:41:19;;751:17407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;751:17407:19;;;;;;;;;3182:7;751:17407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;3182:7;751:17407;;;;;;;;;-1:-1:-1;;;751:17407:19;;;;;;;;;;;;;;;;;;;-1:-1:-1;751:17407:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;751:17407:19;;-1:-1:-1;751:17407:19;;-1:-1:-1;751:17407:19;;-1:-1:-1;751:17407:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;751:17407:19;;;;;;;;:::i;:::-;;2489:19;;;751:17407;;;;;;;;;2571:9;751:17407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;751:17407:19;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;5609:39;751:17407;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;5609:39;:::i;751:17407::-;;;;;5395:7;751:17407;;;:::i;:::-;929:10:27;5265:99:19;5273:41;929:10:27;;5273:41:19;:::i;:::-;5265:99;:::i;:::-;5395:7;:::i;751:17407::-;;;;;;;-1:-1:-1;;751:17407:19;;;;;;;:::i;:::-;;;;;;4025:34;;;;;;:::i;:::-;751:17407;;;4077:11;;;;751:17407;;929:10:27;;4158:21:19;:62;;;;;751:17407;;;;;;;;;13369:15;751:17407;;;;;;;;;;;;13422:34;;;:::i;:::-;751:17407;13413:57;;;;751:17407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4158:62;751:17407;;;;4980:18;751:17407;;;;;929:10:27;751:17407:19;;;;;;;;;;4158:62;;;751:17407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;751:17407:19;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;751:17407:19;;;;;;;;;3018:5;751:17407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3018:5;751:17407;;;;;;;;;-1:-1:-1;;;751:17407:19;;;;;;;;;;;;;;;;;;;-1:-1:-1;751:17407:19;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;751:17407:19;;;;;;;;;;;;;;;2146:51;;2161:36;2146:51;;:126;;;;;751:17407;2146:178;;;;751:17407;;;;;;;2146:178;1183:36:32;1168:51;;;2146:178:19;;;:126;2228:44;2213:59;;;-1:-1:-1;2146:126:19;;751:17407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;751:17407:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;2651:219;-1:-1:-1;751:17407:19;7402:7;751:17407;;;;-1:-1:-1;751:17407:19;;;2785:56;2793:19;;;2785:56;:::i;:::-;2651:219;:::o;4407:167::-;4517:7;;;:::i;:::-;-1:-1:-1;751:17407:19;4543:15;751:17407;;;;-1:-1:-1;751:17407:19;;;4407:167;:::o;751:17407::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;5721:314;;7092:47;5721:314;;;5881:99;5889:41;929:10:27;;5889:41:19;:::i;5881:99::-;7066:7;;;;;:::i;:::-;7092:47;:::i;:::-;751:17407;;;5721:314::o;751:17407::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8012:272;;751:17407;8137:34;;;;;:::i;:::-;751:17407;;;8189:16;;;;:52;;;;;8012:272;8189:87;;;;;8012:272;8181:96;;;8012:272;:::o;8189:87::-;8245:20;;;;;;:::i;:::-;751:17407;8245:31;8189:87;;;;;:52;751:17407;;;-1:-1:-1;751:17407:19;4980:18;751:17407;;;-1:-1:-1;751:17407:19;;-1:-1:-1;751:17407:19;;;;;-1:-1:-1;751:17407:19;;;8189:52;;;;751:17407;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;11928:1255;;12047:92;11928:1255;12055:34;;;:::i;:::-;751:17407;;;;;;;;;;;;;12055:42;12047:92;:::i;:::-;751:17407;12157:16;;;751:17407;;12367:34;12359:92;12367:34;;;;:::i;:::-;751:17407;12367:42;12359:92;:::i;:::-;13097:27;12171:1;751:17407;;;12520:15;751:17407;;;;;;;;;;;;;;;;12988:9;751:17407;;;;;;;;;;;;;;;;;13007:1;751:17407;;;;;;;;13060:7;751:17407;;;;;;;;;;;;;13097:27;;11928:1255::o;751:17407::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;14004:133;-1:-1:-1;751:17407:19;7402:7;751:17407;;14077:53;751:17407;;-1:-1:-1;751:17407:19;;;7816:31;;14077:53;:::i;:::-;14004:133::o;14689:853::-;;;751:17407;;14689:853;;;1476:19:25;;:23;:19;;751:17407:19;;;;;;;;;;;;14893:82;;;;929:10:27;14893:82:19;;;751:17407;;;;;;;;;;;;;;;;;;14893:82;;751:17407;;;;;;;;:::i;:::-;14893:82;751:17407;;14893:82;;;;;;;14854:682;-1:-1:-1;14889:595:19;;15103:381;;;751:17407;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;15153:18;;;751:17407;;15195:60;;;751:17407;14893:82;15195:60;;751:17407;;;;;;;;;;;;;;;;;;;15149:321;15357:95;;751:17407;;;;;14889:595;751:17407;;15025:62;;-1:-1:-1;751:17407:19;-1:-1:-1;15018:69:19:o;14893:82::-;;;;;;;;;;;;;;;;;:::i;:::-;;;751:17407;;;;;;;;;;;;14893:82;;;;;;;;;14854:682;15514:11;;;;;;15521:4;15514:11;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"919000","executionCost":"963","totalCost":"919963"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2590","getApproved(uint256)":"4672","isApprovedForAll(address,address)":"2808","name()":"infinite","ownerOf(uint256)":"2601","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26628","supportsInterface(bytes4)":"316","symbol()":"infinite","tokenURI(uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"},"internal":{"__ERC721_init(string memory,string memory)":"infinite","__ERC721_init_unchained(string memory,string memory)":"infinite","__unsafe_increaseBalance(address,uint256)":"infinite","_afterTokenTransfer(address,address,uint256,uint256)":"infinite","_approve(address,uint256)":"infinite","_baseURI()":"infinite","_beforeTokenTransfer(address,address,uint256,uint256)":"infinite","_burn(uint256)":"infinite","_checkOnERC721Received(address,address,uint256,bytes memory)":"infinite","_exists(uint256)":"infinite","_isApprovedOrOwner(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_ownerOf(uint256)":"infinite","_requireMinted(uint256)":"infinite","_safeMint(address,uint256)":"infinite","_safeMint(address,uint256,bytes memory)":"infinite","_safeTransfer(address,address,uint256,bytes memory)":"infinite","_setApprovalForAll(address,address,bool)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"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\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":\"ERC721Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.2) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n using AddressUpgradeable for address;\\n using StringsUpgradeable for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n __ERC721_init_unchained(name_, symbol_);\\n }\\n\\n function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n return\\n interfaceId == type(IERC721Upgradeable).interfaceId ||\\n interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0xac29c453f4cf43afe4c9599374b6e1ed493c18644d814554e8a5969aaa6f3486\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n}\\n\",\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":7292,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":3490,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable","label":"_name","offset":0,"slot":"101","type":"t_string_storage"},{"astId":3492,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable","label":"_symbol","offset":0,"slot":"102","type":"t_string_storage"},{"astId":3496,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable","label":"_owners","offset":0,"slot":"103","type":"t_mapping(t_uint256,t_address)"},{"astId":3500,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable","label":"_balances","offset":0,"slot":"104","type":"t_mapping(t_address,t_uint256)"},{"astId":3504,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable","label":"_tokenApprovals","offset":0,"slot":"105","type":"t_mapping(t_uint256,t_address)"},{"astId":3510,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable","label":"_operatorApprovals","offset":0,"slot":"106","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":4412,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable","label":"__gap","offset":0,"slot":"107","type":"t_array(t_uint256)44_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)44_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[44]","numberOfBytes":"1408"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol":{"IERC721ReceiverUpgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.","kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"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`."}},"title":"ERC721 token receiver interface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"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`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":\"IERC721ReceiverUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol":{"IERC721Upgradeable":{"abi":[{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Required interface of an ERC721 compliant contract.","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"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."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"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 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."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"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."},"setApprovalForAll(address,bool)":{"details":"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."},"supportsInterface(bytes4)":{"details":"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."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. 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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"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.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"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 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.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"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.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"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.\"},\"supportsInterface(bytes4)\":{\"details\":\"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.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. 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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":\"IERC721Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol":{"ERC721URIStorageUpgradeable":{"abi":[{"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":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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"}],"devdoc":{"details":"ERC721 token with storage based token URI management.","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"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\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\"}],\"devdoc\":{\"details\":\"ERC721 token with storage based token URI management.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":\"ERC721URIStorageUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.2) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n using AddressUpgradeable for address;\\n using StringsUpgradeable for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n __ERC721_init_unchained(name_, symbol_);\\n }\\n\\n function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n return\\n interfaceId == type(IERC721Upgradeable).interfaceId ||\\n interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0xac29c453f4cf43afe4c9599374b6e1ed493c18644d814554e8a5969aaa6f3486\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/extensions/ERC721URIStorage.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC721Upgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev ERC721 token with storage based token URI management.\\n */\\nabstract contract ERC721URIStorageUpgradeable is Initializable, ERC721Upgradeable {\\n function __ERC721URIStorage_init() internal onlyInitializing {\\n }\\n\\n function __ERC721URIStorage_init_unchained() internal onlyInitializing {\\n }\\n using StringsUpgradeable for uint256;\\n\\n // Optional mapping for token URIs\\n mapping(uint256 => string) private _tokenURIs;\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory _tokenURI = _tokenURIs[tokenId];\\n string memory base = _baseURI();\\n\\n // If there is no base URI, return the token URI.\\n if (bytes(base).length == 0) {\\n return _tokenURI;\\n }\\n // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\\n if (bytes(_tokenURI).length > 0) {\\n return string(abi.encodePacked(base, _tokenURI));\\n }\\n\\n return super.tokenURI(tokenId);\\n }\\n\\n /**\\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\\n require(_exists(tokenId), \\\"ERC721URIStorage: URI set of nonexistent token\\\");\\n _tokenURIs[tokenId] = _tokenURI;\\n }\\n\\n /**\\n * @dev See {ERC721-_burn}. This override additionally checks to see if a\\n * token-specific URI was set for the token, and if so, it deletes the token URI from\\n * the storage mapping.\\n */\\n function _burn(uint256 tokenId) internal virtual override {\\n super._burn(tokenId);\\n\\n if (bytes(_tokenURIs[tokenId]).length != 0) {\\n delete _tokenURIs[tokenId];\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n}\\n\",\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":7292,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":3490,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"_name","offset":0,"slot":"101","type":"t_string_storage"},{"astId":3492,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"_symbol","offset":0,"slot":"102","type":"t_string_storage"},{"astId":3496,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"_owners","offset":0,"slot":"103","type":"t_mapping(t_uint256,t_address)"},{"astId":3500,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"_balances","offset":0,"slot":"104","type":"t_mapping(t_address,t_uint256)"},{"astId":3504,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"_tokenApprovals","offset":0,"slot":"105","type":"t_mapping(t_uint256,t_address)"},{"astId":3510,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"_operatorApprovals","offset":0,"slot":"106","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":4412,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"__gap","offset":0,"slot":"107","type":"t_array(t_uint256)44_storage"},{"astId":4575,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"_tokenURIs","offset":0,"slot":"151","type":"t_mapping(t_uint256,t_string_storage)"},{"astId":4691,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable","label":"__gap","offset":0,"slot":"152","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)44_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[44]","numberOfBytes":"1408"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_string_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => string)","numberOfBytes":"32","value":"t_string_storage"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol":{"ERC721VotesUpgradeable":{"abi":[{"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":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","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":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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"}],"devdoc":{"details":"Extension of ERC721 to support voting and delegation as implemented by {Votes}, where each individual NFT counts as 1 vote unit. Tokens do not count as votes until they are delegated, because votes must be tracked which incurs an additional cost on every transfer. Token holders can either delegate to a trusted representative who will decide how to make use of the votes in governance decisions, or they can delegate to themselves to be their own representative. _Available since v4.5._","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"DelegateChanged(address,address,address)":{"details":"Emitted when an account changes their delegate."},"DelegateVotesChanged(address,uint256,uint256)":{"details":"Emitted when a token transfer or delegate change results in changes to a delegate's number of votes."},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the contract's {EIP712} domain separator."},"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"delegate(address)":{"details":"Delegates votes from the sender to `delegatee`."},"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Delegates votes from signer to `delegatee`."},"delegates(address)":{"details":"Returns the delegate that `account` has chosen."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"getPastTotalSupply(uint256)":{"details":"Returns the total supply of votes available at the end of a past block (`blockNumber`). NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `blockNumber` must have been already mined"},"getPastVotes(address,uint256)":{"details":"Returns the amount of votes that `account` had at the end of a past block (`blockNumber`). Requirements: - `blockNumber` must have been already mined"},"getVotes(address)":{"details":"Returns the current amount of votes that `account` has."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"nonces(address)":{"details":"Returns an address nonce."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","delegate(address)":"5c19a95c","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"c3cda520","delegates(address)":"587cde1e","getApproved(uint256)":"081812fc","getPastTotalSupply(uint256)":"8e539e8c","getPastVotes(address,uint256)":"3a46b1a8","getVotes(address)":"9ab24eb0","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","nonces(address)":"7ecebe00","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"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\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\"}],\"devdoc\":{\"details\":\"Extension of ERC721 to support voting and delegation as implemented by {Votes}, where each individual NFT counts as 1 vote unit. Tokens do not count as votes until they are delegated, because votes must be tracked which incurs an additional cost on every transfer. Token holders can either delegate to a trusted representative who will decide how to make use of the votes in governance decisions, or they can delegate to themselves to be their own representative. _Available since v4.5._\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"DelegateChanged(address,address,address)\":{\"details\":\"Emitted when an account changes their delegate.\"},\"DelegateVotesChanged(address,uint256,uint256)\":{\"details\":\"Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the contract's {EIP712} domain separator.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at the end of a past block (`blockNumber`). NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `blockNumber` must have been already mined\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at the end of a past block (`blockNumber`). Requirements: - `blockNumber` must have been already mined\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"nonces(address)\":{\"details\":\"Returns an address nonce.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\":\"ERC721VotesUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/IVotes.sol)\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\\n *\\n * _Available since v4.5._\\n */\\ninterface IVotesUpgradeable {\\n /**\\n * @dev Emitted when an account changes their delegate.\\n */\\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\\n\\n /**\\n * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\\n */\\n event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance);\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n */\\n function getPastVotes(address account, uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n */\\n function getPastTotalSupply(uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) external view returns (address);\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) external;\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n}\\n\",\"keccak256\":\"0xe8e2d2f70db1913260634f710cc057d669b06eccf4dca27e18b79c3bbb101da6\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (governance/utils/Votes.sol)\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/CountersUpgradeable.sol\\\";\\nimport \\\"../../utils/CheckpointsUpgradeable.sol\\\";\\nimport \\\"../../utils/cryptography/EIP712Upgradeable.sol\\\";\\nimport \\\"./IVotesUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This is a base abstract contract that tracks voting units, which are a measure of voting power that can be\\n * transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of\\n * \\\"representative\\\" that will pool delegated voting units from different accounts and can then use it to vote in\\n * decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to\\n * delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative.\\n *\\n * This contract is often combined with a token contract such that voting units correspond to token units. For an\\n * example, see {ERC721Votes}.\\n *\\n * The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed\\n * at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the\\n * cost of this history tracking optional.\\n *\\n * When using this module the derived contract must implement {_getVotingUnits} (for example, make it return\\n * {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the\\n * previous example, it would be included in {ERC721-_beforeTokenTransfer}).\\n *\\n * _Available since v4.5._\\n */\\nabstract contract VotesUpgradeable is Initializable, IVotesUpgradeable, ContextUpgradeable, EIP712Upgradeable {\\n function __Votes_init() internal onlyInitializing {\\n }\\n\\n function __Votes_init_unchained() internal onlyInitializing {\\n }\\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\\n using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n bytes32 private constant _DELEGATION_TYPEHASH =\\n keccak256(\\\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\\\");\\n\\n mapping(address => address) private _delegation;\\n mapping(address => CheckpointsUpgradeable.History) private _delegateCheckpoints;\\n CheckpointsUpgradeable.History private _totalCheckpoints;\\n\\n mapping(address => CountersUpgradeable.Counter) private _nonces;\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) public view virtual override returns (uint256) {\\n return _delegateCheckpoints[account].latest();\\n }\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n *\\n * Requirements:\\n *\\n * - `blockNumber` must have been already mined\\n */\\n function getPastVotes(address account, uint256 blockNumber) public view virtual override returns (uint256) {\\n return _delegateCheckpoints[account].getAtProbablyRecentBlock(blockNumber);\\n }\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n *\\n * Requirements:\\n *\\n * - `blockNumber` must have been already mined\\n */\\n function getPastTotalSupply(uint256 blockNumber) public view virtual override returns (uint256) {\\n require(blockNumber < block.number, \\\"Votes: block not yet mined\\\");\\n return _totalCheckpoints.getAtProbablyRecentBlock(blockNumber);\\n }\\n\\n /**\\n * @dev Returns the current total supply of votes.\\n */\\n function _getTotalSupply() internal view virtual returns (uint256) {\\n return _totalCheckpoints.latest();\\n }\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) public view virtual override returns (address) {\\n return _delegation[account];\\n }\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) public virtual override {\\n address account = _msgSender();\\n _delegate(account, delegatee);\\n }\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public virtual override {\\n require(block.timestamp <= expiry, \\\"Votes: signature expired\\\");\\n address signer = ECDSAUpgradeable.recover(\\n _hashTypedDataV4(keccak256(abi.encode(_DELEGATION_TYPEHASH, delegatee, nonce, expiry))),\\n v,\\n r,\\n s\\n );\\n require(nonce == _useNonce(signer), \\\"Votes: invalid nonce\\\");\\n _delegate(signer, delegatee);\\n }\\n\\n /**\\n * @dev Delegate all of `account`'s voting units to `delegatee`.\\n *\\n * Emits events {IVotes-DelegateChanged} and {IVotes-DelegateVotesChanged}.\\n */\\n function _delegate(address account, address delegatee) internal virtual {\\n address oldDelegate = delegates(account);\\n _delegation[account] = delegatee;\\n\\n emit DelegateChanged(account, oldDelegate, delegatee);\\n _moveDelegateVotes(oldDelegate, delegatee, _getVotingUnits(account));\\n }\\n\\n /**\\n * @dev Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to`\\n * should be zero. Total supply of voting units will be adjusted with mints and burns.\\n */\\n function _transferVotingUnits(\\n address from,\\n address to,\\n uint256 amount\\n ) internal virtual {\\n if (from == address(0)) {\\n _totalCheckpoints.push(_add, amount);\\n }\\n if (to == address(0)) {\\n _totalCheckpoints.push(_subtract, amount);\\n }\\n _moveDelegateVotes(delegates(from), delegates(to), amount);\\n }\\n\\n /**\\n * @dev Moves delegated votes from one delegate to another.\\n */\\n function _moveDelegateVotes(\\n address from,\\n address to,\\n uint256 amount\\n ) private {\\n if (from != to && amount > 0) {\\n if (from != address(0)) {\\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[from].push(_subtract, amount);\\n emit DelegateVotesChanged(from, oldValue, newValue);\\n }\\n if (to != address(0)) {\\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[to].push(_add, amount);\\n emit DelegateVotesChanged(to, oldValue, newValue);\\n }\\n }\\n }\\n\\n function _add(uint256 a, uint256 b) private pure returns (uint256) {\\n return a + b;\\n }\\n\\n function _subtract(uint256 a, uint256 b) private pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Consumes a nonce.\\n *\\n * Returns the current value and increments nonce.\\n */\\n function _useNonce(address owner) internal virtual returns (uint256 current) {\\n CountersUpgradeable.Counter storage nonce = _nonces[owner];\\n current = nonce.current();\\n nonce.increment();\\n }\\n\\n /**\\n * @dev Returns an address nonce.\\n */\\n function nonces(address owner) public view virtual returns (uint256) {\\n return _nonces[owner].current();\\n }\\n\\n /**\\n * @dev Returns the contract's {EIP712} domain separator.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32) {\\n return _domainSeparatorV4();\\n }\\n\\n /**\\n * @dev Must return the voting units held by an account.\\n */\\n function _getVotingUnits(address) internal view virtual returns (uint256);\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[46] private __gap;\\n}\\n\",\"keccak256\":\"0x03d4e5b8237229d370c92981f6642e67c075c3cc4f759a76ea4c73a2b27d36e5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.2) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n using AddressUpgradeable for address;\\n using StringsUpgradeable for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n __ERC721_init_unchained(name_, symbol_);\\n }\\n\\n function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n return\\n interfaceId == type(IERC721Upgradeable).interfaceId ||\\n interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0xac29c453f4cf43afe4c9599374b6e1ed493c18644d814554e8a5969aaa6f3486\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/extensions/ERC721Votes.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC721Upgradeable.sol\\\";\\nimport \\\"../../../governance/utils/VotesUpgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Extension of ERC721 to support voting and delegation as implemented by {Votes}, where each individual NFT counts\\n * as 1 vote unit.\\n *\\n * Tokens do not count as votes until they are delegated, because votes must be tracked which incurs an additional cost\\n * on every transfer. Token holders can either delegate to a trusted representative who will decide how to make use of\\n * the votes in governance decisions, or they can delegate to themselves to be their own representative.\\n *\\n * _Available since v4.5._\\n */\\nabstract contract ERC721VotesUpgradeable is Initializable, ERC721Upgradeable, VotesUpgradeable {\\n function __ERC721Votes_init() internal onlyInitializing {\\n }\\n\\n function __ERC721Votes_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {ERC721-_afterTokenTransfer}. Adjusts votes when tokens are transferred.\\n *\\n * Emits a {IVotes-DelegateVotesChanged} event.\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual override {\\n _transferVotingUnits(from, to, batchSize);\\n super._afterTokenTransfer(from, to, firstTokenId, batchSize);\\n }\\n\\n /**\\n * @dev Returns the balance of `account`.\\n */\\n function _getVotingUnits(address account) internal view virtual override returns (uint256) {\\n return balanceOf(account);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x63df902b937900c1a0ed022ff39a8e995f1fdf5cbdddbba92c4db3f47661dcda\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(History storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _blockNumber,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace224 storage self,\\n uint32 key,\\n uint224 value\\n ) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _key,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint224[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint224 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace160 storage self,\\n uint96 key,\\n uint160 value\\n ) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint96 _key,\\n uint160 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint160 value\\n ) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint160[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint160 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x92fe8e1836627ba1baa62a2d4bd76c52ccfe53fec6650b609af33918be967a82\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n}\\n\",\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x12f297cafe6e2847ae0378502f155654d0764b532a9873c8afe4350950fa7971\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/EIP712.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ECDSAUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * _Available since v3.4._\\n *\\n * @custom:storage-size 52\\n */\\nabstract contract EIP712Upgradeable is Initializable {\\n /* solhint-disable var-name-mixedcase */\\n bytes32 private _HASHED_NAME;\\n bytes32 private _HASHED_VERSION;\\n bytes32 private constant _TYPE_HASH = keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\");\\n\\n /* solhint-enable var-name-mixedcase */\\n\\n /**\\n * @dev Initializes the domain separator and parameter caches.\\n *\\n * The meaning of `name` and `version` is specified in\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n *\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n * - `version`: the current major version of the signing domain.\\n *\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n * contract upgrade].\\n */\\n function __EIP712_init(string memory name, string memory version) internal onlyInitializing {\\n __EIP712_init_unchained(name, version);\\n }\\n\\n function __EIP712_init_unchained(string memory name, string memory version) internal onlyInitializing {\\n bytes32 hashedName = keccak256(bytes(name));\\n bytes32 hashedVersion = keccak256(bytes(version));\\n _HASHED_NAME = hashedName;\\n _HASHED_VERSION = hashedVersion;\\n }\\n\\n /**\\n * @dev Returns the domain separator for the current chain.\\n */\\n function _domainSeparatorV4() internal view returns (bytes32) {\\n return _buildDomainSeparator(_TYPE_HASH, _EIP712NameHash(), _EIP712VersionHash());\\n }\\n\\n function _buildDomainSeparator(\\n bytes32 typeHash,\\n bytes32 nameHash,\\n bytes32 versionHash\\n ) private view returns (bytes32) {\\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\\n }\\n\\n /**\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\n *\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n *\\n * ```solidity\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n * keccak256(\\\"Mail(address to,string contents)\\\"),\\n * mailTo,\\n * keccak256(bytes(mailContents))\\n * )));\\n * address signer = ECDSA.recover(digest, signature);\\n * ```\\n */\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n return ECDSAUpgradeable.toTypedDataHash(_domainSeparatorV4(), structHash);\\n }\\n\\n /**\\n * @dev The hash of the name parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712NameHash() internal virtual view returns (bytes32) {\\n return _HASHED_NAME;\\n }\\n\\n /**\\n * @dev The hash of the version parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712VersionHash() internal virtual view returns (bytes32) {\\n return _HASHED_VERSION;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x3017aded62c4a2b9707f5f06f92934e592c1c9b6f384b91b51340a6d5f841931\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":7292,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":3490,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_name","offset":0,"slot":"101","type":"t_string_storage"},{"astId":3492,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_symbol","offset":0,"slot":"102","type":"t_string_storage"},{"astId":3496,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_owners","offset":0,"slot":"103","type":"t_mapping(t_uint256,t_address)"},{"astId":3500,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_balances","offset":0,"slot":"104","type":"t_mapping(t_address,t_uint256)"},{"astId":3504,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_tokenApprovals","offset":0,"slot":"105","type":"t_mapping(t_uint256,t_address)"},{"astId":3510,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_operatorApprovals","offset":0,"slot":"106","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":4412,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"__gap","offset":0,"slot":"107","type":"t_array(t_uint256)44_storage"},{"astId":7108,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_HASHED_NAME","offset":0,"slot":"151","type":"t_bytes32"},{"astId":7110,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_HASHED_VERSION","offset":0,"slot":"152","type":"t_bytes32"},{"astId":7248,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"__gap","offset":0,"slot":"153","type":"t_array(t_uint256)50_storage"},{"astId":850,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_delegation","offset":0,"slot":"203","type":"t_mapping(t_address,t_address)"},{"astId":855,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_delegateCheckpoints","offset":0,"slot":"204","type":"t_mapping(t_address,t_struct(History)5086_storage)"},{"astId":858,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_totalCheckpoints","offset":0,"slot":"205","type":"t_struct(History)5086_storage"},{"astId":863,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_nonces","offset":0,"slot":"206","type":"t_mapping(t_address,t_struct(Counter)6495_storage)"},{"astId":1277,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"__gap","offset":0,"slot":"207","type":"t_array(t_uint256)46_storage"},{"astId":4764,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"__gap","offset":0,"slot":"253","type":"t_array(t_uint256)50_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Checkpoint)5091_storage)dyn_storage":{"base":"t_struct(Checkpoint)5091_storage","encoding":"dynamic_array","label":"struct CheckpointsUpgradeable.Checkpoint[]","numberOfBytes":"32"},"t_array(t_uint256)44_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[44]","numberOfBytes":"1408"},"t_array(t_uint256)46_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[46]","numberOfBytes":"1472"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_address,t_address)":{"encoding":"mapping","key":"t_address","label":"mapping(address => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_struct(Counter)6495_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct CountersUpgradeable.Counter)","numberOfBytes":"32","value":"t_struct(Counter)6495_storage"},"t_mapping(t_address,t_struct(History)5086_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct CheckpointsUpgradeable.History)","numberOfBytes":"32","value":"t_struct(History)5086_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_struct(Checkpoint)5091_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.Checkpoint","members":[{"astId":5088,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_blockNumber","offset":0,"slot":"0","type":"t_uint32"},{"astId":5090,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_value","offset":4,"slot":"0","type":"t_uint224"}],"numberOfBytes":"32"},"t_struct(Counter)6495_storage":{"encoding":"inplace","label":"struct CountersUpgradeable.Counter","members":[{"astId":6494,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_struct(History)5086_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.History","members":[{"astId":5085,"contract":"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol:ERC721VotesUpgradeable","label":"_checkpoints","offset":0,"slot":"0","type":"t_array(t_struct(Checkpoint)5091_storage)dyn_storage"}],"numberOfBytes":"32"},"t_uint224":{"encoding":"inplace","label":"uint224","numberOfBytes":"28"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol":{"IERC721MetadataUpgradeable":{"abi":[{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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"}],"devdoc":{"details":"See https://eips.ethereum.org/EIPS/eip-721","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"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."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"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 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."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"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."},"setApprovalForAll(address,bool)":{"details":"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."},"supportsInterface(bytes4)":{"details":"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."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. 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."}},"title":"ERC-721 Non-Fungible Token Standard, optional metadata extension","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"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.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"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 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.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"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.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"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.\"},\"supportsInterface(bytes4)\":{\"details\":\"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.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. 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.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":\"IERC721MetadataUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220374e99294a43dd347d4f94f4f2763ce14e246a3d6afae5f2976d717238d8dc4364736f6c63430008130033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY 0x4E SWAP10 0x29 0x4A NUMBER 0xDD CALLVALUE PUSH30 0x4F94F4F2763CE14E246A3D6AFAE5F2976D717238D8DC4364736F6C634300 ADDMOD SGT STOP CALLER ","sourceMap":"194:8087:25:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea2646970667358221220374e99294a43dd347d4f94f4f2763ce14e246a3d6afae5f2976d717238d8dc4364736f6c63430008130033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY 0x4E SWAP10 0x29 0x4A NUMBER 0xDD CALLVALUE PUSH30 0x4F94F4F2763CE14E246A3D6AFAE5F2976D717238D8DC4364736F6C634300 ADDMOD SGT STOP CALLER ","sourceMap":"194:8087:25:-:0;;"},"gasEstimates":{"creation":{"codeDepositCost":"11600","executionCost":"infinite","totalCost":"infinite"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol":{"CheckpointsUpgradeable":{"abi":[],"devdoc":{"details":"This library defines the `History` struct, for checkpointing values as they change at different points in time, and later looking up past values by block number. See {Votes} as an example. To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new checkpoint for the current transaction block using the {push} function. _Available since v4.5._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212208d884cc0149c5edfb751f0d6338427f9214691056168224a2adfbcd608703b2f64736f6c63430008130033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 DUP9 0x4C 0xC0 EQ SWAP13 0x5E 0xDF 0xB7 MLOAD CREATE 0xD6 CALLER DUP5 0x27 0xF9 0x21 CHAINID SWAP2 SDIV PUSH2 0x6822 0x4A 0x2A 0xDF 0xBC 0xD6 ADDMOD PUSH17 0x3B2F64736F6C6343000813003300000000 ","sourceMap":"730:18271:26:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea26469706673582212208d884cc0149c5edfb751f0d6338427f9214691056168224a2adfbcd608703b2f64736f6c63430008130033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 DUP9 0x4C 0xC0 EQ SWAP13 0x5E 0xDF 0xB7 MLOAD CREATE 0xD6 CALLER DUP5 0x27 0xF9 0x21 CHAINID SWAP2 SDIV PUSH2 0x6822 0x4A 0x2A 0xDF 0xBC 0xD6 ADDMOD PUSH17 0x3B2F64736F6C6343000813003300000000 ","sourceMap":"730:18271:26:-:0;;"},"gasEstimates":{"creation":{"codeDepositCost":"11600","executionCost":"infinite","totalCost":"infinite"},"internal":{"_insert(struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint224)":"infinite","_insert(struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint160)":"infinite","_insert(struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint224)":"infinite","_lowerBinaryLookup(struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint256,uint256)":"infinite","_lowerBinaryLookup(struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256)":"infinite","_lowerBinaryLookup(struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256)":"infinite","_unsafeAccess(struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256)":"infinite","_unsafeAccess(struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256)":"infinite","_unsafeAccess(struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256)":"infinite","_upperBinaryLookup(struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint256,uint256)":"infinite","_upperBinaryLookup(struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256)":"infinite","_upperBinaryLookup(struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256)":"infinite","getAtBlock(struct CheckpointsUpgradeable.History storage pointer,uint256)":"infinite","getAtProbablyRecentBlock(struct CheckpointsUpgradeable.History storage pointer,uint256)":"infinite","latest(struct CheckpointsUpgradeable.History storage pointer)":"infinite","latest(struct CheckpointsUpgradeable.Trace160 storage pointer)":"infinite","latest(struct CheckpointsUpgradeable.Trace224 storage pointer)":"infinite","latestCheckpoint(struct CheckpointsUpgradeable.History storage pointer)":"infinite","latestCheckpoint(struct CheckpointsUpgradeable.Trace160 storage pointer)":"infinite","latestCheckpoint(struct CheckpointsUpgradeable.Trace224 storage pointer)":"infinite","length(struct CheckpointsUpgradeable.History storage pointer)":"infinite","length(struct CheckpointsUpgradeable.Trace160 storage pointer)":"infinite","length(struct CheckpointsUpgradeable.Trace224 storage pointer)":"infinite","lowerLookup(struct CheckpointsUpgradeable.Trace160 storage pointer,uint96)":"infinite","lowerLookup(struct CheckpointsUpgradeable.Trace224 storage pointer,uint32)":"infinite","push(struct CheckpointsUpgradeable.History storage pointer,function (uint256,uint256) view returns (uint256),uint256)":"infinite","push(struct CheckpointsUpgradeable.History storage pointer,uint256)":"infinite","push(struct CheckpointsUpgradeable.Trace160 storage pointer,uint96,uint160)":"infinite","push(struct CheckpointsUpgradeable.Trace224 storage pointer,uint32,uint224)":"infinite","upperLookup(struct CheckpointsUpgradeable.Trace160 storage pointer,uint96)":"infinite","upperLookup(struct CheckpointsUpgradeable.Trace224 storage pointer,uint32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This library defines the `History` struct, for checkpointing values as they change at different points in time, and later looking up past values by block number. See {Votes} as an example. To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new checkpoint for the current transaction block using the {push} function. _Available since v4.5._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":\"CheckpointsUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(History storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _blockNumber,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace224 storage self,\\n uint32 key,\\n uint224 value\\n ) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _key,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint224[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint224 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace160 storage self,\\n uint96 key,\\n uint160 value\\n ) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint96 _key,\\n uint160 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint160 value\\n ) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint160[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint160 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x92fe8e1836627ba1baa62a2d4bd76c52ccfe53fec6650b609af33918be967a82\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"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.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"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.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"CountersUpgradeable":{"abi":[],"devdoc":{"author":"Matt Condon (@shrugs)","details":"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`","kind":"dev","methods":{},"title":"Counters","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122016e855fd497117a8adb40ee859a30bcd06458a54fa77653c2ab79d0bde7f02b264736f6c63430008130033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0xE8 SSTORE REVERT 0x49 PUSH18 0x17A8ADB40EE859A30BCD06458A54FA77653C 0x2A 0xB7 SWAP14 SIGNEXTEND 0xDE PUSH32 0x2B264736F6C6343000813003300000000000000000000000000000000000000 ","sourceMap":"424:982:28:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea264697066735822122016e855fd497117a8adb40ee859a30bcd06458a54fa77653c2ab79d0bde7f02b264736f6c63430008130033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0xE8 SSTORE REVERT 0x49 PUSH18 0x17A8ADB40EE859A30BCD06458A54FA77653C 0x2A 0xB7 SWAP14 SIGNEXTEND 0xDE PUSH32 0x2B264736F6C6343000813003300000000000000000000000000000000000000 ","sourceMap":"424:982:28:-:0;;"},"gasEstimates":{"creation":{"codeDepositCost":"11600","executionCost":"infinite","totalCost":"infinite"},"internal":{"current(struct CountersUpgradeable.Counter storage pointer)":"infinite","decrement(struct CountersUpgradeable.Counter storage pointer)":"infinite","increment(struct CountersUpgradeable.Counter storage pointer)":"infinite","reset(struct CountersUpgradeable.Counter storage pointer)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":\"CountersUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"StringsUpgradeable":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220cb44a441e03a6f30d7669dd51353714cbcbbb39d988cf2191eac304f08fa707a64736f6c63430008130033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB PREVRANDAO LOG4 COINBASE 0xE0 GASPRICE PUSH16 0x30D7669DD51353714CBCBBB39D988CF2 NOT 0x1E 0xAC ADDRESS 0x4F ADDMOD STATICCALL PUSH17 0x7A64736F6C634300081300330000000000 ","sourceMap":"199:2098:29:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea2646970667358221220cb44a441e03a6f30d7669dd51353714cbcbbb39d988cf2191eac304f08fa707a64736f6c63430008130033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB PREVRANDAO LOG4 COINBASE 0xE0 GASPRICE PUSH16 0x30D7669DD51353714CBCBBB39D988CF2 NOT 0x1E 0xAC ADDRESS 0x4F ADDMOD STATICCALL PUSH17 0x7A64736F6C634300081300330000000000 ","sourceMap":"199:2098:29:-:0;;"},"gasEstimates":{"creation":{"codeDepositCost":"11600","executionCost":"infinite","totalCost":"infinite"},"internal":{"toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":\"StringsUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n}\\n\",\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"ECDSAUpgradeable":{"abi":[],"devdoc":{"details":"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220dfc015f9edd376b0776d16ab5b97beafb4c0aab64f3351197cc71162592d8eeb64736f6c63430008130033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF 0xC0 ISZERO 0xF9 0xED 0xD3 PUSH23 0xB0776D16AB5B97BEAFB4C0AAB64F3351197CC71162592D DUP15 0xEB PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"380:8190:30:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea2646970667358221220dfc015f9edd376b0776d16ab5b97beafb4c0aab64f3351197cc71162592d8eeb64736f6c63430008130033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF 0xC0 ISZERO 0xF9 0xED 0xD3 PUSH23 0xB0776D16AB5B97BEAFB4C0AAB64F3351197CC71162592D DUP15 0xEB PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"380:8190:30:-:0;;"},"gasEstimates":{"creation":{"codeDepositCost":"11600","executionCost":"infinite","totalCost":"infinite"},"internal":{"_throwError(enum ECDSAUpgradeable.RecoverError)":"infinite","recover(bytes32,bytes memory)":"infinite","recover(bytes32,bytes32,bytes32)":"infinite","recover(bytes32,uint8,bytes32,bytes32)":"infinite","toEthSignedMessageHash(bytes memory)":"infinite","toEthSignedMessageHash(bytes32)":"infinite","toTypedDataHash(bytes32,bytes32)":"infinite","tryRecover(bytes32,bytes memory)":"infinite","tryRecover(bytes32,bytes32,bytes32)":"infinite","tryRecover(bytes32,uint8,bytes32,bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":\"ECDSAUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n}\\n\",\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x12f297cafe6e2847ae0378502f155654d0764b532a9873c8afe4350950fa7971\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol":{"EIP712Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:storage-size":"52","details":"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. _Available since v3.4._","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:storage-size\":\"52\",\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. _Available since v3.4._\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":\"EIP712Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n}\\n\",\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x12f297cafe6e2847ae0378502f155654d0764b532a9873c8afe4350950fa7971\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/EIP712.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ECDSAUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * _Available since v3.4._\\n *\\n * @custom:storage-size 52\\n */\\nabstract contract EIP712Upgradeable is Initializable {\\n /* solhint-disable var-name-mixedcase */\\n bytes32 private _HASHED_NAME;\\n bytes32 private _HASHED_VERSION;\\n bytes32 private constant _TYPE_HASH = keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\");\\n\\n /* solhint-enable var-name-mixedcase */\\n\\n /**\\n * @dev Initializes the domain separator and parameter caches.\\n *\\n * The meaning of `name` and `version` is specified in\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n *\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n * - `version`: the current major version of the signing domain.\\n *\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n * contract upgrade].\\n */\\n function __EIP712_init(string memory name, string memory version) internal onlyInitializing {\\n __EIP712_init_unchained(name, version);\\n }\\n\\n function __EIP712_init_unchained(string memory name, string memory version) internal onlyInitializing {\\n bytes32 hashedName = keccak256(bytes(name));\\n bytes32 hashedVersion = keccak256(bytes(version));\\n _HASHED_NAME = hashedName;\\n _HASHED_VERSION = hashedVersion;\\n }\\n\\n /**\\n * @dev Returns the domain separator for the current chain.\\n */\\n function _domainSeparatorV4() internal view returns (bytes32) {\\n return _buildDomainSeparator(_TYPE_HASH, _EIP712NameHash(), _EIP712VersionHash());\\n }\\n\\n function _buildDomainSeparator(\\n bytes32 typeHash,\\n bytes32 nameHash,\\n bytes32 versionHash\\n ) private view returns (bytes32) {\\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\\n }\\n\\n /**\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\n *\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n *\\n * ```solidity\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n * keccak256(\\\"Mail(address to,string contents)\\\"),\\n * mailTo,\\n * keccak256(bytes(mailContents))\\n * )));\\n * address signer = ECDSA.recover(digest, signature);\\n * ```\\n */\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n return ECDSAUpgradeable.toTypedDataHash(_domainSeparatorV4(), structHash);\\n }\\n\\n /**\\n * @dev The hash of the name parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712NameHash() internal virtual view returns (bytes32) {\\n return _HASHED_NAME;\\n }\\n\\n /**\\n * @dev The hash of the version parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712VersionHash() internal virtual view returns (bytes32) {\\n return _HASHED_VERSION;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x3017aded62c4a2b9707f5f06f92934e592c1c9b6f384b91b51340a6d5f841931\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":7108,"contract":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable","label":"_HASHED_NAME","offset":0,"slot":"1","type":"t_bytes32"},{"astId":7110,"contract":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable","label":"_HASHED_VERSION","offset":0,"slot":"2","type":"t_bytes32"},{"astId":7248,"contract":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable","label":"__gap","offset":0,"slot":"3","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ERC165Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"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.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"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.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":7292,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"IERC165Upgradeable":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"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}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"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}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":\"IERC165Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"MathUpgradeable":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212202b092a93917c90bb93eeab695174753d094e3e177eec9dca05ac796ffbceb29164736f6c63430008130033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2B MULMOD 0x2A SWAP4 SWAP2 PUSH29 0x90BB93EEAB695174753D094E3E177EEC9DCA05AC796FFBCEB29164736F PUSH13 0x63430008130033000000000000 ","sourceMap":"202:12313:34:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea26469706673582212202b092a93917c90bb93eeab695174753d094e3e177eec9dca05ac796ffbceb29164736f6c63430008130033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2B MULMOD 0x2A SWAP4 SWAP2 PUSH29 0x90BB93EEAB695174753D094E3E177EEC9DCA05AC796FFBCEB29164736F PUSH13 0x63430008130033000000000000 ","sourceMap":"202:12313:34:-:0;;"},"gasEstimates":{"creation":{"codeDepositCost":"11600","executionCost":"infinite","totalCost":"infinite"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum MathUpgradeable.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum MathUpgradeable.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum MathUpgradeable.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum MathUpgradeable.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum MathUpgradeable.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":\"MathUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol":{"SafeCastUpgradeable":{"abi":[],"devdoc":{"details":"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always. Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing all math on `uint256` and `int256` and then downcasting.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212205d1f138d4bd52936829f3b5dc541d0e1157a0e5529e5d30a6b3cdb35a86f3eae64736f6c63430008130033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D 0x1F SGT DUP14 0x4B 0xD5 0x29 CALLDATASIZE DUP3 SWAP16 EXTCODESIZE 0x5D 0xC5 COINBASE 0xD0 0xE1 ISZERO PUSH27 0xE5529E5D30A6B3CDB35A86F3EAE64736F6C634300081300330000 ","sourceMap":"927:34164:35:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea26469706673582212205d1f138d4bd52936829f3b5dc541d0e1157a0e5529e5d30a6b3cdb35a86f3eae64736f6c63430008130033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D 0x1F SGT DUP14 0x4B 0xD5 0x29 CALLDATASIZE DUP3 SWAP16 EXTCODESIZE 0x5D 0xC5 COINBASE 0xD0 0xE1 ISZERO PUSH27 0xE5529E5D30A6B3CDB35A86F3EAE64736F6C634300081300330000 ","sourceMap":"927:34164:35:-:0;;"},"gasEstimates":{"creation":{"codeDepositCost":"11600","executionCost":"infinite","totalCost":"infinite"},"internal":{"toInt104(int256)":"infinite","toInt112(int256)":"infinite","toInt120(int256)":"infinite","toInt128(int256)":"infinite","toInt136(int256)":"infinite","toInt144(int256)":"infinite","toInt152(int256)":"infinite","toInt16(int256)":"infinite","toInt160(int256)":"infinite","toInt168(int256)":"infinite","toInt176(int256)":"infinite","toInt184(int256)":"infinite","toInt192(int256)":"infinite","toInt200(int256)":"infinite","toInt208(int256)":"infinite","toInt216(int256)":"infinite","toInt224(int256)":"infinite","toInt232(int256)":"infinite","toInt24(int256)":"infinite","toInt240(int256)":"infinite","toInt248(int256)":"infinite","toInt256(uint256)":"infinite","toInt32(int256)":"infinite","toInt40(int256)":"infinite","toInt48(int256)":"infinite","toInt56(int256)":"infinite","toInt64(int256)":"infinite","toInt72(int256)":"infinite","toInt8(int256)":"infinite","toInt80(int256)":"infinite","toInt88(int256)":"infinite","toInt96(int256)":"infinite","toUint104(uint256)":"infinite","toUint112(uint256)":"infinite","toUint120(uint256)":"infinite","toUint128(uint256)":"infinite","toUint136(uint256)":"infinite","toUint144(uint256)":"infinite","toUint152(uint256)":"infinite","toUint16(uint256)":"infinite","toUint160(uint256)":"infinite","toUint168(uint256)":"infinite","toUint176(uint256)":"infinite","toUint184(uint256)":"infinite","toUint192(uint256)":"infinite","toUint200(uint256)":"infinite","toUint208(uint256)":"infinite","toUint216(uint256)":"infinite","toUint224(uint256)":"infinite","toUint232(uint256)":"infinite","toUint24(uint256)":"infinite","toUint240(uint256)":"infinite","toUint248(uint256)":"infinite","toUint256(int256)":"infinite","toUint32(uint256)":"infinite","toUint40(uint256)":"infinite","toUint48(uint256)":"infinite","toUint56(uint256)":"infinite","toUint64(uint256)":"infinite","toUint72(uint256)":"infinite","toUint8(uint256)":"infinite","toUint80(uint256)":"infinite","toUint88(uint256)":"infinite","toUint96(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always. Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing all math on `uint256` and `int256` and then downcasting.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":\"SafeCastUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/governance/utils/IVotes.sol":{"IVotes":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts. _Available since v4.5._","events":{"DelegateChanged(address,address,address)":{"details":"Emitted when an account changes their delegate."},"DelegateVotesChanged(address,uint256,uint256)":{"details":"Emitted when a token transfer or delegate change results in changes to a delegate's number of votes."}},"kind":"dev","methods":{"delegate(address)":{"details":"Delegates votes from the sender to `delegatee`."},"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Delegates votes from signer to `delegatee`."},"delegates(address)":{"details":"Returns the delegate that `account` has chosen."},"getPastTotalSupply(uint256)":{"details":"Returns the total supply of votes available at the end of a past block (`blockNumber`). NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote."},"getPastVotes(address,uint256)":{"details":"Returns the amount of votes that `account` had at the end of a past block (`blockNumber`)."},"getVotes(address)":{"details":"Returns the current amount of votes that `account` has."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"delegate(address)":"5c19a95c","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"c3cda520","delegates(address)":"587cde1e","getPastTotalSupply(uint256)":"8e539e8c","getPastVotes(address,uint256)":"3a46b1a8","getVotes(address)":"9ab24eb0"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts. _Available since v4.5._\",\"events\":{\"DelegateChanged(address,address,address)\":{\"details\":\"Emitted when an account changes their delegate.\"},\"DelegateVotesChanged(address,uint256,uint256)\":{\"details\":\"Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\"}},\"kind\":\"dev\",\"methods\":{\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at the end of a past block (`blockNumber`). NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/governance/utils/IVotes.sol\":\"IVotes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/governance/utils/IVotes.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/IVotes.sol)\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\\n *\\n * _Available since v4.5._\\n */\\ninterface IVotes {\\n /**\\n * @dev Emitted when an account changes their delegate.\\n */\\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\\n\\n /**\\n * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\\n */\\n event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance);\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n */\\n function getPastVotes(address account, uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n */\\n function getPastTotalSupply(uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) external view returns (address);\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) external;\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n}\\n\",\"keccak256\":\"0xf5324a55ee9c0b4a840ea57c055ac9d046f88986ceef567e1cf68113e46a79c0\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"IERC1155":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._","events":{"ApprovalForAll(address,address,bool)":{"details":"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."},"TransferBatch(address,address,address,uint256[],uint256[])":{"details":"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."},"TransferSingle(address,address,address,uint256,uint256)":{"details":"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"URI(string,uint256)":{"details":"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."}},"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."},"setApprovalForAll(address,bool)":{"details":"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller."},"supportsInterface(bytes4)":{"details":"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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":\"IERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n external\\n view\\n returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol":{"IERC1155MetadataURI":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._","events":{"ApprovalForAll(address,address,bool)":{"details":"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."},"TransferBatch(address,address,address,uint256[],uint256[])":{"details":"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."},"TransferSingle(address,address,address,uint256,uint256)":{"details":"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"URI(string,uint256)":{"details":"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."}},"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."},"setApprovalForAll(address,bool)":{"details":"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller."},"supportsInterface(bytes4)":{"details":"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."},"uri(uint256)":{"details":"Returns the URI for token type `id`. If the `\\{id\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"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.\"},\"uri(uint256)\":{\"details\":\"Returns the URI for token type `id`. If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":\"IERC1155MetadataURI\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n external\\n view\\n returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURI is IERC1155 {\\n /**\\n * @dev Returns the URI for token type `id`.\\n *\\n * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n * clients with the actual token type ID.\\n */\\n function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"IERC721":{"abi":[{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Required interface of an ERC721 compliant contract.","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"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."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"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 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."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"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."},"setApprovalForAll(address,bool)":{"details":"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."},"supportsInterface(bytes4)":{"details":"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."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. 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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"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.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"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 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.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"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.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"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.\"},\"supportsInterface(bytes4)\":{\"details\":\"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.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. 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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"IERC721Metadata":{"abi":[{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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"}],"devdoc":{"details":"See https://eips.ethereum.org/EIPS/eip-721","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"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."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"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 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."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"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."},"setApprovalForAll(address,bool)":{"details":"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."},"supportsInterface(bytes4)":{"details":"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."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. 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."}},"title":"ERC-721 Non-Fungible Token Standard, optional metadata extension","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"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.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"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 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.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"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.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"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.\"},\"supportsInterface(bytes4)\":{\"details\":\"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.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. 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.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"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}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"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}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/N2MCommonStorage.sol":{"N2MCommonStorage":{"abi":[{"inputs":[{"internalType":"address","name":"filtered","type":"address"}],"name":"AddressFiltered","type":"error"},{"inputs":[],"name":"CantLowerCurrentPercentages","type":"error"},{"inputs":[],"name":"CantRevealYetWaitABitToBeAbleToRedeem","type":"error"},{"inputs":[],"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","type":"error"},{"inputs":[],"name":"CollectionSoldOut","type":"error"},{"inputs":[],"name":"ContractMetadataURIAlreadyFixed","type":"error"},{"inputs":[],"name":"InputSizeMismatch","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidDropDate","type":"error"},{"inputs":[],"name":"InvalidInputSizesDontMatch","type":"error"},{"inputs":[],"name":"InvalidMintFee","type":"error"},{"inputs":[],"name":"InvalidMintFeeForFreeMinting","type":"error"},{"inputs":[],"name":"InvalidMintingType","type":"error"},{"inputs":[],"name":"InvalidPercentageOrDiscountValues","type":"error"},{"inputs":[],"name":"InvalidPhaseWithoutDate","type":"error"},{"inputs":[],"name":"InvalidRevenuePercentage","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MaxPerAddressExceeded","type":"error"},{"inputs":[],"name":"MetadataAlreadyFixed","type":"error"},{"inputs":[],"name":"NewBaseURICantBeEmpty","type":"error"},{"inputs":[],"name":"NewPlaceholderCantBeEmpty","type":"error"},{"inputs":[],"name":"NoBaseURINorPlaceholderSet","type":"error"},{"inputs":[],"name":"NonTransferrableSoulboundNFT","type":"error"},{"inputs":[],"name":"NotEnoughAmountToMint","type":"error"},{"inputs":[],"name":"NothingToRedeem","type":"error"},{"inputs":[],"name":"OnlyAffiliateOrN2M","type":"error"},{"inputs":[],"name":"OnlyOwnerOrN2M","type":"error"},{"inputs":[],"name":"PresaleInvalidMintingType","type":"error"},{"inputs":[],"name":"PresaleNotOpen","type":"error"},{"inputs":[],"name":"PublicSaleNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"RoyaltyFeeTooHigh","type":"error"},{"inputs":[],"name":"SaleFinished","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[],"name":"SignatureMismatch","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TotalSupplyMustBeGreaterThanZero","type":"error"},{"inputs":[],"name":"WaitUntilDropDate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"affiliate","type":"address"}],"name":"AffiliateSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"isMetadataFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"collectionOwner","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"The NFTs2Me Team","custom:security-contact":"security@nfts2me.com","custom:terms-of-service":"https://nfts2me.com/terms-of-service/","custom:website":"https://nfts2me.com/","events":{"AffiliateSell(address)":{"params":{"affiliate":"The affiliate address"}},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"}},"title":"NFTs2Me.com Smart Contracts","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isMetadataFixed()":"0de77eb8","n2mVersion()":"cb93c48f","owner()":"8da5cb5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filtered\",\"type\":\"address\"}],\"name\":\"AddressFiltered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantLowerCurrentPercentages\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantRevealYetWaitABitToBeAbleToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSetBaseURIAndPlaceholderAtTheSameTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CollectionSoldOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractMetadataURIAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputSizeMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDropDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputSizesDontMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFeeForFreeMinting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercentageOrDiscountValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPhaseWithoutDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevenuePercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerAddressExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetadataAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBaseURICantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPlaceholderCantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseURINorPlaceholderSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonTransferrableSoulboundNFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughAmountToMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAffiliateOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOwnerOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleInvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PublicSaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoyaltyFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaleFinished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyMinted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WaitUntilDropDate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"AffiliateSell\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"isMetadataFixed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"collectionOwner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The NFTs2Me Team\",\"custom:security-contact\":\"security@nfts2me.com\",\"custom:terms-of-service\":\"https://nfts2me.com/terms-of-service/\",\"custom:website\":\"https://nfts2me.com/\",\"events\":{\"AffiliateSell(address)\":{\"params\":{\"affiliate\":\"The affiliate address\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"}},\"title\":\"NFTs2Me.com Smart Contracts\",\"version\":1},\"userdoc\":{\"errors\":{\"AddressFiltered(address)\":[{\"notice\":\"Operator address is filtered\"}],\"CantLowerCurrentPercentages()\":[{\"notice\":\"Can't lower current percentages\"}],\"CantRevealYetWaitABitToBeAbleToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets too soon\"}],\"CantSetBaseURIAndPlaceholderAtTheSameTime()\":[{\"notice\":\"Can't set BaseURI and Placeholder at the same time\"}],\"CollectionSoldOut()\":[{\"notice\":\"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\"}],\"ContractMetadataURIAlreadyFixed()\":[{\"notice\":\"Contract MetadataURI already fixed\"}],\"InputSizeMismatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidAmount()\":[{\"notice\":\"Error thrown when the input amount is not valid\"}],\"InvalidDropDate()\":[{\"notice\":\"Invalid drop date\"}],\"InvalidInputSizesDontMatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidMintFee()\":[{\"notice\":\"Error thrown when the sent amount is not valid\"}],\"InvalidMintFeeForFreeMinting()\":[{\"notice\":\"Error thrown when sending funds to a free minting\"}],\"InvalidMintingType()\":[{\"notice\":\"Invalid collection minting type for the current minting function\"}],\"InvalidPercentageOrDiscountValues()\":[{\"notice\":\"Invalid percentage or discount values\"}],\"InvalidPhaseWithoutDate()\":[{\"notice\":\"Invalid phase can't be set without giving a date, use the proper functions\"}],\"InvalidRevenuePercentage()\":[{\"notice\":\"The input revenue percentages are not valid\"}],\"InvalidTokenId()\":[{\"notice\":\"Error thrown when trying to mint a token with a given invalid id\"}],\"MaxPerAddressExceeded()\":[{\"notice\":\"The address exceeded the max per address amount\"}],\"MetadataAlreadyFixed()\":[{\"notice\":\"Metadata is already fixed. Can't change metadata once fixed\"}],\"NewBaseURICantBeEmpty()\":[{\"notice\":\"New BaseURI can't be empty\"}],\"NewPlaceholderCantBeEmpty()\":[{\"notice\":\"New Placeholder can't be empty\"}],\"NoBaseURINorPlaceholderSet()\":[{\"notice\":\"No BaseURI nor Placeholder set\"}],\"NonTransferrableSoulboundNFT()\":[{\"notice\":\"Can't transfer a Soulbound Token (SBT)\"}],\"NotEnoughAmountToMint()\":[{\"notice\":\"Error thrown when trying to mint more than the allowance to mint\"}],\"NothingToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets with no amount to redeem\"}],\"OnlyAffiliateOrN2M()\":[{\"notice\":\"Only the given affiliate or N2M can call this function\"}],\"OnlyOwnerOrN2M()\":[{\"notice\":\"Only owner of N2M can call this function\"}],\"PresaleInvalidMintingType()\":[{\"notice\":\"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\"}],\"PresaleNotOpen()\":[{\"notice\":\"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\"}],\"PublicSaleNotOpen()\":[{\"notice\":\"Error thrown when trying to mint and the collection current phase is not `open`\"}],\"ReentrancyGuard()\":[{\"notice\":\"Reentrancy Guard protection\"}],\"RoyaltyFeeTooHigh()\":[{\"notice\":\"Royalty fee can't be higher than 10%\"}],\"SaleFinished()\":[{\"notice\":\"Error thrown when trying to mint but the sale has already finished\"}],\"SignatureExpired()\":[{\"notice\":\"The signature has expired\"}],\"SignatureMismatch()\":[{\"notice\":\"The given signature doesn't match the input values\"}],\"TokenAlreadyMinted()\":[{\"notice\":\"Error thrown when trying to mint a token with a given id which is already minted\"}],\"TotalSupplyMustBeGreaterThanZero()\":[{\"notice\":\"Invalid input. Total supply must be greater than zero\"}],\"WaitUntilDropDate()\":[{\"notice\":\"Can't mint until specified drop date\"}]},\"events\":{\"AffiliateSell(address)\":{\"notice\":\"This event is emitted when a token is minted using an affiliate\"}},\"kind\":\"user\",\"methods\":{\"isMetadataFixed()\":{\"notice\":\"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\"},\"n2mVersion()\":{\"notice\":\"Current version of the nfts2me.com contracts.\"},\"owner()\":{\"notice\":\"Returns the address of the current collection owner.\"}},\"notice\":\"Read our terms of service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/N2MCommonStorage.sol\":\"N2MCommonStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IN2MCrossFactory {\\n function getN2MTreasuryAddress() external pure returns (address);\\n function ownerOf(uint256 tokenId) external view returns (address);\\n function strictOwnerOf(uint256 tokenId) external view returns (address);\\n}\\n\",\"keccak256\":\"0xa82780a2da4848f8c0f93e1a2da64e9b7e90869803050e6921863fe5683af43d\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"../important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0xfda5b953ecaa603de1c1b1c789767ea9aa2e1b9d5e12b7e1af68c581e35c225f\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IOperatorFilterRegistry {\\n function isOperatorAllowed(address registrant, address operator) external view returns (bool);\\n function register(address registrant) external;\\n function registerAndSubscribe(address registrant, address subscription) external;\\n function registerAndCopyEntries(address registrant, address registrantToCopy) external;\\n function updateOperator(address registrant, address operator, bool filtered) external;\\n function updateOperators(address registrant, address[] calldata operators, bool filtered) external;\\n function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;\\n function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;\\n function subscribe(address registrant, address registrantToSubscribe) external;\\n function unsubscribe(address registrant, bool copyExistingEntries) external;\\n function subscriptionOf(address addr) external returns (address registrant);\\n function subscribers(address registrant) external returns (address[] memory);\\n function subscriberAt(address registrant, uint256 index) external returns (address);\\n function copyEntriesOf(address registrant, address registrantToCopy) external;\\n function isOperatorFiltered(address registrant, address operator) external returns (bool);\\n function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);\\n function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);\\n function filteredOperators(address addr) external returns (address[] memory);\\n function filteredCodeHashes(address addr) external returns (bytes32[] memory);\\n function filteredOperatorAt(address registrant, uint256 index) external returns (address);\\n function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);\\n function isRegistered(address addr) external view returns (bool);\\n function codeHashOf(address addr) external view returns (bytes32);\\n}\",\"keccak256\":\"0x94297c604eea7c0dcac072ec8257d58f3927fc2c1f22b41c9f78d82e4a8cf5a5\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract NFTOwnableUpgradeable is Initializable, ContextUpgradeable {\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n modifier onlyStrictOwner() {\\n _checkStrictOwner();\\n _;\\n }\\n\\n modifier onlyOwnerOrN2M() {\\n _checkOwnerOrN2M();\\n _;\\n }\\n\\n modifier onlyN2M() {\\n _checkN2M();\\n _;\\n }\\n\\n /// @notice Returns the address of the current collection owner.\\n /// @return The address of the owner.\\n function owner() public view virtual returns (address);\\n function _strictOwner() internal view virtual returns (address);\\n function _getN2MFeeAddress() internal view virtual returns (address);\\n\\n function _checkOwner() internal view virtual {\\n require(owner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkStrictOwner() internal view virtual {\\n require(_strictOwner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkOwnerOrN2M() internal view virtual {\\n require(owner() == msg.sender || _getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkN2M() internal view virtual {\\n require(_getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n}\",\"keccak256\":\"0x0b3a2ca7a3f09ec6c3e387f9102e32bf755baf64986076d114f584fea0f17b38\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"contracts/N2MCommonStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\\\";\\nimport \\\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\\\";\\nimport \\\"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\\\";\\nimport {IOperatorFilterRegistry} from \\\"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\\\";\\nimport \\\"./N2MVersion.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MCommonStorage is\\n NFTOwnableUpgradeable,\\n IN2M_ERCStorage,\\n N2MVersion\\n{\\n /// CONSTANTS\\n address internal constant DEFAULT_SUBSCRIPTION = address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6);\\n address internal constant OPENSEA_CONDUIT = address(0x1E0049783F008A0085193E00003D00cd54003c71);\\n address internal constant N2M_CONDUIT = address(0x88899DC0B84C6E726840e00DFb94ABc6248825eC);\\n IOperatorFilterRegistry internal constant operatorFilterRegistry = IOperatorFilterRegistry(0x000000000000AAeB6D7670E522A718067333cd4E);\\n address internal constant N2M_PRESALE_SIGNER = address(0xC0ffee06CE3D6689305035601a055A96acd619c6);\\n address internal constant N2M_TREASURY = address(0x955aF4de9Ca03f84c9462457D075aCABf1A8AfC8);\\n uint256 internal constant N2M_FEE = 5_00;\\n uint256 internal constant MAX_AFFILIATE_DISCOUNT = 100_00;\\n uint256 internal constant MAX_AFFILIATE_PERCENTAGE = 100_00;\\n uint256 internal constant NOT_ENTERED = 0;\\n\\n /// IMMUTABLE \\n address payable internal immutable _factory;\\n\\n bytes32 internal _baseURICIDHash;\\n bytes32 internal _placeholderImageCIDHash;\\n bytes32 internal _contractURIMetadataCIDHash;\\n\\n mapping(address => uint256) internal _pendingAffiliateBalance;\\n uint256 internal _pendingTotalAffiliatesBalance;\\n\\n RevenueAddress[] internal _revenueInfo;\\n mapping(address => AffiliateInformation) internal _affiliatesInfo;\\n\\n uint256 internal _mintPrice;\\n uint256 internal _withdrawnAmount;\\n uint256 internal _reentrancyEntered;\\n uint256 internal _dropDateTimestamp;\\n uint256 internal _endDateTimestamp; \\n\\n mapping(address => uint256) internal _withdrawnERC20Amount;\\n address internal _erc20PaymentAddress;\\n\\n mapping(address => RandomTicket) internal _randomTickets;\\n mapping(bytes => uint256) internal _usedAmountSignature;\\n mapping(uint256 => bool) internal _soulbound;\\n mapping(uint256 => bytes32) internal _customURICIDHashes;\\n\\n uint32 internal _soldTokens;\\n SalePhase internal _currentPhase;\\n OperatorFilterStatus internal _operatorFilterStatus;\\n MintingType internal _mintingType; \\n uint16 internal _royaltyFee;\\n uint16 internal _maxPerAddress; \\n uint32 internal _collectionSize;\\n bool internal _isERC20Payment;\\n bool internal _soulboundCollection;\\n\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(address payable factoryAddress) {\\n _factory = factoryAddress;\\n _disableInitializers();\\n }\\n\\n /// @notice Returns the address of the current collection owner.\\n function owner() public view override(NFTOwnableUpgradeable) returns (address collectionOwner) {\\n try IN2MCrossFactory(_factory).ownerOf(uint256(uint160(address(this)))) returns (address ownerOf) {\\n return ownerOf;\\n } catch {}\\n }\\n\\n function _strictOwner() internal view override(NFTOwnableUpgradeable) returns (address ownerStrictAddress) {\\n try IN2MCrossFactory(_factory).strictOwnerOf(uint256(uint160(address(this)))) returns (address strictOwnerOf) {\\n return strictOwnerOf;\\n } catch {}\\n }\\n\\n function _getN2MFeeAddress() internal view override(NFTOwnableUpgradeable) returns (address) {\\n\\n try IN2MCrossFactory(_factory).getN2MTreasuryAddress() returns (address n2mTreasuryAddress) {\\n return n2mTreasuryAddress;\\n } catch {\\n return N2M_TREASURY;\\n }\\n } \\n\\n modifier nonReentrant() {\\n _nonReentrantBefore();\\n _;\\n _nonReentrantAfter();\\n }\\n\\n function _nonReentrantBefore() private {\\n if (_reentrancyEntered != 0) revert ReentrancyGuard();\\n _reentrancyEntered = 1;\\n }\\n\\n function _nonReentrantAfter() private {\\n delete(_reentrancyEntered);\\n } \\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() public view override returns (bool) {\\n return (_baseURICIDHash != 0 || (_mintingType == MintingType.CUSTOM_URI));\\n }\\n\\n}\\n\",\"keccak256\":\"0xa72fa45c4464fb3dc36a3c7385c79b0af244fb8f8c654f6c75f10035efdb2e88\",\"license\":\"UNLICENSED\"},\"contracts/N2MVersion.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts Version\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MVersion is Readme {\\n /// @notice Current version of the nfts2me.com contracts.\\n function n2mVersion() virtual external pure returns (uint256) {\\n return 1000;\\n }\\n\\n}\\n\",\"keccak256\":\"0x2e406a5b00c59cdc4000c829e039e6eb23af09e50e9176dd5a3f68b5a2fb734b\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10280,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_baseURICIDHash","offset":0,"slot":"51","type":"t_bytes32"},{"astId":10282,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_placeholderImageCIDHash","offset":0,"slot":"52","type":"t_bytes32"},{"astId":10284,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_contractURIMetadataCIDHash","offset":0,"slot":"53","type":"t_bytes32"},{"astId":10288,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_pendingAffiliateBalance","offset":0,"slot":"54","type":"t_mapping(t_address,t_uint256)"},{"astId":10290,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_pendingTotalAffiliatesBalance","offset":0,"slot":"55","type":"t_uint256"},{"astId":10294,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_revenueInfo","offset":0,"slot":"56","type":"t_array(t_struct(RevenueAddress)394_storage)dyn_storage"},{"astId":10299,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_affiliatesInfo","offset":0,"slot":"57","type":"t_mapping(t_address,t_struct(AffiliateInformation)401_storage)"},{"astId":10301,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_mintPrice","offset":0,"slot":"58","type":"t_uint256"},{"astId":10303,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_withdrawnAmount","offset":0,"slot":"59","type":"t_uint256"},{"astId":10305,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_reentrancyEntered","offset":0,"slot":"60","type":"t_uint256"},{"astId":10307,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_dropDateTimestamp","offset":0,"slot":"61","type":"t_uint256"},{"astId":10309,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_endDateTimestamp","offset":0,"slot":"62","type":"t_uint256"},{"astId":10313,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_withdrawnERC20Amount","offset":0,"slot":"63","type":"t_mapping(t_address,t_uint256)"},{"astId":10315,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_erc20PaymentAddress","offset":0,"slot":"64","type":"t_address"},{"astId":10320,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_randomTickets","offset":0,"slot":"65","type":"t_mapping(t_address,t_struct(RandomTicket)389_storage)"},{"astId":10324,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_usedAmountSignature","offset":0,"slot":"66","type":"t_mapping(t_bytes_memory_ptr,t_uint256)"},{"astId":10328,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_soulbound","offset":0,"slot":"67","type":"t_mapping(t_uint256,t_bool)"},{"astId":10332,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_customURICIDHashes","offset":0,"slot":"68","type":"t_mapping(t_uint256,t_bytes32)"},{"astId":10334,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_soldTokens","offset":0,"slot":"69","type":"t_uint32"},{"astId":10337,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_currentPhase","offset":4,"slot":"69","type":"t_enum(SalePhase)407"},{"astId":10340,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_operatorFilterStatus","offset":5,"slot":"69","type":"t_enum(OperatorFilterStatus)417"},{"astId":10343,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_mintingType","offset":6,"slot":"69","type":"t_enum(MintingType)412"},{"astId":10345,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_royaltyFee","offset":7,"slot":"69","type":"t_uint16"},{"astId":10347,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_maxPerAddress","offset":9,"slot":"69","type":"t_uint16"},{"astId":10349,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_collectionSize","offset":11,"slot":"69","type":"t_uint32"},{"astId":10351,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_isERC20Payment","offset":15,"slot":"69","type":"t_bool"},{"astId":10353,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"_soulboundCollection","offset":16,"slot":"69","type":"t_bool"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(RevenueAddress)394_storage)dyn_storage":{"base":"t_struct(RevenueAddress)394_storage","encoding":"dynamic_array","label":"struct IN2M_ERCStorage.RevenueAddress[]","numberOfBytes":"32"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_memory_ptr":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_enum(MintingType)412":{"encoding":"inplace","label":"enum IN2M_ERCStorage.MintingType","numberOfBytes":"1"},"t_enum(OperatorFilterStatus)417":{"encoding":"inplace","label":"enum IN2M_ERCStorage.OperatorFilterStatus","numberOfBytes":"1"},"t_enum(SalePhase)407":{"encoding":"inplace","label":"enum IN2M_ERCStorage.SalePhase","numberOfBytes":"1"},"t_mapping(t_address,t_struct(AffiliateInformation)401_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct IN2M_ERCStorage.AffiliateInformation)","numberOfBytes":"32","value":"t_struct(AffiliateInformation)401_storage"},"t_mapping(t_address,t_struct(RandomTicket)389_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct IN2M_ERCStorage.RandomTicket)","numberOfBytes":"32","value":"t_struct(RandomTicket)389_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes_memory_ptr,t_uint256)":{"encoding":"mapping","key":"t_bytes_memory_ptr","label":"mapping(bytes => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_bool)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_uint256,t_bytes32)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_struct(AffiliateInformation)401_storage":{"encoding":"inplace","label":"struct IN2M_ERCStorage.AffiliateInformation","members":[{"astId":396,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"enabled","offset":0,"slot":"0","type":"t_bool"},{"astId":398,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"affiliatePercentage","offset":1,"slot":"0","type":"t_uint16"},{"astId":400,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"userDiscount","offset":3,"slot":"0","type":"t_uint16"}],"numberOfBytes":"32"},"t_struct(RandomTicket)389_storage":{"encoding":"inplace","label":"struct IN2M_ERCStorage.RandomTicket","members":[{"astId":386,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"amount","offset":0,"slot":"0","type":"t_uint256"},{"astId":388,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"blockNumberToReveal","offset":0,"slot":"1","type":"t_uint256"}],"numberOfBytes":"64"},"t_struct(RevenueAddress)394_storage":{"encoding":"inplace","label":"struct IN2M_ERCStorage.RevenueAddress","members":[{"astId":391,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"to","offset":0,"slot":"0","type":"t_address"},{"astId":393,"contract":"contracts/N2MCommonStorage.sol:N2MCommonStorage","label":"percentage","offset":20,"slot":"0","type":"t_uint16"}],"numberOfBytes":"32"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"AddressFiltered(address)":[{"notice":"Operator address is filtered"}],"CantLowerCurrentPercentages()":[{"notice":"Can't lower current percentages"}],"CantRevealYetWaitABitToBeAbleToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets too soon"}],"CantSetBaseURIAndPlaceholderAtTheSameTime()":[{"notice":"Can't set BaseURI and Placeholder at the same time"}],"CollectionSoldOut()":[{"notice":"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"}],"ContractMetadataURIAlreadyFixed()":[{"notice":"Contract MetadataURI already fixed"}],"InputSizeMismatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidAmount()":[{"notice":"Error thrown when the input amount is not valid"}],"InvalidDropDate()":[{"notice":"Invalid drop date"}],"InvalidInputSizesDontMatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidMintFee()":[{"notice":"Error thrown when the sent amount is not valid"}],"InvalidMintFeeForFreeMinting()":[{"notice":"Error thrown when sending funds to a free minting"}],"InvalidMintingType()":[{"notice":"Invalid collection minting type for the current minting function"}],"InvalidPercentageOrDiscountValues()":[{"notice":"Invalid percentage or discount values"}],"InvalidPhaseWithoutDate()":[{"notice":"Invalid phase can't be set without giving a date, use the proper functions"}],"InvalidRevenuePercentage()":[{"notice":"The input revenue percentages are not valid"}],"InvalidTokenId()":[{"notice":"Error thrown when trying to mint a token with a given invalid id"}],"MaxPerAddressExceeded()":[{"notice":"The address exceeded the max per address amount"}],"MetadataAlreadyFixed()":[{"notice":"Metadata is already fixed. Can't change metadata once fixed"}],"NewBaseURICantBeEmpty()":[{"notice":"New BaseURI can't be empty"}],"NewPlaceholderCantBeEmpty()":[{"notice":"New Placeholder can't be empty"}],"NoBaseURINorPlaceholderSet()":[{"notice":"No BaseURI nor Placeholder set"}],"NonTransferrableSoulboundNFT()":[{"notice":"Can't transfer a Soulbound Token (SBT)"}],"NotEnoughAmountToMint()":[{"notice":"Error thrown when trying to mint more than the allowance to mint"}],"NothingToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets with no amount to redeem"}],"OnlyAffiliateOrN2M()":[{"notice":"Only the given affiliate or N2M can call this function"}],"OnlyOwnerOrN2M()":[{"notice":"Only owner of N2M can call this function"}],"PresaleInvalidMintingType()":[{"notice":"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"}],"PresaleNotOpen()":[{"notice":"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"}],"PublicSaleNotOpen()":[{"notice":"Error thrown when trying to mint and the collection current phase is not `open`"}],"ReentrancyGuard()":[{"notice":"Reentrancy Guard protection"}],"RoyaltyFeeTooHigh()":[{"notice":"Royalty fee can't be higher than 10%"}],"SaleFinished()":[{"notice":"Error thrown when trying to mint but the sale has already finished"}],"SignatureExpired()":[{"notice":"The signature has expired"}],"SignatureMismatch()":[{"notice":"The given signature doesn't match the input values"}],"TokenAlreadyMinted()":[{"notice":"Error thrown when trying to mint a token with a given id which is already minted"}],"TotalSupplyMustBeGreaterThanZero()":[{"notice":"Invalid input. Total supply must be greater than zero"}],"WaitUntilDropDate()":[{"notice":"Can't mint until specified drop date"}]},"events":{"AffiliateSell(address)":{"notice":"This event is emitted when a token is minted using an affiliate"}},"kind":"user","methods":{"isMetadataFixed()":{"notice":"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."},"n2mVersion()":{"notice":"Current version of the nfts2me.com contracts."},"owner()":{"notice":"Returns the address of the current collection owner."}},"notice":"Read our terms of service","version":1}}},"contracts/N2MERC1155.sol":{"N2MERC1155":{"abi":[{"inputs":[{"internalType":"address","name":"libraryAddress","type":"address"},{"internalType":"address payable","name":"factoryAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"filtered","type":"address"}],"name":"AddressFiltered","type":"error"},{"inputs":[],"name":"CantLowerCurrentPercentages","type":"error"},{"inputs":[],"name":"CantRevealYetWaitABitToBeAbleToRedeem","type":"error"},{"inputs":[],"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","type":"error"},{"inputs":[],"name":"CollectionSoldOut","type":"error"},{"inputs":[],"name":"ContractMetadataURIAlreadyFixed","type":"error"},{"inputs":[],"name":"InputSizeMismatch","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidDropDate","type":"error"},{"inputs":[],"name":"InvalidInputSizesDontMatch","type":"error"},{"inputs":[],"name":"InvalidMintFee","type":"error"},{"inputs":[],"name":"InvalidMintFeeForFreeMinting","type":"error"},{"inputs":[],"name":"InvalidMintingType","type":"error"},{"inputs":[],"name":"InvalidPercentageOrDiscountValues","type":"error"},{"inputs":[],"name":"InvalidPhaseWithoutDate","type":"error"},{"inputs":[],"name":"InvalidRevenuePercentage","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MaxPerAddressExceeded","type":"error"},{"inputs":[],"name":"MetadataAlreadyFixed","type":"error"},{"inputs":[],"name":"NewBaseURICantBeEmpty","type":"error"},{"inputs":[],"name":"NewPlaceholderCantBeEmpty","type":"error"},{"inputs":[],"name":"NoBaseURINorPlaceholderSet","type":"error"},{"inputs":[],"name":"NonTransferrableSoulboundNFT","type":"error"},{"inputs":[],"name":"NotEnoughAmountToMint","type":"error"},{"inputs":[],"name":"NothingToRedeem","type":"error"},{"inputs":[],"name":"OnlyAffiliateOrN2M","type":"error"},{"inputs":[],"name":"OnlyOwnerOrN2M","type":"error"},{"inputs":[],"name":"PresaleInvalidMintingType","type":"error"},{"inputs":[],"name":"PresaleNotOpen","type":"error"},{"inputs":[],"name":"PublicSaleNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"RoyaltyFeeTooHigh","type":"error"},{"inputs":[],"name":"SaleFinished","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[],"name":"SignatureMismatch","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TotalSupplyMustBeGreaterThanZero","type":"error"},{"inputs":[],"name":"WaitUntilDropDate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"affiliate","type":"address"}],"name":"AffiliateSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSequential","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSpecify","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startId","type":"uint256"},{"internalType":"uint256","name":"endId","type":"uint256"}],"name":"getSupplies","outputs":[{"internalType":"uint256[]","name":"supplies","type":"uint256[]"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"iMintPrice","type":"uint256"},{"internalType":"bytes32","name":"baseURICIDHash","type":"bytes32"},{"internalType":"bytes32","name":"placeholderImageCIDHash","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint16","name":"percentage","type":"uint16"}],"internalType":"struct IN2M_ERCStorage.RevenueAddress[]","name":"revenueAddresses","type":"tuple[]"},{"internalType":"address","name":"iErc20PaymentAddress","type":"address"},{"internalType":"uint32","name":"iTotalSupply","type":"uint32"},{"internalType":"uint16","name":"iRoyaltyFee","type":"uint16"},{"internalType":"bool","name":"soulboundCollection","type":"bool"},{"internalType":"enum IN2M_ERCStorage.MintingType","name":"iMintingType","type":"uint8"}],"name":"initialize","outputs":[],"stateMutability":"payable","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":[],"name":"isMetadataFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"customURICIDHash","type":"bytes32"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"mintCustomURITo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"freeMinting","type":"bool"},{"internalType":"uint256","name":"customFee","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"soulbound","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mintPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"collectionOwner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeemRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"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":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"author":"The NFTs2Me Team","custom:security-contact":"security@nfts2me.com","custom:terms-of-service":"https://nfts2me.com/terms-of-service/","custom:website":"https://nfts2me.com/","events":{"AffiliateSell(address)":{"params":{"affiliate":"The affiliate address"}},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"TransferBatch(address,address,address,uint256[],uint256[])":{"details":"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."},"TransferSingle(address,address,address,uint256,uint256)":{"details":"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"URI(string,uint256)":{"details":"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."}},"kind":"dev","methods":{"airdropRandom(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSequential(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSpecify(address[],uint256[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"balanceOf(address)":{"params":{"owner":"to ask for the balance"},"returns":{"balance":"of the `owner`"}},"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"exists(uint256)":{"details":"Indicates whether any token exist with a given id, or not."},"isApprovedForAll(address,address)":{"params":{"operator":"Address of authorized operator","owner":"The owner of the tokens"},"returns":{"_0":"True if the operator is approved, false if not"}},"maxPerAddress()":{"returns":{"_0":"Max per address allowed."}},"mint(uint256)":{"params":{"amount":"The number of NFTs to mint"}},"mint(uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint"}},"mintCustomURITo(address,bytes32,bool)":{"params":{"customURICIDHash":"The CID of the given token.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The address of the NFTs receiver"}},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"params":{"amount":"Amount to mint.","customFee":"Zero is fee is different from `mintingPrice`.","freeMinting":"True is minting is free","maxAmount":"Max Amount to be minted with the given `signature`.","signature":"Valid `signature` for the presale/whitelist.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`."}},"mintPrice()":{"returns":{"_0":"Mint price for one NFT in native coin or ERC-20."}},"mintRandomTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintRandomTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintSpecifyTo(address,uint256[])":{"params":{"to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintSpecifyTo(address,uint256[],address)":{"params":{"affiliate":"The affiliate address","to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"name()":{"returns":{"_0":"the collection name"}},"royaltyInfo(uint256,uint256)":{"params":{"salePrice":"The sale price"},"returns":{"receiver":"the receiver of the royalties.","royaltyAmount":"the amount of the royalties for the given input."}},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"MUST emit the ApprovalForAll event on success.","params":{"approved":"True if the operator is approved, false to revoke approval","operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceId":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceId` and `interfaceId` is not 0xffffffff, `false` otherwise"}},"totalSupply()":{"returns":{"_0":"Current total supply."}},"totalSupply(uint256)":{"details":"Total amount of tokens in with a given id."},"uri(uint256)":{"params":{"tokenId":"of the token to ask for"},"returns":{"_0":"tokenURI for `tokenId`"}}},"stateVariables":{"symbol":{"return":"the collection symbol","returns":{"_0":"the collection symbol"}}},"title":"NFTs2Me.com Smart Contracts for ERC-1155.","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60c0346200014157601f620053d938819003918201601f19168301916001600160401b038311848410176200014657808492604094855283398101031262000141578051906001600160a01b039081831683036200014157602001519081168103620001415760805260005460ff8160081c16620000ec5760ff80821610620000b0575b5060a05260405161527c90816200015d82396080518181816120f901526142a1015260a051816152140152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000083565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040526004361015610015575b3661520857005b60003560e01c8062fdd58e1461026f57806301ffc9a71461026a57806306fdde03146102655780630de77eb8146102605780630e89341c146101cf5780631249c58b1461025b57806318160ddd146102565780631d7df191146102515780631ff4cc7d1461024c5780632a55205a146102475780632eb2c2d614610242578063438b1b4b1461023d5780634402d25414610238578063449a52f8146102335780634a50aa851461022e5780634e1273f4146102295780634f558e79146102245780635066e5c21461021f578063639814e01461021a5780636817c76c1461021557806368fdda33146102105780636ad542401461020b57806370a082311461020657806371e6775f14610201578063798f4794146101fc5780638da5cb5b146101f757806394bf804d146101f257806395d89b41146101ed5780639d13a5ba146101e8578063a0712d68146101e3578063a22cb465146101de578063bd85b039146101d9578063be172edf146101d4578063c87b56dd146101cf578063cb93c48f146101ca578063e985e9c5146101c5578063f242432a146101c05763fefa5d720361000e57611eca565b611d26565b611cf2565b611cd5565b6105d9565b611be8565b611bbc565b611a6d565b611a4f565b6119b4565b61190d565b61188d565b611854565b6117b8565b611573565b61154c565b611458565b61130b565b6112b5565b611290565b6111f1565b611135565b610ffd565b610efd565b610ed2565b610e82565b610e66565b610c4e565b610a1a565b610807565b6107d7565b6107b3565b6106d3565b610590565b61048d565b610303565b6102a6565b73ffffffffffffffffffffffffffffffffffffffff81160361029257565b600080fd5b60c435906102a482610274565b565b346102925760406003193601126102925760206102d16004356102c881610274565b60243590611ed9565b604051908152f35b7fffffffff0000000000000000000000000000000000000000000000000000000081160361029257565b346102925760206003193601126102925760207fffffffff00000000000000000000000000000000000000000000000000000000600435610343816102d9565b167f2a55205a00000000000000000000000000000000000000000000000000000000811490811561037a575b506040519015158152f35b7fd9b67a26000000000000000000000000000000000000000000000000000000008114915081156103de575b81156103b4575b503861036f565b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386103ad565b7f0e89341c00000000000000000000000000000000000000000000000000000000811491506103a6565b600091031261029257565b60005b8381106104265750506000910152565b8181015183820152602001610416565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361047281518092818752878088019101610413565b0116010190565b90602061048a928181520190610436565b90565b346102925760008060031936011261058d57604051908060dc546104b0816118ba565b8085529160019180831690811561054557506001146104ea575b6104e6856104da81870382610b0b565b60405191829182610479565b0390f35b925060dc83527f3162b0988d4210bff484413ed451d170a03887272177efc0b7d000f10abe9edf5b82841061052d5750505081016020016104da826104e66104ca565b80546020858701810191909152909301928101610512565b8695506104e6969350602092506104da9491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010192936104ca565b80fd5b3461029257600060031936011261029257603354158015906105ba575b6020906040519015158152f35b506020600360ff60455460301c166105d18161218f565b1490506105ad565b346102925760208060031936011261029257604051907f01284a4600000000000000000000000000000000000000000000000000000000825260043560048301526000918281602481305afa9283156106ce578093610649575b50506104e6604051928284938452830190610436565b909192503d8082843e61065c8184610b0b565b82019183818403126106c65780519067ffffffffffffffff82116106ca570182601f820112156106c65780519161069283610bc2565b936106a06040519586610b0b565b83855285848401011161058d5750906106be91848085019101610413565b903880610633565b5080fd5b8280fd5b6120a1565b6000600319360112610292576106ea603a54614d2f565b6106f2614c18565b60455460ff8160301c166107058161218f565b61078957604580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92831660010183169081179091559060455491818360581c161061075f5761075d911633613766565b005b60046040517f5fd48f91000000000000000000000000000000000000000000000000000000008152fd5b60046040517f64151c75000000000000000000000000000000000000000000000000000000008152fd5b3461029257600060031936011261029257602063ffffffff60455416604051908152f35b60406003193601126102925761075d6004356107f281610274565b6024359061080282603a54614db5565b613de9565b60008060031936011261058d5760016108403373ffffffffffffffffffffffffffffffffffffffff166000526041602052604060002090565b01543360009081526041602052604090205480156109f05760016108843373ffffffffffffffffffffffffffffffffffffffff166000526041602052604060002090565b01544311156109c657610938826109759340908115610978575b508460016108cc3373ffffffffffffffffffffffffffffffffffffffff166000526041602052604060002090565b0155846108f93373ffffffffffffffffffffffffffffffffffffffff166000526041602052604060002090565b5560455460481c61ffff16926109327fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff60455416604555565b33613edf565b7fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff6affff0000000000000000006045549260481b16911617604555565b80f35b6109a8915060ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff004316612703565b438110156109b8575b403861089e565b6109c19061287a565b6109b1565b60046040517f93c4a003000000000000000000000000000000000000000000000000000000008152fd5b60046040517f9890af60000000000000000000000000000000000000000000000000000000008152fd5b34610292576040600319360112610292576040612710610a4561ffff60455460381c16602435612710565b048151903082526020820152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111610a9657604052565b610a53565b6040810190811067ffffffffffffffff821117610a9657604052565b6020810190811067ffffffffffffffff821117610a9657604052565b6060810190811067ffffffffffffffff821117610a9657604052565b60a0810190811067ffffffffffffffff821117610a9657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a9657604052565b67ffffffffffffffff8111610a965760051b60200190565b81601f8201121561029257803591610b7b83610b4c565b92610b896040519485610b0b565b808452602092838086019260051b820101928311610292578301905b828210610bb3575050505090565b81358152908301908301610ba5565b67ffffffffffffffff8111610a9657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192610c0882610bc2565b91610c166040519384610b0b565b829481845281830111610292578281602093846000960137010152565b9080601f830112156102925781602061048a93359101610bfc565b346102925760a060031936011261029257600435610c6b81610274565b60243590610c7882610274565b67ffffffffffffffff9060443582811161029257610c9a903690600401610b64565b9160643581811161029257610cb3903690600401610b64565b9060843590811161029257610ccc903690600401610c33565b92610cd63361500b565b73ffffffffffffffffffffffffffffffffffffffff93848416943386148015610e28575b610d0390612d4c565b610d1083518551146135bc565b8616610d1d811515612dbd565b610d29848489886132c3565b60005b8351811015610de45780610d43610ddf9286612073565b51610dd8610dd08b610d77610d58868c612073565b51948c610dbf87610d9c83610d77866000526078602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54610da982821015612e2e565b0391610d77846000526078602052604060002090565b556000526078602052604060002090565b918254612703565b9055612017565b610d2c565b509386919461075d966040517f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb339180610e1f8a8a8361362d565b0390a4336136eb565b50610d03610e363387612cae565b9050610cfa565b600319606091011261029257600435610e5581610274565b906024359060443561048a81610274565b61075d610e7d610e7536610e3d565b819391614a51565b613a9f565b604060031936011261029257600435610e9a81610274565b6024359067ffffffffffffffff821161029257610ebe61075d923690600401610b64565b90610ecd603a54835190614db5565b61409a565b60406003193601126102925761075d600435610eed81610274565b60243590610e7d82603a54614db5565b606060031936011261029257600435610f1581610274565b6024359067ffffffffffffffff821161029257610f3961075d923690600401610b64565b90610ecd604435610f4981610274565b8351614a51565b81601f8201121561029257803591610f6783610b4c565b92610f756040519485610b0b565b808452602092838086019260051b820101928311610292578301905b828210610f9f575050505090565b8380918335610fad81610274565b815201910190610f91565b90815180825260208080930193019160005b828110610fd8575050505090565b835185529381019392810192600101610fca565b90602061048a928181520190610fb8565b346102925760406003193601126102925767ffffffffffffffff6004358181116102925761102f903690600401610f50565b9060243590811161029257611048903690600401610b64565b9080518251036110cb5761105c8151611f99565b9160005b82518110156110bd57806110a861109761107d6110b89487612073565b5173ffffffffffffffffffffffffffffffffffffffff1690565b6110a18386612073565b5190611ed9565b6110b28287612073565b52612017565b611060565b604051806104e68682610fec565b608460405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152fd5b3461029257602060031936011261029257602061116160043560005260aa602052604060002054151590565b6040519015158152f35b9181601f840112156102925782359167ffffffffffffffff8311610292576020808501948460061b01011161029257565b60e4359063ffffffff8216820361029257565b61ffff81160361029257565b61010435906102a4826111af565b8015150361029257565b61012435906102a4826111c9565b6101443590600482101561029257565b6101606003193601126102925767ffffffffffffffff6004358181116102925761121f903690600401610c33565b60243582811161029257611237903690600401610c33565b9060a4359283116102925761125361075d93369060040161116b565b61125b610297565b61126361119c565b9161126c6111bb565b936112756111d3565b9561127e6111e1565b9760843591606435916044359161219e565b3461029257600060031936011261029257602061ffff60455460481c16604051908152f35b34610292576000600319360112610292576020603a54604051908152f35b6040600319820112610292576004359067ffffffffffffffff8211610292576112fe91600401610f50565b9060243561048a816111c9565b611314366112d3565b9061133d611320614255565b73ffffffffffffffffffffffffffffffffffffffff16331461420a565b604580549260ff8460301c166113528161218f565b6107895761136c93835163ffffffff958691828416612703565b9160581c161061075f5782519260005b84811061138557005b80836113f361139961107d60019587612073565b896113b76113ab8a5463ffffffff1690565b60010163ffffffff1690565b6113ec8163ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006045541617604555565b1690613766565b6113fe575b0161137c565b611453611428611412875463ffffffff1690565b63ffffffff166000526043602052604060002090565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b6113f8565b60606003193601126102925760043561147081610274565b6044359061147d826111c9565b611488603a54614d2f565b611490614c18565b60455490600360ff8360301c166114a68161218f565b0361078957604580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff93841660010184169081179091559160455492818460581c161061075f576114ff921690613766565b611532575b60243561152f61151960455463ffffffff1690565b63ffffffff166000526044602052604060002090565b55005b61154761142861141260455463ffffffff1690565b611504565b346102925760206003193601126102925760206102d160043561156e81610274565b612c4b565b60606003193601126102925767ffffffffffffffff60048035828111610292576115a09036908301610f50565b91602435908111610292576115b89036908301610b64565b604435926115c5846111c9565b6115cd6142d3565b80519260458054600260ff8260301c166115e68161218f565b0361176d5763ffffffff908181169082611601885184612703565b9160581c1610611744578551870361171b579061164e91818816011663ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006045541617604555565b60005b85811061165a57005b6116648186612073565b511580156116f0575b6116c757808761169661168561107d60019589612073565b61168f848a612073565b5190613766565b6116a1575b01611651565b6116c26114286116b18389612073565b516000526043602052604060002090565b61169b565b826040517f3f6cc768000000000000000000000000000000000000000000000000000000008152fd5b506116fb8186612073565b5182546117159060581c63ffffffff165b63ffffffff1690565b1061166d565b836040517f991f339f000000000000000000000000000000000000000000000000000000008152fd5b836040517f5fd48f91000000000000000000000000000000000000000000000000000000008152fd5b826040517f64151c75000000000000000000000000000000000000000000000000000000008152fd5b6117ae60409295949395606083526060830190610fb8565b9460208201520152565b34610292576040806003193601126102925760243590600435908183106118465760019280840190818511611841578385910301908111611841576117fc81611f99565b9260005b82811061181e575050506104e692505b519182914290439084611796565b808691830160005260aa602052846000205461183a8288612073565b5201611800565b611fe8565b6104e6925060609150611810565b3461029257600060031936011261029257602061186f6120ad565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60406003193601126102925761075d6004356118b46024356118ae81610274565b82614a51565b33613a9f565b90600182811c92168015611903575b60208310146118d457565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916118c9565b346102925760008060031936011261058d57604051908060dd54611930816118ba565b808552916001918083169081156105455750600114611959576104e6856104da81870382610b0b565b925060dd83527fac507b9f8bf86ad8bb770f71cd2b1992902ae0314d93fc0f2bb011d70e7962265b82841061199c5750505081016020016104da826104e66104ca565b80546020858701810191909152909301928101611981565b610100600319360112610292576004356119cd81610274565b67ffffffffffffffff602435818111610292576119ee903690600401610b64565b916044356119fb816111c9565b60c43590611a08826111c9565b60e43594848611610292573660238701121561029257856004013594851161029257366024868801011161029257602461075d96019360a43592608435926064359261430f565b60206003193601126102925761075d6004356118b481603a54614db5565b3461029257604060031936011261029257600435611a8a81610274565b602435611a96816111c9565b611a9f8261500b565b73ffffffffffffffffffffffffffffffffffffffff821691823314611b525781611af0611b2092610d773373ffffffffffffffffffffffffffffffffffffffff166000526079602052604060002090565b9060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051901515815233907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3005b608460405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152fd5b346102925760206003193601126102925760043560005260aa6020526020604060002054604051908152f35b611bf1366112d3565b90611bfa6142d3565b8051906045549260ff8460301c1693611c128561218f565b60018095036107895763ffffffff8082169181611c2f8785612703565b9160581c161061075f57611c7391818616011663ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006045541617604555565b611c7c436128a7565b4060005b848110611c8957005b80611c9587928461400b565b84611cac82611ca761107d868b612073565b613766565b611cb8575b5001611c80565b611428611ccf916000526043602052604060002090565b38611cb1565b346102925760006003193601126102925760206040516103e88152f35b34610292576040600319360112610292576020611161600435611d1481610274565b60243590611d2182610274565b612cae565b346102925760a060031936011261029257600435611d4381610274565b602435611d4f81610274565b6084359060643560443567ffffffffffffffff841161029257611d79610975943690600401610c33565b92611d833361500b565b73ffffffffffffffffffffffffffffffffffffffff95868116963388148015611eb5575b611db090612d4c565b8216611dbd811515612dbd565b611dda611dc9856131c6565b611dd2876131c6565b9085856132c3565b600097848952607860205285611e138460408c209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54611e2082821015612e2e565b868b52607860205203611e568460408c209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b55611e6f84610d77876000526078602052604060002090565b611e7a878254612703565b9055604080518681526020810188905233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291a433612fc3565b50611db0611ec33384612cae565b9050611da7565b61075d610802610e7536610e3d565b73ffffffffffffffffffffffffffffffffffffffff811615611f2f57611f2b91600052607860205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5490565b608460405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e6572000000000000000000000000000000000000000000006064820152fd5b90611fa382610b4c565b611fb06040519182610b0b565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611fde8294610b4c565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118415760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156120875760209160051b010190565b612044565b90816020910312610292575161048a81610274565b6040513d6000823e3d90fd5b6000906040517f6352211e00000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa60009181612130575b5061212c5750565b9150565b61215291925060203d8111612159575b61214a8183610b0b565b81019061208c565b9038612124565b503d612140565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004111561219957565b612160565b99979593919a98969492909a6000549b60ff8d60081c1615809d819e61232c575b811561230c575b50156122a25761220a9b8d61220160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055565b61226c576128e1565b61221057565b61223d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff60005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b61229d6101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff6000541617600055565b6128e1565b608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b303b1591508161231e575b50386121c6565b6001915060ff161438612317565b600160ff82161091506121bf565b601f8111612346575050565b60009060dc82527f3162b0988d4210bff484413ed451d170a03887272177efc0b7d000f10abe9edf906020601f850160051c830194106123a1575b601f0160051c01915b82811061239657505050565b81815560010161238a565b9092508290612381565b601f81116123b7575050565b60009060dd82527fac507b9f8bf86ad8bb770f71cd2b1992902ae0314d93fc0f2bb011d70e796226906020601f850160051c83019410612412575b601f0160051c01915b82811061240757505050565b8181556001016123fb565b90925082906123f2565b90815167ffffffffffffffff8111610a96576124428161243d60dc546118ba565b61233a565b602080601f831160011461249b5750819293600092612490575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161760dc55565b01519050388061245c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316946124ec60dc6000527f3162b0988d4210bff484413ed451d170a03887272177efc0b7d000f10abe9edf90565b926000905b878210612547575050836001959610612510575b505050811b0160dc55565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080612505565b806001859682949686015181550195019301906124f1565b90815167ffffffffffffffff8111610a96576125858161258060dd546118ba565b6123ab565b602080601f83116001146125de57508192936000926125d3575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161760dd55565b01519050388061259f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169461262f60dd6000527fac507b9f8bf86ad8bb770f71cd2b1992902ae0314d93fc0f2bb011d70e79622690565b926000905b87821061268a575050836001959610612653575b505050811b0160dd55565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080612648565b80600185968294968601518155019501930190612634565b603a55565b6126b08161218f565b7fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff66ff0000000000006045549260301b16911617604555565b91908110156120875760061b0190565b3561048a816111af565b9190820180921161184157565b8181029291811591840414171561184157565b9073ffffffffffffffffffffffffffffffffffffffff813561274481610274565b167fffffffffffffffffffff0000000000000000000000000000000000000000000075ffff00000000000000000000000000000000000000006020855494847fffffffffffffffffffffffff0000000000000000000000000000000000000000871617875501356127b4816111af565b60a01b16921617179055565b680100000000000000008211610a965760385482603855808310612833575b5060386000527f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f4561996000915b8383106128175750505050565b6001604082612827839486612723565b0192019201919061280a565b600060388152837f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619992830192015b82811061286f5750506127df565b818155600101612861565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00820191821161184157565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161184157565b9190820391821161184157565b906128f86128fd929d9c989993979d9a969a61241c565b61255f565b63ffffffff811615612c2157811590811580612c18575b612bee5761138861ffff861611612bc45761296a907fffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff6effffffff00000000000000000000006045549260581b16911617604555565b15612bb3575080612ba3575061297f8361218f565b60038303612b79576129936129ce92603a55565b7fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff68ffff000000000000006045549260381b16911617604555565b6129d78161218f565b80612b6a575b5073ffffffffffffffffffffffffffffffffffffffff8116612ae0575b5060018092151514612a9b575b83612a13575b50509050565b60009182905b858210612a6757505061251c9293612a30916127c0565b11612a3d57803880612a0d565b60046040517ffe0c06b7000000000000000000000000000000000000000000000000000000008152fd5b612a938294612a8d612a866020612a8086978c8a6126e9565b016126f9565b61ffff1690565b90612703565b930190612a19565b612adb7001000000000000000000000000000000007fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff6045541617604555565b612a07565b612b6490612b236f010000000000000000000000000000007fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff6045541617604555565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006040541617604055565b386129fa565b612b73906126a7565b386129dd565b60046040517f27bfeafe000000000000000000000000000000000000000000000000000000008152fd5b6129ce926126a261299392603455565b603355506129ce9161299390603a55565b60046040517f44b93ba4000000000000000000000000000000000000000000000000000000008152fd5b60046040517f04cff63b000000000000000000000000000000000000000000000000000000008152fd5b50831515612914565b60046040517fb8a9effe000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff168015610292578060005260de60205260406000205490600160ff60455460301c16612c8b8161218f565b14612c94575090565b600052604160205260406000205481018091116118415790565b73ffffffffffffffffffffffffffffffffffffffff918281167388899dc0b84c6e726840e00dfb94abc6248825ec8114612d4357731e0049783f008a0085193e00003d00cd54003c7114612d3b5760ff92612d369216600052607960205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b541690565b505050600190565b50505050600190565b15612d5357565b608460405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f7665640000000000000000000000000000000000006064820152fd5b15612dc457565b608460405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b15612e3557565b608460405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e73666572000000000000000000000000000000000000000000006064820152fd5b90816020910312610292575161048a816102d9565b61048a939273ffffffffffffffffffffffffffffffffffffffff60a093168252600060208301526040820152600160608201528160808201520190610436565b919261048a95949160a09473ffffffffffffffffffffffffffffffffffffffff8092168552166020840152604083015260608201528160808201520190610436565b60009060033d11612f4357565b905060046000803e60005160e01c90565b600060443d1061048a5760405160031991823d016004833e815167ffffffffffffffff918282113d602484011117612fb257818401948551938411612fba573d85010160208487010111612fb2575061048a92910160200190610b0b565b949350505050565b50949350505050565b9493919092813b612fd7575b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff60209561302c604051988997889687947ff23a6e61000000000000000000000000000000000000000000000000000000009d8e875260048701612ef4565b0393165af160009181613196575b50613104575050600161304b612f36565b6308c379a0146130d5575b613066575b388080808080612fcf565b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608490fd5b0390fd5b6130dd612f54565b806130e85750613056565b6130d19060405191829162461bcd60e51b835260048301610479565b7fffffffff00000000000000000000000000000000000000000000000000000000161461305b5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e730000000000000000000000000000000000000000000000006064820152608490fd5b6131b891925060203d81116131bf575b6131b08183610b0b565b810190612e9f565b903861303a565b503d6131a6565b604051906131d382610a9b565b60018252602082016020368237825115612087575290565b9190805160005b818110613254575050906132069183613468565b60455460481c61ffff16908161321a575050565b61322390612c4b565b1161322a57565b60046040517f550ffa9c000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff8516613278575b6001016131f2565b6132828185612073565b51906132ae8673ffffffffffffffffffffffffffffffffffffffff1660005260de602052604060002090565b91825490810180911161184157909155613270565b9392909193845160005b8181106132e35750509382613206939495613535565b73ffffffffffffffffffffffffffffffffffffffff90818416613350575b6001918616613311575b016132cd565b61331b8186612073565b51613349610dd08873ffffffffffffffffffffffffffffffffffffffff1660005260de602052604060002090565b905561330b565b6133676133606116b1838b612073565b5460ff1690565b80156133e8575b6133be5760019161337f8287612073565b516133b56133ad8773ffffffffffffffffffffffffffffffffffffffff1660005260de602052604060002090565b9182546128d4565b90559150613301565b60046040517f765c862b000000000000000000000000000000000000000000000000000000008152fd5b5060455460801c60ff1661336e565b156133fe57565b608460405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f7460448201527f616c537570706c790000000000000000000000000000000000000000000000006064820152fd5b91909260005b84518110156134ac57806134856134a79285612073565b51610dd8610dd0613496848a612073565b5160005260aa602052604060002090565b61346e565b509173ffffffffffffffffffffffffffffffffffffffff16156134ce57509050565b60005b8351811015612a0d57806134e86135309286612073565b5161352a6134f68386612073565b5161350b8360005260aa602052604060002090565b54613518828210156133f7565b039160005260aa602052604060002090565b55612017565b6134d1565b909392919373ffffffffffffffffffffffffffffffffffffffff80921615613582575b161561356357509050565b60005b8351811015612a0d57806134e861357d9286612073565b613566565b929060005b85518110156135b4578061359e6135af9286612073565b51610dd8610dd0613496848b612073565b613587565b509092613558565b156135c357565b608460405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b909161364461048a93604084526040840190610fb8565b916020818403910152610fb8565b9261368f61048a959373ffffffffffffffffffffffffffffffffffffffff61369d941686526000602087015260a0604087015260a0860190610fb8565b908482036060860152610fb8565b916080818403910152610436565b939061048a959361368f9161369d9473ffffffffffffffffffffffffffffffffffffffff809216885216602087015260a0604087015260a0860190610fb8565b9493919092813b6136fe57505050505050565b600073ffffffffffffffffffffffffffffffffffffffff60209561302c604051988997889687947fbc197c81000000000000000000000000000000000000000000000000000000009d8e8752600487016136ab565b6040519061376082610ab7565b60008252565b6102a4916040519161377783610ab7565b600083526137f1565b1561378757565b608460405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b9073ffffffffffffffffffffffffffffffffffffffff821692613815841515613780565b61381e826131c6565b60409485519161382d83610a9b565b6001835260209283810191843684378151156120875760016138509352876131eb565b60009484865260788352613886818888209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b805490600182018092116118415755818688518781526001868201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a3392a43b6138d457505050505050565b6139128291869488519586809481937ff23a6e61000000000000000000000000000000000000000000000000000000009a8b84523360048501612eb4565b03925af19182918593613a80575b50506139e8575050600190613933612f36565b6308c379a0146139b8575b5061394f5750388080808080612fcf565b5162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608490fd5b6139c0612f54565b90816139cc575061393e565b50825162461bcd60e51b81529081906130d19060048301610479565b7fffffffff0000000000000000000000000000000000000000000000000000000016039050613a17575061305b565b5162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e730000000000000000000000000000000000000000000000006064820152608490fd5b613a97929350803d106131bf576131b08183610b0b565b903880613920565b919091613aaa614c18565b604580549060ff8260301c16613abf8161218f565b6107895763ffffffff91828116908682018092116118415760581c83161061075f57600194808603613b3a575093816102a4949554160116613b2c8163ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006045541617604555565b613b34613753565b916137f1565b613b4681939293611f99565b91613b5082611f99565b9360005b838110613b7357505050506102a4939450613b6d613753565b92613bcf565b88908382818554160116613bb28163ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006045541617604555565b613bbc8288612073565b5281613bc88289612073565b5201613b54565b91909373ffffffffffffffffffffffffffffffffffffffff8316613bf4811515613780565b613c0186518451146135bc565b613c0c8387866131eb565b60005b8651811015613c6257613c228185612073565b5190613c4686610d77613c35848c612073565b516000526078602052604060002090565b91825490810180911161184157613c5d9255612017565b613c0f565b5092949390948360006040517f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb339180613c9d898c8361362d565b0390a43b613cac575b50505050565b613ced9260209260006040518096819582947fbc197c81000000000000000000000000000000000000000000000000000000009a8b85523360048601613652565b03925af160009181613dc9575b50613d375750506001613d0b612f36565b6308c379a014613d24575b613066575b38808080613ca6565b613d2c612f54565b806130e85750613d16565b7fffffffff000000000000000000000000000000000000000000000000000000001614613d1b5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e730000000000000000000000000000000000000000000000006064820152608490fd5b613de291925060203d81116131bf576131b08183610b0b565b9038613cfa565b90613df2614c18565b60455490600160ff8360301c16613e088161218f565b036107895763ffffffff9182613e2083828416612703565b9160581c161061075f5761320691613eae91600243016001613e628773ffffffffffffffffffffffffffffffffffffffff166000526041602052604060002090565b0155613e8e8573ffffffffffffffffffffffffffffffffffffffff166000526041602052604060002090565b81815401905516613ea460455463ffffffff1690565b0163ffffffff1690565b63ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006045541617604555565b90805b613eeb57505050565b80613f31613f1a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff938661400b565b60405190613f2782610ab7565b60008252856137f1565b0180613ee2565b90809392935b613f485750505050565b80613f747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff928661400b565b604090815190613f8382610ab7565b86613f9460009384815283896137f1565b613fa3575b5050500180613f3e565b815260436020522060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055388080613f99565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b90604051906020820192835260408201526040815261402981610ad3565b5190209063ffffffff60455460581c168015928361408e5781900690600193848301809311611841578492945b61405f57505050565b61407885939560005260aa602052604060002054151590565b15614093578061408e5784828194060194614056565b613fdc565b5090925050565b906140a3614c18565b604554600260ff8260301c166140b88161218f565b036107895763ffffffff80821691835183018093116118415760581c161061075f576102a4916140fb565b91909163ffffffff8080941691160191821161184157565b815191929163ffffffff1663ffffffff604591614128613eae82614123865463ffffffff1690565b6140e3565b169361413385611f99565b9160005b86811061414e5750506102a4939450613b6d613753565b6141588184612073565b5190600191826141688388612073565b526141808160005260aa602052604060002054151590565b6141e15780159081156141c3575b506141995701614137565b60046040517f3f6cc768000000000000000000000000000000000000000000000000000000008152fd5b90506141da61170c855463ffffffff9060581c1690565b103861418e565b60046040517ea5a1f5000000000000000000000000000000000000000000000000000000008152fd5b1561421157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6000906040517f713562fe00000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa60009181612130575061212c5750565b6102a46113206120ad565b908092918237016000815290565b6020908260405193849283378101604281520301902090565b6005111561219957565b94939095969897919884156146b05761432883826142ec565b614333868254612703565b90558161434084836142ec565b5411614686576045549363ffffffff9461435c87878316612703565b868260581c161061075f5760201c60ff1661437681614305565b1561465c5760409a8b519384898c602083019386864694309561441c968995939192608e9795937f9d13a5ba0000000000000000000000000000000000000000000000000000000088527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000809360601b166004890152601888015260601b166038860152151560f81b604c850152604d840152606d830152151560f81b608d8201520190565b03947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101825261444f9082610b0b565b51902061445b906148ec565b614466368786610bfc565b61446f916146da565b73ffffffffffffffffffffffffffffffffffffffff1673c0ffee06ce3d6689305035601a055a96acd619c6811415908161462e575b5061460557156145e55750346145bc575b60455460301c60ff166144c78161218f565b6002810361450f5750505050508251036144e6576102a49394506149ce565b600485517f991f339f000000000000000000000000000000000000000000000000000000008152fd5b9091929396506145218196959661218f565b6001810361457457509161454e61455a613eae9361456f956102a49b9c51938491602083019687916142de565b03908101835282610b0b565b51902094841661412360455463ffffffff1690565b613f38565b939495505050506145848161218f565b614593576102a493945061492f565b600485517f3f886819000000000000000000000000000000000000000000000000000000008152fd5b60048a517f122d34a8000000000000000000000000000000000000000000000000000000008152fd5b8581156145fb575b6145f691614db5565b6144b5565b603a5491506145ed565b60048c517f73a8ee18000000000000000000000000000000000000000000000000000000008152fd5b905061465461463b6120ad565b73ffffffffffffffffffffffffffffffffffffffff1690565b1415386144a4565b60046040517f7963e2b5000000000000000000000000000000000000000000000000000000008152fd5b60046040517f9a89c66a000000000000000000000000000000000000000000000000000000008152fd5b60046040517f2c5211c6000000000000000000000000000000000000000000000000000000008152fd5b61048a916146e791614825565b9190916146f381614305565b806146fb5750565b61470481614305565b600181036147515760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b61475a81614305565b600281036147a75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806147b3600392614305565b146147ba57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608490fd5b9060418151146000146148535761484f916020820151906060604084015193015160001a9061485d565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116148e05791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156106ce57815173ffffffffffffffffffffffffffffffffffffffff8116156148da579190565b50600190565b50505050600090600390565b60405160208101917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008352603c820152603c815261492981610ad3565b51902090565b600092835b838110614942575050505050565b60459081549163ffffffff908461499a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060019685888183160116918291161784556040519061499182610ab7565b8b8252896137f1565b6149a7575b505001614934565b6149c79161142891541663ffffffff166000526043602052604060002090565b388061499f565b816149d8916140fb565b8051916149e3575050565b600090815b8381106149f55750505050565b6149ff8183612073565b51835260436020526040832090600191827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055016149e8565b9061ffff8092166127100391821161184157565b9060ff614a7e8273ffffffffffffffffffffffffffffffffffffffff166000526039602052604060002090565b541615614bd657614abd614ab28273ffffffffffffffffffffffffffffffffffffffff166000526039602052604060002090565b5460181c61ffff1690565b91614aff614af9614aee8473ffffffffffffffffffffffffffffffffffffffff166000526039602052604060002090565b5460081c61ffff1690565b93614a3d565b92614b1c614b14603a5461ffff809716612710565b612710900490565b614b268382614db5565b73ffffffffffffffffffffffffffffffffffffffff84169485614b4b57505050505050565b614ba493614b64614b6993614b1493610dd09616612710565b612710565b92614b7e614b7985603754612703565b603755565b73ffffffffffffffffffffffffffffffffffffffff166000526036602052604060002090565b90557ff2f90295cdb5dafd392bfc62d7868bcc79e8c6164c820c7cc195d6c8cda8e674600080a2388080808080612fcf565b6000805260396020527f619fcd35f40c77da8aa64d5f98c1fed669135ecc4f245ce6667721b157f7098f805460181c61ffff169290614aff90614af990614aee565b60455460201c60ff16614c2a81614305565b60028103614c355750565b614c3e81614305565b60038103614cb85750603d544210614c8e57614c846402000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff6045541617604555565b6102a46000603d55565b60046040517fb3c03577000000000000000000000000000000000000000000000000000000008152fd5b80614cc4600492614305565b03614d0557603d544210614c8e57603e5442106102a45760046040517f0734f1ad000000000000000000000000000000000000000000000000000000008152fd5b60046040517f63a2de0f000000000000000000000000000000000000000000000000000000008152fd5b60455460781c60ff16614d7c5780800460011481151715611841573403614d5257565b60046040517fc288bf8f000000000000000000000000000000000000000000000000000000008152fd5b8015614db257808004600103611841576102a49073ffffffffffffffffffffffffffffffffffffffff6040541630903390614e0d565b50565b60455460781c60ff16614dd45790614dcc91612710565b3403614d5257565b8015614e09576102a491614de791612710565b73ffffffffffffffffffffffffffffffffffffffff6040541630903390614e0d565b5050565b90600080614ee49460405194602097888701957f23b872dd00000000000000000000000000000000000000000000000000000000875273ffffffffffffffffffffffffffffffffffffffff938480921660248a0152166044880152606487015260648652614e7a86610aef565b169260405194614e8986610a9b565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af13d15614f09573d91614ec883610bc2565b92614ed66040519485610b0b565b83523d60008785013e614f97565b80519081614ef157505050565b826102a493614f04938301019101614f11565b614f26565b606091614f97565b90816020910312610292575161048a816111c9565b15614f2d57565b608460405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b91929015614ff85750815115614fab575090565b3b15614fb45790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156130e85750805190602001fd5b60455460281c60ff1661501d8161218f565b600181036150bb57506040517fc617113400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9190911660248201526020816044816daaeb6d7670e522a718067333cd4e5afa80156106ce576150945750565b614db29060203d81116150b4575b6150ac8183610b0b565b810190614f11565b503d6150a2565b6150c48161218f565b156150cc5750565b6daaeb6d7670e522a718067333cd4e803b6150e5575050565b803b15610292576040517f7d3e3dbe000000000000000000000000000000000000000000000000000000008152306004820152733cc6cdda760b79bafa08df41ecfa224f810dceb6602482015260008160448183865af190816151ef575b5015614e09576151de91602091615185650100000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff6045541617604555565b6040517fc617113400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90921660248301529092839190829081906044820190565b03915afa80156106ce576150945750565b806151fc61520292610a82565b80610408565b38615143565b600036818037808036817f00000000000000000000000000000000000000000000000000000000000000005af43d82803e15615242573d90f35b3d90fdfea2646970667358221220be6d2b75533eddfb7c55745599ed27fcb8a566788af8d338588eccf60d8554f464736f6c63430008130033","opcodes":"PUSH1 0xC0 CALLVALUE PUSH3 0x141 JUMPI PUSH1 0x1F PUSH3 0x53D9 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH3 0x146 JUMPI DUP1 DUP5 SWAP3 PUSH1 0x40 SWAP5 DUP6 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH3 0x141 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP4 AND DUP4 SUB PUSH3 0x141 JUMPI PUSH1 0x20 ADD MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH3 0x141 JUMPI PUSH1 0x80 MSTORE PUSH1 0x0 SLOAD PUSH1 0xFF DUP2 PUSH1 0x8 SHR AND PUSH3 0xEC JUMPI PUSH1 0xFF DUP1 DUP3 AND LT PUSH3 0xB0 JUMPI JUMPDEST POP PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD PUSH2 0x527C SWAP1 DUP2 PUSH3 0x15D DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x20F9 ADD MSTORE PUSH2 0x42A1 ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH2 0x5214 ADD MSTORE RETURN JUMPDEST PUSH1 0xFF SWAP1 DUP2 NOT AND OR PUSH1 0x0 SSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0xFF DUP2 MSTORE LOG1 CODESIZE PUSH3 0x83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x5208 JUMPI STOP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0xFDD58E EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x26A JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xDE77EB8 EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x1249C58B EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0x1D7DF191 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x1FF4CC7D EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0x438B1B4B EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0x4402D254 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0x449A52F8 EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0x4A50AA85 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0x4F558E79 EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0x5066E5C2 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x639814E0 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x6817C76C EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0x68FDDA33 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x6AD54240 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0x71E6775F EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x798F4794 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1F7 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0x9D13A5BA EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0xBD85B039 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xBE172EDF EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xCB93C48F EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x1C0 JUMPI PUSH4 0xFEFA5D72 SUB PUSH2 0xE JUMPI PUSH2 0x1ECA JUMP JUMPDEST PUSH2 0x1D26 JUMP JUMPDEST PUSH2 0x1CF2 JUMP JUMPDEST PUSH2 0x1CD5 JUMP JUMPDEST PUSH2 0x5D9 JUMP JUMPDEST PUSH2 0x1BE8 JUMP JUMPDEST PUSH2 0x1BBC JUMP JUMPDEST PUSH2 0x1A6D JUMP JUMPDEST PUSH2 0x1A4F JUMP JUMPDEST PUSH2 0x19B4 JUMP JUMPDEST PUSH2 0x190D JUMP JUMPDEST PUSH2 0x188D JUMP JUMPDEST PUSH2 0x1854 JUMP JUMPDEST PUSH2 0x17B8 JUMP JUMPDEST PUSH2 0x1573 JUMP JUMPDEST PUSH2 0x154C JUMP JUMPDEST PUSH2 0x1458 JUMP JUMPDEST PUSH2 0x130B JUMP JUMPDEST PUSH2 0x12B5 JUMP JUMPDEST PUSH2 0x1290 JUMP JUMPDEST PUSH2 0x11F1 JUMP JUMPDEST PUSH2 0x1135 JUMP JUMPDEST PUSH2 0xFFD JUMP JUMPDEST PUSH2 0xEFD JUMP JUMPDEST PUSH2 0xED2 JUMP JUMPDEST PUSH2 0xE82 JUMP JUMPDEST PUSH2 0xE66 JUMP JUMPDEST PUSH2 0xC4E JUMP JUMPDEST PUSH2 0xA1A JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST PUSH2 0x7D7 JUMP JUMPDEST PUSH2 0x7B3 JUMP JUMPDEST PUSH2 0x6D3 JUMP JUMPDEST PUSH2 0x590 JUMP JUMPDEST PUSH2 0x48D JUMP JUMPDEST PUSH2 0x303 JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SUB PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH2 0x2A4 DUP3 PUSH2 0x274 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH2 0x2D1 PUSH1 0x4 CALLDATALOAD PUSH2 0x2C8 DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1ED9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND SUB PUSH2 0x292 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 CALLDATALOAD PUSH2 0x343 DUP2 PUSH2 0x2D9 JUMP JUMPDEST AND PUSH32 0x2A55205A00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x37A JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x3DE JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x3B4 JUMPI JUMPDEST POP CODESIZE PUSH2 0x36F JUMP JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ CODESIZE PUSH2 0x3AD JUMP JUMPDEST PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP PUSH2 0x3A6 JUMP JUMPDEST PUSH1 0x0 SWAP2 SUB SLT PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x426 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x416 JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 SWAP4 PUSH2 0x472 DUP2 MLOAD DUP1 SWAP3 DUP2 DUP8 MSTORE DUP8 DUP1 DUP9 ADD SWAP2 ADD PUSH2 0x413 JUMP JUMPDEST ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x48A SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x436 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x58D JUMPI PUSH1 0x40 MLOAD SWAP1 DUP1 PUSH1 0xDC SLOAD PUSH2 0x4B0 DUP2 PUSH2 0x18BA JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0x545 JUMPI POP PUSH1 0x1 EQ PUSH2 0x4EA JUMPI JUMPDEST PUSH2 0x4E6 DUP6 PUSH2 0x4DA DUP2 DUP8 SUB DUP3 PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x479 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP3 POP PUSH1 0xDC DUP4 MSTORE PUSH32 0x3162B0988D4210BFF484413ED451D170A03887272177EFC0B7D000F10ABE9EDF JUMPDEST DUP3 DUP5 LT PUSH2 0x52D JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x4DA DUP3 PUSH2 0x4E6 PUSH2 0x4CA JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x512 JUMP JUMPDEST DUP7 SWAP6 POP PUSH2 0x4E6 SWAP7 SWAP4 POP PUSH1 0x20 SWAP3 POP PUSH2 0x4DA SWAP5 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 SWAP4 PUSH2 0x4CA JUMP JUMPDEST DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x33 SLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5BA JUMPI JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 PUSH1 0x3 PUSH1 0xFF PUSH1 0x45 SLOAD PUSH1 0x30 SHR AND PUSH2 0x5D1 DUP2 PUSH2 0x218F JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x5AD JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0x1284A4600000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 DUP3 DUP2 PUSH1 0x24 DUP2 ADDRESS GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x6CE JUMPI DUP1 SWAP4 PUSH2 0x649 JUMPI JUMPDEST POP POP PUSH2 0x4E6 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x436 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 DUP3 DUP5 RETURNDATACOPY PUSH2 0x65C DUP2 DUP5 PUSH2 0xB0B JUMP JUMPDEST DUP3 ADD SWAP2 DUP4 DUP2 DUP5 SUB SLT PUSH2 0x6C6 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6CA JUMPI ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x6C6 JUMPI DUP1 MLOAD SWAP2 PUSH2 0x692 DUP4 PUSH2 0xBC2 JUMP JUMPDEST SWAP4 PUSH2 0x6A0 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0xB0B JUMP JUMPDEST DUP4 DUP6 MSTORE DUP6 DUP5 DUP5 ADD ADD GT PUSH2 0x58D JUMPI POP SWAP1 PUSH2 0x6BE SWAP2 DUP5 DUP1 DUP6 ADD SWAP2 ADD PUSH2 0x413 JUMP JUMPDEST SWAP1 CODESIZE DUP1 PUSH2 0x633 JUMP JUMPDEST POP DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST PUSH2 0x20A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH2 0x6EA PUSH1 0x3A SLOAD PUSH2 0x4D2F JUMP JUMPDEST PUSH2 0x6F2 PUSH2 0x4C18 JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0xFF DUP2 PUSH1 0x30 SHR AND PUSH2 0x705 DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH2 0x789 JUMPI PUSH1 0x45 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x1 ADD DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 PUSH1 0x45 SLOAD SWAP2 DUP2 DUP4 PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI PUSH2 0x75D SWAP2 AND CALLER PUSH2 0x3766 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x5FD48F9100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x64151C7500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH4 0xFFFFFFFF PUSH1 0x45 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH2 0x75D PUSH1 0x4 CALLDATALOAD PUSH2 0x7F2 DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x802 DUP3 PUSH1 0x3A SLOAD PUSH2 0x4DB5 JUMP JUMPDEST PUSH2 0x3DE9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x58D JUMPI PUSH1 0x1 PUSH2 0x840 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x9F0 JUMPI PUSH1 0x1 PUSH2 0x884 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SLOAD NUMBER GT ISZERO PUSH2 0x9C6 JUMPI PUSH2 0x938 DUP3 PUSH2 0x975 SWAP4 BLOCKHASH SWAP1 DUP2 ISZERO PUSH2 0x978 JUMPI JUMPDEST POP DUP5 PUSH1 0x1 PUSH2 0x8CC CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SSTORE DUP5 PUSH2 0x8F9 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x45 SLOAD PUSH1 0x48 SHR PUSH2 0xFFFF AND SWAP3 PUSH2 0x932 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF PUSH1 0x45 SLOAD AND PUSH1 0x45 SSTORE JUMP JUMPDEST CALLER PUSH2 0x3EDF JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF PUSH11 0xFFFF000000000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x48 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST DUP1 RETURN JUMPDEST PUSH2 0x9A8 SWAP2 POP PUSH1 0xFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 NUMBER AND PUSH2 0x2703 JUMP JUMPDEST NUMBER DUP2 LT ISZERO PUSH2 0x9B8 JUMPI JUMPDEST BLOCKHASH CODESIZE PUSH2 0x89E JUMP JUMPDEST PUSH2 0x9C1 SWAP1 PUSH2 0x287A JUMP JUMPDEST PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x93C4A00300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x9890AF6000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x40 PUSH2 0x2710 PUSH2 0xA45 PUSH2 0xFFFF PUSH1 0x45 SLOAD PUSH1 0x38 SHR AND PUSH1 0x24 CALLDATALOAD PUSH2 0x2710 JUMP JUMPDEST DIV DUP2 MLOAD SWAP1 ADDRESS DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA96 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0xA53 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA96 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA96 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA96 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA96 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA96 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA96 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x292 JUMPI DUP1 CALLDATALOAD SWAP2 PUSH2 0xB7B DUP4 PUSH2 0xB4C JUMP JUMPDEST SWAP3 PUSH2 0xB89 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xB0B JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP3 DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x292 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xBB3 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0xBA5 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA96 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0xC08 DUP3 PUSH2 0xBC2 JUMP JUMPDEST SWAP2 PUSH2 0xC16 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0xB0B JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x292 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x292 JUMPI DUP2 PUSH1 0x20 PUSH2 0x48A SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xBFC JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xC6B DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xC78 DUP3 PUSH2 0x274 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x44 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0xC9A SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB64 JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0xCB3 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB64 JUMP JUMPDEST SWAP1 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0xCCC SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC33 JUMP JUMPDEST SWAP3 PUSH2 0xCD6 CALLER PUSH2 0x500B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP5 AND SWAP5 CALLER DUP7 EQ DUP1 ISZERO PUSH2 0xE28 JUMPI JUMPDEST PUSH2 0xD03 SWAP1 PUSH2 0x2D4C JUMP JUMPDEST PUSH2 0xD10 DUP4 MLOAD DUP6 MLOAD EQ PUSH2 0x35BC JUMP JUMPDEST DUP7 AND PUSH2 0xD1D DUP2 ISZERO ISZERO PUSH2 0x2DBD JUMP JUMPDEST PUSH2 0xD29 DUP5 DUP5 DUP10 DUP9 PUSH2 0x32C3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0xDE4 JUMPI DUP1 PUSH2 0xD43 PUSH2 0xDDF SWAP3 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0xDD8 PUSH2 0xDD0 DUP12 PUSH2 0xD77 PUSH2 0xD58 DUP7 DUP13 PUSH2 0x2073 JUMP JUMPDEST MLOAD SWAP5 DUP13 PUSH2 0xDBF DUP8 PUSH2 0xD9C DUP4 PUSH2 0xD77 DUP7 PUSH1 0x0 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xDA9 DUP3 DUP3 LT ISZERO PUSH2 0x2E2E JUMP JUMPDEST SUB SWAP2 PUSH2 0xD77 DUP5 PUSH1 0x0 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x0 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP3 SLOAD PUSH2 0x2703 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x2017 JUMP JUMPDEST PUSH2 0xD2C JUMP JUMPDEST POP SWAP4 DUP7 SWAP2 SWAP5 PUSH2 0x75D SWAP7 PUSH1 0x40 MLOAD PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB CALLER SWAP2 DUP1 PUSH2 0xE1F DUP11 DUP11 DUP4 PUSH2 0x362D JUMP JUMPDEST SUB SWAP1 LOG4 CALLER PUSH2 0x36EB JUMP JUMPDEST POP PUSH2 0xD03 PUSH2 0xE36 CALLER DUP8 PUSH2 0x2CAE JUMP JUMPDEST SWAP1 POP PUSH2 0xCFA JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xE55 DUP2 PUSH2 0x274 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD PUSH2 0x48A DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH2 0x75D PUSH2 0xE7D PUSH2 0xE75 CALLDATASIZE PUSH2 0xE3D JUMP JUMPDEST DUP2 SWAP4 SWAP2 PUSH2 0x4A51 JUMP JUMPDEST PUSH2 0x3A9F JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xE9A DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x292 JUMPI PUSH2 0xEBE PUSH2 0x75D SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB64 JUMP JUMPDEST SWAP1 PUSH2 0xECD PUSH1 0x3A SLOAD DUP4 MLOAD SWAP1 PUSH2 0x4DB5 JUMP JUMPDEST PUSH2 0x409A JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH2 0x75D PUSH1 0x4 CALLDATALOAD PUSH2 0xEED DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xE7D DUP3 PUSH1 0x3A SLOAD PUSH2 0x4DB5 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xF15 DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x292 JUMPI PUSH2 0xF39 PUSH2 0x75D SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB64 JUMP JUMPDEST SWAP1 PUSH2 0xECD PUSH1 0x44 CALLDATALOAD PUSH2 0xF49 DUP2 PUSH2 0x274 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x4A51 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x292 JUMPI DUP1 CALLDATALOAD SWAP2 PUSH2 0xF67 DUP4 PUSH2 0xB4C JUMP JUMPDEST SWAP3 PUSH2 0xF75 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xB0B JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP3 DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x292 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xF9F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0xFAD DUP2 PUSH2 0x274 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xF91 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0xFD8 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xFCA JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x48A SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xFB8 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x102F SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF50 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x1048 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB64 JUMP JUMPDEST SWAP1 DUP1 MLOAD DUP3 MLOAD SUB PUSH2 0x10CB JUMPI PUSH2 0x105C DUP2 MLOAD PUSH2 0x1F99 JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x10BD JUMPI DUP1 PUSH2 0x10A8 PUSH2 0x1097 PUSH2 0x107D PUSH2 0x10B8 SWAP5 DUP8 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x10A1 DUP4 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1ED9 JUMP JUMPDEST PUSH2 0x10B2 DUP3 DUP8 PUSH2 0x2073 JUMP JUMPDEST MSTORE PUSH2 0x2017 JUMP JUMPDEST PUSH2 0x1060 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x4E6 DUP7 DUP3 PUSH2 0xFEC JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH2 0x1161 PUSH1 0x4 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x292 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x292 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x6 SHL ADD ADD GT PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH1 0xE4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH2 0xFFFF DUP2 AND SUB PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH2 0x104 CALLDATALOAD SWAP1 PUSH2 0x2A4 DUP3 PUSH2 0x11AF JUMP JUMPDEST DUP1 ISZERO ISZERO SUB PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH2 0x124 CALLDATALOAD SWAP1 PUSH2 0x2A4 DUP3 PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0x144 CALLDATALOAD SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH2 0x160 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x121F SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC33 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x1237 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC33 JUMP JUMPDEST SWAP1 PUSH1 0xA4 CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x292 JUMPI PUSH2 0x1253 PUSH2 0x75D SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x116B JUMP JUMPDEST PUSH2 0x125B PUSH2 0x297 JUMP JUMPDEST PUSH2 0x1263 PUSH2 0x119C JUMP JUMPDEST SWAP2 PUSH2 0x126C PUSH2 0x11BB JUMP JUMPDEST SWAP4 PUSH2 0x1275 PUSH2 0x11D3 JUMP JUMPDEST SWAP6 PUSH2 0x127E PUSH2 0x11E1 JUMP JUMPDEST SWAP8 PUSH1 0x84 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x219E JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH2 0xFFFF PUSH1 0x45 SLOAD PUSH1 0x48 SHR AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH1 0x3A SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x292 JUMPI PUSH2 0x12FE SWAP2 PUSH1 0x4 ADD PUSH2 0xF50 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0x48A DUP2 PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0x1314 CALLDATASIZE PUSH2 0x12D3 JUMP JUMPDEST SWAP1 PUSH2 0x133D PUSH2 0x1320 PUSH2 0x4255 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x420A JUMP JUMPDEST PUSH1 0x45 DUP1 SLOAD SWAP3 PUSH1 0xFF DUP5 PUSH1 0x30 SHR AND PUSH2 0x1352 DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH2 0x789 JUMPI PUSH2 0x136C SWAP4 DUP4 MLOAD PUSH4 0xFFFFFFFF SWAP6 DUP7 SWAP2 DUP3 DUP5 AND PUSH2 0x2703 JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI DUP3 MLOAD SWAP3 PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1385 JUMPI STOP JUMPDEST DUP1 DUP4 PUSH2 0x13F3 PUSH2 0x1399 PUSH2 0x107D PUSH1 0x1 SWAP6 DUP8 PUSH2 0x2073 JUMP JUMPDEST DUP10 PUSH2 0x13B7 PUSH2 0x13AB DUP11 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x13EC DUP2 PUSH4 0xFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST AND SWAP1 PUSH2 0x3766 JUMP JUMPDEST PUSH2 0x13FE JUMPI JUMPDEST ADD PUSH2 0x137C JUMP JUMPDEST PUSH2 0x1453 PUSH2 0x1428 PUSH2 0x1412 DUP8 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x13F8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1470 DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH2 0x147D DUP3 PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0x1488 PUSH1 0x3A SLOAD PUSH2 0x4D2F JUMP JUMPDEST PUSH2 0x1490 PUSH2 0x4C18 JUMP JUMPDEST PUSH1 0x45 SLOAD SWAP1 PUSH1 0x3 PUSH1 0xFF DUP4 PUSH1 0x30 SHR AND PUSH2 0x14A6 DUP2 PUSH2 0x218F JUMP JUMPDEST SUB PUSH2 0x789 JUMPI PUSH1 0x45 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF SWAP4 DUP5 AND PUSH1 0x1 ADD DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 PUSH1 0x45 SLOAD SWAP3 DUP2 DUP5 PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI PUSH2 0x14FF SWAP3 AND SWAP1 PUSH2 0x3766 JUMP JUMPDEST PUSH2 0x1532 JUMPI JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x152F PUSH2 0x1519 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x44 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE STOP JUMPDEST PUSH2 0x1547 PUSH2 0x1428 PUSH2 0x1412 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1504 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH2 0x2D1 PUSH1 0x4 CALLDATALOAD PUSH2 0x156E DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH2 0x2C4B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP1 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x15A0 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xF50 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x15B8 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xB64 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 PUSH2 0x15C5 DUP5 PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0x15CD PUSH2 0x42D3 JUMP JUMPDEST DUP1 MLOAD SWAP3 PUSH1 0x45 DUP1 SLOAD PUSH1 0x2 PUSH1 0xFF DUP3 PUSH1 0x30 SHR AND PUSH2 0x15E6 DUP2 PUSH2 0x218F JUMP JUMPDEST SUB PUSH2 0x176D JUMPI PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP2 AND SWAP1 DUP3 PUSH2 0x1601 DUP9 MLOAD DUP5 PUSH2 0x2703 JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x1744 JUMPI DUP6 MLOAD DUP8 SUB PUSH2 0x171B JUMPI SWAP1 PUSH2 0x164E SWAP2 DUP2 DUP9 AND ADD AND PUSH4 0xFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP6 DUP2 LT PUSH2 0x165A JUMPI STOP JUMPDEST PUSH2 0x1664 DUP2 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD ISZERO DUP1 ISZERO PUSH2 0x16F0 JUMPI JUMPDEST PUSH2 0x16C7 JUMPI DUP1 DUP8 PUSH2 0x1696 PUSH2 0x1685 PUSH2 0x107D PUSH1 0x1 SWAP6 DUP10 PUSH2 0x2073 JUMP JUMPDEST PUSH2 0x168F DUP5 DUP11 PUSH2 0x2073 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3766 JUMP JUMPDEST PUSH2 0x16A1 JUMPI JUMPDEST ADD PUSH2 0x1651 JUMP JUMPDEST PUSH2 0x16C2 PUSH2 0x1428 PUSH2 0x16B1 DUP4 DUP10 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x169B JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH32 0x3F6CC76800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP PUSH2 0x16FB DUP2 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD DUP3 SLOAD PUSH2 0x1715 SWAP1 PUSH1 0x58 SHR PUSH4 0xFFFFFFFF AND JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST LT PUSH2 0x166D JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x991F339F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x5FD48F9100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH32 0x64151C7500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x17AE PUSH1 0x40 SWAP3 SWAP6 SWAP5 SWAP4 SWAP6 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0xFB8 JUMP JUMPDEST SWAP5 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x40 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x4 CALLDATALOAD SWAP1 DUP2 DUP4 LT PUSH2 0x1846 JUMPI PUSH1 0x1 SWAP3 DUP1 DUP5 ADD SWAP1 DUP2 DUP6 GT PUSH2 0x1841 JUMPI DUP4 DUP6 SWAP2 SUB ADD SWAP1 DUP2 GT PUSH2 0x1841 JUMPI PUSH2 0x17FC DUP2 PUSH2 0x1F99 JUMP JUMPDEST SWAP3 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x181E JUMPI POP POP POP PUSH2 0x4E6 SWAP3 POP JUMPDEST MLOAD SWAP2 DUP3 SWAP2 TIMESTAMP SWAP1 NUMBER SWAP1 DUP5 PUSH2 0x1796 JUMP JUMPDEST DUP1 DUP7 SWAP2 DUP4 ADD PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE DUP5 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x183A DUP3 DUP9 PUSH2 0x2073 JUMP JUMPDEST MSTORE ADD PUSH2 0x1800 JUMP JUMPDEST PUSH2 0x1FE8 JUMP JUMPDEST PUSH2 0x4E6 SWAP3 POP PUSH1 0x60 SWAP2 POP PUSH2 0x1810 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH2 0x186F PUSH2 0x20AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH2 0x75D PUSH1 0x4 CALLDATALOAD PUSH2 0x18B4 PUSH1 0x24 CALLDATALOAD PUSH2 0x18AE DUP2 PUSH2 0x274 JUMP JUMPDEST DUP3 PUSH2 0x4A51 JUMP JUMPDEST CALLER PUSH2 0x3A9F JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1903 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x18D4 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x18C9 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x58D JUMPI PUSH1 0x40 MLOAD SWAP1 DUP1 PUSH1 0xDD SLOAD PUSH2 0x1930 DUP2 PUSH2 0x18BA JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0x545 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1959 JUMPI PUSH2 0x4E6 DUP6 PUSH2 0x4DA DUP2 DUP8 SUB DUP3 PUSH2 0xB0B JUMP JUMPDEST SWAP3 POP PUSH1 0xDD DUP4 MSTORE PUSH32 0xAC507B9F8BF86AD8BB770F71CD2B1992902AE0314D93FC0F2BB011D70E796226 JUMPDEST DUP3 DUP5 LT PUSH2 0x199C JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x4DA DUP3 PUSH2 0x4E6 PUSH2 0x4CA JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1981 JUMP JUMPDEST PUSH2 0x100 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x19CD DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x19EE SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB64 JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH2 0x19FB DUP2 PUSH2 0x11C9 JUMP JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH2 0x1A08 DUP3 PUSH2 0x11C9 JUMP JUMPDEST PUSH1 0xE4 CALLDATALOAD SWAP5 DUP5 DUP7 GT PUSH2 0x292 JUMPI CALLDATASIZE PUSH1 0x23 DUP8 ADD SLT ISZERO PUSH2 0x292 JUMPI DUP6 PUSH1 0x4 ADD CALLDATALOAD SWAP5 DUP6 GT PUSH2 0x292 JUMPI CALLDATASIZE PUSH1 0x24 DUP7 DUP9 ADD ADD GT PUSH2 0x292 JUMPI PUSH1 0x24 PUSH2 0x75D SWAP7 ADD SWAP4 PUSH1 0xA4 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD SWAP3 PUSH2 0x430F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH2 0x75D PUSH1 0x4 CALLDATALOAD PUSH2 0x18B4 DUP2 PUSH1 0x3A SLOAD PUSH2 0x4DB5 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1A8A DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x1A96 DUP2 PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0x1A9F DUP3 PUSH2 0x500B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP2 DUP3 CALLER EQ PUSH2 0x1B52 JUMPI DUP2 PUSH2 0x1AF0 PUSH2 0x1B20 SWAP3 PUSH2 0xD77 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x79 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0xFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP4 SLOAD AND SWAP2 ISZERO ISZERO AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE CALLER SWAP1 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP1 PUSH1 0x20 SWAP1 LOG3 STOP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1BF1 CALLDATASIZE PUSH2 0x12D3 JUMP JUMPDEST SWAP1 PUSH2 0x1BFA PUSH2 0x42D3 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x45 SLOAD SWAP3 PUSH1 0xFF DUP5 PUSH1 0x30 SHR AND SWAP4 PUSH2 0x1C12 DUP6 PUSH2 0x218F JUMP JUMPDEST PUSH1 0x1 DUP1 SWAP6 SUB PUSH2 0x789 JUMPI PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 DUP2 PUSH2 0x1C2F DUP8 DUP6 PUSH2 0x2703 JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI PUSH2 0x1C73 SWAP2 DUP2 DUP7 AND ADD AND PUSH4 0xFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x1C7C NUMBER PUSH2 0x28A7 JUMP JUMPDEST BLOCKHASH PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1C89 JUMPI STOP JUMPDEST DUP1 PUSH2 0x1C95 DUP8 SWAP3 DUP5 PUSH2 0x400B JUMP JUMPDEST DUP5 PUSH2 0x1CAC DUP3 PUSH2 0x1CA7 PUSH2 0x107D DUP7 DUP12 PUSH2 0x2073 JUMP JUMPDEST PUSH2 0x3766 JUMP JUMPDEST PUSH2 0x1CB8 JUMPI JUMPDEST POP ADD PUSH2 0x1C80 JUMP JUMPDEST PUSH2 0x1428 PUSH2 0x1CCF SWAP2 PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST CODESIZE PUSH2 0x1CB1 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x3E8 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH2 0x1161 PUSH1 0x4 CALLDATALOAD PUSH2 0x1D14 DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1D21 DUP3 PUSH2 0x274 JUMP JUMPDEST PUSH2 0x2CAE JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1D43 DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x1D4F DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x292 JUMPI PUSH2 0x1D79 PUSH2 0x975 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC33 JUMP JUMPDEST SWAP3 PUSH2 0x1D83 CALLER PUSH2 0x500B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 DUP2 AND SWAP7 CALLER DUP9 EQ DUP1 ISZERO PUSH2 0x1EB5 JUMPI JUMPDEST PUSH2 0x1DB0 SWAP1 PUSH2 0x2D4C JUMP JUMPDEST DUP3 AND PUSH2 0x1DBD DUP2 ISZERO ISZERO PUSH2 0x2DBD JUMP JUMPDEST PUSH2 0x1DDA PUSH2 0x1DC9 DUP6 PUSH2 0x31C6 JUMP JUMPDEST PUSH2 0x1DD2 DUP8 PUSH2 0x31C6 JUMP JUMPDEST SWAP1 DUP6 DUP6 PUSH2 0x32C3 JUMP JUMPDEST PUSH1 0x0 SWAP8 DUP5 DUP10 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE DUP6 PUSH2 0x1E13 DUP5 PUSH1 0x40 DUP13 KECCAK256 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x1E20 DUP3 DUP3 LT ISZERO PUSH2 0x2E2E JUMP JUMPDEST DUP7 DUP12 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE SUB PUSH2 0x1E56 DUP5 PUSH1 0x40 DUP13 KECCAK256 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x1E6F DUP5 PUSH2 0xD77 DUP8 PUSH1 0x0 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1E7A DUP8 DUP3 SLOAD PUSH2 0x2703 JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE CALLER SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 LOG4 CALLER PUSH2 0x2FC3 JUMP JUMPDEST POP PUSH2 0x1DB0 PUSH2 0x1EC3 CALLER DUP5 PUSH2 0x2CAE JUMP JUMPDEST SWAP1 POP PUSH2 0x1DA7 JUMP JUMPDEST PUSH2 0x75D PUSH2 0x802 PUSH2 0xE75 CALLDATASIZE PUSH2 0xE3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x1F2F JUMPI PUSH2 0x1F2B SWAP2 PUSH1 0x0 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH2 0x1FA3 DUP3 PUSH2 0xB4C JUMP JUMPDEST PUSH2 0x1FB0 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0xB0B JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x1FDE DUP3 SWAP5 PUSH2 0xB4C JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x1841 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x2087 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x2044 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x292 JUMPI MLOAD PUSH2 0x48A DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x40 MLOAD PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x2130 JUMPI JUMPDEST POP PUSH2 0x212C JUMPI POP JUMP JUMPDEST SWAP2 POP JUMP JUMPDEST PUSH2 0x2152 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2159 JUMPI JUMPDEST PUSH2 0x214A DUP2 DUP4 PUSH2 0xB0B JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x208C JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x2124 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2140 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x4 GT ISZERO PUSH2 0x2199 JUMPI JUMP JUMPDEST PUSH2 0x2160 JUMP JUMPDEST SWAP10 SWAP8 SWAP6 SWAP4 SWAP2 SWAP11 SWAP9 SWAP7 SWAP5 SWAP3 SWAP1 SWAP11 PUSH1 0x0 SLOAD SWAP12 PUSH1 0xFF DUP14 PUSH1 0x8 SHR AND ISZERO DUP1 SWAP14 DUP2 SWAP15 PUSH2 0x232C JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x230C JUMPI JUMPDEST POP ISZERO PUSH2 0x22A2 JUMPI PUSH2 0x220A SWAP12 DUP14 PUSH2 0x2201 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x0 SLOAD AND OR PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x226C JUMPI PUSH2 0x28E1 JUMP JUMPDEST PUSH2 0x2210 JUMPI JUMP JUMPDEST PUSH2 0x223D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF PUSH1 0x0 SLOAD AND PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x229D PUSH2 0x100 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF PUSH1 0x0 SLOAD AND OR PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x28E1 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP2 POP DUP2 PUSH2 0x231E JUMPI JUMPDEST POP CODESIZE PUSH2 0x21C6 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH1 0xFF AND EQ CODESIZE PUSH2 0x2317 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF DUP3 AND LT SWAP2 POP PUSH2 0x21BF JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x2346 JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0xDC DUP3 MSTORE PUSH32 0x3162B0988D4210BFF484413ED451D170A03887272177EFC0B7D000F10ABE9EDF SWAP1 PUSH1 0x20 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP4 ADD SWAP5 LT PUSH2 0x23A1 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x2396 JUMPI POP POP POP JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x238A JUMP JUMPDEST SWAP1 SWAP3 POP DUP3 SWAP1 PUSH2 0x2381 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x23B7 JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0xDD DUP3 MSTORE PUSH32 0xAC507B9F8BF86AD8BB770F71CD2B1992902AE0314D93FC0F2BB011D70E796226 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP4 ADD SWAP5 LT PUSH2 0x2412 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x2407 JUMPI POP POP POP JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x23FB JUMP JUMPDEST SWAP1 SWAP3 POP DUP3 SWAP1 PUSH2 0x23F2 JUMP JUMPDEST SWAP1 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA96 JUMPI PUSH2 0x2442 DUP2 PUSH2 0x243D PUSH1 0xDC SLOAD PUSH2 0x18BA JUMP JUMPDEST PUSH2 0x233A JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x249B JUMPI POP DUP2 SWAP3 SWAP4 PUSH1 0x0 SWAP3 PUSH2 0x2490 JUMPI JUMPDEST POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH1 0x1 SHL SWAP3 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0xDC SSTORE JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0x245C JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 AND SWAP5 PUSH2 0x24EC PUSH1 0xDC PUSH1 0x0 MSTORE PUSH32 0x3162B0988D4210BFF484413ED451D170A03887272177EFC0B7D000F10ABE9EDF SWAP1 JUMP JUMPDEST SWAP3 PUSH1 0x0 SWAP1 JUMPDEST DUP8 DUP3 LT PUSH2 0x2547 JUMPI POP POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x2510 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0xDC SSTORE JUMP JUMPDEST ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x2505 JUMP JUMPDEST DUP1 PUSH1 0x1 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0x24F1 JUMP JUMPDEST SWAP1 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA96 JUMPI PUSH2 0x2585 DUP2 PUSH2 0x2580 PUSH1 0xDD SLOAD PUSH2 0x18BA JUMP JUMPDEST PUSH2 0x23AB JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x25DE JUMPI POP DUP2 SWAP3 SWAP4 PUSH1 0x0 SWAP3 PUSH2 0x25D3 JUMPI JUMPDEST POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH1 0x1 SHL SWAP3 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0xDD SSTORE JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0x259F JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 AND SWAP5 PUSH2 0x262F PUSH1 0xDD PUSH1 0x0 MSTORE PUSH32 0xAC507B9F8BF86AD8BB770F71CD2B1992902AE0314D93FC0F2BB011D70E796226 SWAP1 JUMP JUMPDEST SWAP3 PUSH1 0x0 SWAP1 JUMPDEST DUP8 DUP3 LT PUSH2 0x268A JUMPI POP POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x2653 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0xDD SSTORE JUMP JUMPDEST ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x2648 JUMP JUMPDEST DUP1 PUSH1 0x1 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0x2634 JUMP JUMPDEST PUSH1 0x3A SSTORE JUMP JUMPDEST PUSH2 0x26B0 DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF PUSH7 0xFF000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x30 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x2087 JUMPI PUSH1 0x6 SHL ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH2 0x48A DUP2 PUSH2 0x11AF JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1841 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1841 JUMPI JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD PUSH2 0x2744 DUP2 PUSH2 0x274 JUMP JUMPDEST AND PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 PUSH22 0xFFFF0000000000000000000000000000000000000000 PUSH1 0x20 DUP6 SLOAD SWAP5 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP8 AND OR DUP8 SSTORE ADD CALLDATALOAD PUSH2 0x27B4 DUP2 PUSH2 0x11AF JUMP JUMPDEST PUSH1 0xA0 SHL AND SWAP3 AND OR OR SWAP1 SSTORE JUMP JUMPDEST PUSH9 0x10000000000000000 DUP3 GT PUSH2 0xA96 JUMPI PUSH1 0x38 SLOAD DUP3 PUSH1 0x38 SSTORE DUP1 DUP4 LT PUSH2 0x2833 JUMPI JUMPDEST POP PUSH1 0x38 PUSH1 0x0 MSTORE PUSH32 0x38395C5DCEADE9603479B177B68959049485DF8AA97B39F3533039AF5F456199 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x2817 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 DUP3 PUSH2 0x2827 DUP4 SWAP5 DUP7 PUSH2 0x2723 JUMP JUMPDEST ADD SWAP3 ADD SWAP3 ADD SWAP2 SWAP1 PUSH2 0x280A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x38 DUP2 MSTORE DUP4 PUSH32 0x38395C5DCEADE9603479B177B68959049485DF8AA97B39F3533039AF5F456199 SWAP3 DUP4 ADD SWAP3 ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x286F JUMPI POP POP PUSH2 0x27DF JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2861 JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 ADD SWAP2 DUP3 GT PUSH2 0x1841 JUMPI JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD SWAP2 DUP3 GT PUSH2 0x1841 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1841 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x28F8 PUSH2 0x28FD SWAP3 SWAP14 SWAP13 SWAP9 SWAP10 SWAP4 SWAP8 SWAP14 SWAP11 SWAP7 SWAP11 PUSH2 0x241C JUMP JUMPDEST PUSH2 0x255F JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND ISZERO PUSH2 0x2C21 JUMPI DUP2 ISZERO SWAP1 DUP2 ISZERO DUP1 PUSH2 0x2C18 JUMPI JUMPDEST PUSH2 0x2BEE JUMPI PUSH2 0x1388 PUSH2 0xFFFF DUP7 AND GT PUSH2 0x2BC4 JUMPI PUSH2 0x296A SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF PUSH15 0xFFFFFFFF0000000000000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x58 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST ISZERO PUSH2 0x2BB3 JUMPI POP DUP1 PUSH2 0x2BA3 JUMPI POP PUSH2 0x297F DUP4 PUSH2 0x218F JUMP JUMPDEST PUSH1 0x3 DUP4 SUB PUSH2 0x2B79 JUMPI PUSH2 0x2993 PUSH2 0x29CE SWAP3 PUSH1 0x3A SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF PUSH9 0xFFFF00000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x38 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x29D7 DUP2 PUSH2 0x218F JUMP JUMPDEST DUP1 PUSH2 0x2B6A JUMPI JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2AE0 JUMPI JUMPDEST POP PUSH1 0x1 DUP1 SWAP3 ISZERO ISZERO EQ PUSH2 0x2A9B JUMPI JUMPDEST DUP4 PUSH2 0x2A13 JUMPI JUMPDEST POP POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 SWAP1 JUMPDEST DUP6 DUP3 LT PUSH2 0x2A67 JUMPI POP POP PUSH2 0x251C SWAP3 SWAP4 PUSH2 0x2A30 SWAP2 PUSH2 0x27C0 JUMP JUMPDEST GT PUSH2 0x2A3D JUMPI DUP1 CODESIZE DUP1 PUSH2 0x2A0D JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xFE0C06B700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x2A93 DUP3 SWAP5 PUSH2 0x2A8D PUSH2 0x2A86 PUSH1 0x20 PUSH2 0x2A80 DUP7 SWAP8 DUP13 DUP11 PUSH2 0x26E9 JUMP JUMPDEST ADD PUSH2 0x26F9 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2703 JUMP JUMPDEST SWAP4 ADD SWAP1 PUSH2 0x2A19 JUMP JUMPDEST PUSH2 0x2ADB PUSH17 0x100000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x2A07 JUMP JUMPDEST PUSH2 0x2B64 SWAP1 PUSH2 0x2B23 PUSH16 0x1000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0x40 SLOAD AND OR PUSH1 0x40 SSTORE JUMP JUMPDEST CODESIZE PUSH2 0x29FA JUMP JUMPDEST PUSH2 0x2B73 SWAP1 PUSH2 0x26A7 JUMP JUMPDEST CODESIZE PUSH2 0x29DD JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x27BFEAFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x29CE SWAP3 PUSH2 0x26A2 PUSH2 0x2993 SWAP3 PUSH1 0x34 SSTORE JUMP JUMPDEST PUSH1 0x33 SSTORE POP PUSH2 0x29CE SWAP2 PUSH2 0x2993 SWAP1 PUSH1 0x3A SSTORE JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x44B93BA400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x4CFF63B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP4 ISZERO ISZERO PUSH2 0x2914 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB8A9EFFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 ISZERO PUSH2 0x292 JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0xDE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xFF PUSH1 0x45 SLOAD PUSH1 0x30 SHR AND PUSH2 0x2C8B DUP2 PUSH2 0x218F JUMP JUMPDEST EQ PUSH2 0x2C94 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1841 JUMPI SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 AND PUSH20 0x88899DC0B84C6E726840E00DFB94ABC6248825EC DUP2 EQ PUSH2 0x2D43 JUMPI PUSH20 0x1E0049783F008A0085193E00003D00CD54003C71 EQ PUSH2 0x2D3B JUMPI PUSH1 0xFF SWAP3 PUSH2 0x2D36 SWAP3 AND PUSH1 0x0 MSTORE PUSH1 0x79 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND SWAP1 JUMP JUMPDEST POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2D53 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572206F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x2DC4 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x2E35 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72207472616E7366657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x292 JUMPI MLOAD PUSH2 0x48A DUP2 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0x48A SWAP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA0 SWAP4 AND DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x80 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x436 JUMP JUMPDEST SWAP2 SWAP3 PUSH2 0x48A SWAP6 SWAP5 SWAP2 PUSH1 0xA0 SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP6 MSTORE AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x80 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x436 JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x3 RETURNDATASIZE GT PUSH2 0x2F43 JUMPI JUMP JUMPDEST SWAP1 POP PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY PUSH1 0x0 MLOAD PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH1 0x3 NOT SWAP2 DUP3 RETURNDATASIZE ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT RETURNDATASIZE PUSH1 0x24 DUP5 ADD GT OR PUSH2 0x2FB2 JUMPI DUP2 DUP5 ADD SWAP5 DUP6 MLOAD SWAP4 DUP5 GT PUSH2 0x2FBA JUMPI RETURNDATASIZE DUP6 ADD ADD PUSH1 0x20 DUP5 DUP8 ADD ADD GT PUSH2 0x2FB2 JUMPI POP PUSH2 0x48A SWAP3 SWAP2 ADD PUSH1 0x20 ADD SWAP1 PUSH2 0xB0B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP5 SWAP4 SWAP2 SWAP1 SWAP3 DUP2 EXTCODESIZE PUSH2 0x2FD7 JUMPI JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 SWAP6 PUSH2 0x302C PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP14 DUP15 DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x2EF4 JUMP JUMPDEST SUB SWAP4 AND GAS CALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x3196 JUMPI JUMPDEST POP PUSH2 0x3104 JUMPI POP POP PUSH1 0x1 PUSH2 0x304B PUSH2 0x2F36 JUMP JUMPDEST PUSH4 0x8C379A0 EQ PUSH2 0x30D5 JUMPI JUMPDEST PUSH2 0x3066 JUMPI JUMPDEST CODESIZE DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2FCF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x30DD PUSH2 0x2F54 JUMP JUMPDEST DUP1 PUSH2 0x30E8 JUMPI POP PUSH2 0x3056 JUMP JUMPDEST PUSH2 0x30D1 SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x479 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ PUSH2 0x305B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6420746F6B656E73000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH2 0x31B8 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x31BF JUMPI JUMPDEST PUSH2 0x31B0 DUP2 DUP4 PUSH2 0xB0B JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2E9F JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x303A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x31A6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x31D3 DUP3 PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x20 CALLDATASIZE DUP3 CALLDATACOPY DUP3 MLOAD ISZERO PUSH2 0x2087 JUMPI MSTORE SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x3254 JUMPI POP POP SWAP1 PUSH2 0x3206 SWAP2 DUP4 PUSH2 0x3468 JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x48 SHR PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0x321A JUMPI POP POP JUMP JUMPDEST PUSH2 0x3223 SWAP1 PUSH2 0x2C4B JUMP JUMPDEST GT PUSH2 0x322A JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x550FFA9C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x3278 JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0x31F2 JUMP JUMPDEST PUSH2 0x3282 DUP2 DUP6 PUSH2 0x2073 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x32AE DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0xDE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP3 SLOAD SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1841 JUMPI SWAP1 SWAP2 SSTORE PUSH2 0x3270 JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP2 SWAP4 DUP5 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x32E3 JUMPI POP POP SWAP4 DUP3 PUSH2 0x3206 SWAP4 SWAP5 SWAP6 PUSH2 0x3535 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP5 AND PUSH2 0x3350 JUMPI JUMPDEST PUSH1 0x1 SWAP2 DUP7 AND PUSH2 0x3311 JUMPI JUMPDEST ADD PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x331B DUP2 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0x3349 PUSH2 0xDD0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0xDE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x330B JUMP JUMPDEST PUSH2 0x3367 PUSH2 0x3360 PUSH2 0x16B1 DUP4 DUP12 PUSH2 0x2073 JUMP JUMPDEST SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x33E8 JUMPI JUMPDEST PUSH2 0x33BE JUMPI PUSH1 0x1 SWAP2 PUSH2 0x337F DUP3 DUP8 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0x33B5 PUSH2 0x33AD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0xDE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP3 SLOAD PUSH2 0x28D4 JUMP JUMPDEST SWAP1 SSTORE SWAP2 POP PUSH2 0x3301 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x765C862B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP PUSH1 0x45 SLOAD PUSH1 0x80 SHR PUSH1 0xFF AND PUSH2 0x336E JUMP JUMPDEST ISZERO PUSH2 0x33FE JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E20616D6F756E74206578636565647320746F74 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C537570706C79000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 SWAP1 SWAP3 PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x34AC JUMPI DUP1 PUSH2 0x3485 PUSH2 0x34A7 SWAP3 DUP6 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0xDD8 PUSH2 0xDD0 PUSH2 0x3496 DUP5 DUP11 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x346E JUMP JUMPDEST POP SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x34CE JUMPI POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2A0D JUMPI DUP1 PUSH2 0x34E8 PUSH2 0x3530 SWAP3 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0x352A PUSH2 0x34F6 DUP4 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0x350B DUP4 PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x3518 DUP3 DUP3 LT ISZERO PUSH2 0x33F7 JUMP JUMPDEST SUB SWAP2 PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x2017 JUMP JUMPDEST PUSH2 0x34D1 JUMP JUMPDEST SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND ISZERO PUSH2 0x3582 JUMPI JUMPDEST AND ISZERO PUSH2 0x3563 JUMPI POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2A0D JUMPI DUP1 PUSH2 0x34E8 PUSH2 0x357D SWAP3 DUP7 PUSH2 0x2073 JUMP JUMPDEST PUSH2 0x3566 JUMP JUMPDEST SWAP3 SWAP1 PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x35B4 JUMPI DUP1 PUSH2 0x359E PUSH2 0x35AF SWAP3 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0xDD8 PUSH2 0xDD0 PUSH2 0x3496 DUP5 DUP12 PUSH2 0x2073 JUMP JUMPDEST PUSH2 0x3587 JUMP JUMPDEST POP SWAP1 SWAP3 PUSH2 0x3558 JUMP JUMPDEST ISZERO PUSH2 0x35C3 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 SWAP2 PUSH2 0x3644 PUSH2 0x48A SWAP4 PUSH1 0x40 DUP5 MSTORE PUSH1 0x40 DUP5 ADD SWAP1 PUSH2 0xFB8 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xFB8 JUMP JUMPDEST SWAP3 PUSH2 0x368F PUSH2 0x48A SWAP6 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x369D SWAP5 AND DUP7 MSTORE PUSH1 0x0 PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD SWAP1 PUSH2 0xFB8 JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xFB8 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x436 JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0x48A SWAP6 SWAP4 PUSH2 0x368F SWAP2 PUSH2 0x369D SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP9 MSTORE AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD SWAP1 PUSH2 0xFB8 JUMP JUMPDEST SWAP5 SWAP4 SWAP2 SWAP1 SWAP3 DUP2 EXTCODESIZE PUSH2 0x36FE JUMPI POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 SWAP6 PUSH2 0x302C PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP14 DUP15 DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x36AB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x3760 DUP3 PUSH2 0xAB7 JUMP JUMPDEST PUSH1 0x0 DUP3 MSTORE JUMP JUMPDEST PUSH2 0x2A4 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x3777 DUP4 PUSH2 0xAB7 JUMP JUMPDEST PUSH1 0x0 DUP4 MSTORE PUSH2 0x37F1 JUMP JUMPDEST ISZERO PUSH2 0x3787 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP3 PUSH2 0x3815 DUP5 ISZERO ISZERO PUSH2 0x3780 JUMP JUMPDEST PUSH2 0x381E DUP3 PUSH2 0x31C6 JUMP JUMPDEST PUSH1 0x40 SWAP5 DUP6 MLOAD SWAP2 PUSH2 0x382D DUP4 PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x1 DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 DUP2 ADD SWAP2 DUP5 CALLDATASIZE DUP5 CALLDATACOPY DUP2 MLOAD ISZERO PUSH2 0x2087 JUMPI PUSH1 0x1 PUSH2 0x3850 SWAP4 MSTORE DUP8 PUSH2 0x31EB JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP5 DUP7 MSTORE PUSH1 0x78 DUP4 MSTORE PUSH2 0x3886 DUP2 DUP9 DUP9 KECCAK256 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1841 JUMPI SSTORE DUP2 DUP7 DUP9 MLOAD DUP8 DUP2 MSTORE PUSH1 0x1 DUP7 DUP3 ADD MSTORE PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP11 CALLER SWAP3 LOG4 EXTCODESIZE PUSH2 0x38D4 JUMPI POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3912 DUP3 SWAP2 DUP7 SWAP5 DUP9 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP11 DUP12 DUP5 MSTORE CALLER PUSH1 0x4 DUP6 ADD PUSH2 0x2EB4 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 SWAP2 DUP6 SWAP4 PUSH2 0x3A80 JUMPI JUMPDEST POP POP PUSH2 0x39E8 JUMPI POP POP PUSH1 0x1 SWAP1 PUSH2 0x3933 PUSH2 0x2F36 JUMP JUMPDEST PUSH4 0x8C379A0 EQ PUSH2 0x39B8 JUMPI JUMPDEST POP PUSH2 0x394F JUMPI POP CODESIZE DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2FCF JUMP JUMPDEST MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH2 0x39C0 PUSH2 0x2F54 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x39CC JUMPI POP PUSH2 0x393E JUMP JUMPDEST POP DUP3 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x30D1 SWAP1 PUSH1 0x4 DUP4 ADD PUSH2 0x479 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SUB SWAP1 POP PUSH2 0x3A17 JUMPI POP PUSH2 0x305B JUMP JUMPDEST MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6420746F6B656E73000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH2 0x3A97 SWAP3 SWAP4 POP DUP1 RETURNDATASIZE LT PUSH2 0x31BF JUMPI PUSH2 0x31B0 DUP2 DUP4 PUSH2 0xB0B JUMP JUMPDEST SWAP1 CODESIZE DUP1 PUSH2 0x3920 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x3AAA PUSH2 0x4C18 JUMP JUMPDEST PUSH1 0x45 DUP1 SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x30 SHR AND PUSH2 0x3ABF DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH2 0x789 JUMPI PUSH4 0xFFFFFFFF SWAP2 DUP3 DUP2 AND SWAP1 DUP7 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1841 JUMPI PUSH1 0x58 SHR DUP4 AND LT PUSH2 0x75F JUMPI PUSH1 0x1 SWAP5 DUP1 DUP7 SUB PUSH2 0x3B3A JUMPI POP SWAP4 DUP2 PUSH2 0x2A4 SWAP5 SWAP6 SLOAD AND ADD AND PUSH2 0x3B2C DUP2 PUSH4 0xFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x3B34 PUSH2 0x3753 JUMP JUMPDEST SWAP2 PUSH2 0x37F1 JUMP JUMPDEST PUSH2 0x3B46 DUP2 SWAP4 SWAP3 SWAP4 PUSH2 0x1F99 JUMP JUMPDEST SWAP2 PUSH2 0x3B50 DUP3 PUSH2 0x1F99 JUMP JUMPDEST SWAP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x3B73 JUMPI POP POP POP POP PUSH2 0x2A4 SWAP4 SWAP5 POP PUSH2 0x3B6D PUSH2 0x3753 JUMP JUMPDEST SWAP3 PUSH2 0x3BCF JUMP JUMPDEST DUP9 SWAP1 DUP4 DUP3 DUP2 DUP6 SLOAD AND ADD AND PUSH2 0x3BB2 DUP2 PUSH4 0xFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x3BBC DUP3 DUP9 PUSH2 0x2073 JUMP JUMPDEST MSTORE DUP2 PUSH2 0x3BC8 DUP3 DUP10 PUSH2 0x2073 JUMP JUMPDEST MSTORE ADD PUSH2 0x3B54 JUMP JUMPDEST SWAP2 SWAP1 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x3BF4 DUP2 ISZERO ISZERO PUSH2 0x3780 JUMP JUMPDEST PUSH2 0x3C01 DUP7 MLOAD DUP5 MLOAD EQ PUSH2 0x35BC JUMP JUMPDEST PUSH2 0x3C0C DUP4 DUP8 DUP7 PUSH2 0x31EB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x3C62 JUMPI PUSH2 0x3C22 DUP2 DUP6 PUSH2 0x2073 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3C46 DUP7 PUSH2 0xD77 PUSH2 0x3C35 DUP5 DUP13 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH1 0x0 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP3 SLOAD SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1841 JUMPI PUSH2 0x3C5D SWAP3 SSTORE PUSH2 0x2017 JUMP JUMPDEST PUSH2 0x3C0F JUMP JUMPDEST POP SWAP3 SWAP5 SWAP4 SWAP1 SWAP5 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB CALLER SWAP2 DUP1 PUSH2 0x3C9D DUP10 DUP13 DUP4 PUSH2 0x362D JUMP JUMPDEST SUB SWAP1 LOG4 EXTCODESIZE PUSH2 0x3CAC JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x3CED SWAP3 PUSH1 0x20 SWAP3 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP11 DUP12 DUP6 MSTORE CALLER PUSH1 0x4 DUP7 ADD PUSH2 0x3652 JUMP JUMPDEST SUB SWAP3 GAS CALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x3DC9 JUMPI JUMPDEST POP PUSH2 0x3D37 JUMPI POP POP PUSH1 0x1 PUSH2 0x3D0B PUSH2 0x2F36 JUMP JUMPDEST PUSH4 0x8C379A0 EQ PUSH2 0x3D24 JUMPI JUMPDEST PUSH2 0x3066 JUMPI JUMPDEST CODESIZE DUP1 DUP1 DUP1 PUSH2 0x3CA6 JUMP JUMPDEST PUSH2 0x3D2C PUSH2 0x2F54 JUMP JUMPDEST DUP1 PUSH2 0x30E8 JUMPI POP PUSH2 0x3D16 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ PUSH2 0x3D1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6420746F6B656E73000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH2 0x3DE2 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x31BF JUMPI PUSH2 0x31B0 DUP2 DUP4 PUSH2 0xB0B JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x3CFA JUMP JUMPDEST SWAP1 PUSH2 0x3DF2 PUSH2 0x4C18 JUMP JUMPDEST PUSH1 0x45 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xFF DUP4 PUSH1 0x30 SHR AND PUSH2 0x3E08 DUP2 PUSH2 0x218F JUMP JUMPDEST SUB PUSH2 0x789 JUMPI PUSH4 0xFFFFFFFF SWAP2 DUP3 PUSH2 0x3E20 DUP4 DUP3 DUP5 AND PUSH2 0x2703 JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI PUSH2 0x3206 SWAP2 PUSH2 0x3EAE SWAP2 PUSH1 0x2 NUMBER ADD PUSH1 0x1 PUSH2 0x3E62 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SSTORE PUSH2 0x3E8E DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP2 DUP2 SLOAD ADD SWAP1 SSTORE AND PUSH2 0x3EA4 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST ADD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST SWAP1 DUP1 JUMPDEST PUSH2 0x3EEB JUMPI POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x3F31 PUSH2 0x3F1A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP7 PUSH2 0x400B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x3F27 DUP3 PUSH2 0xAB7 JUMP JUMPDEST PUSH1 0x0 DUP3 MSTORE DUP6 PUSH2 0x37F1 JUMP JUMPDEST ADD DUP1 PUSH2 0x3EE2 JUMP JUMPDEST SWAP1 DUP1 SWAP4 SWAP3 SWAP4 JUMPDEST PUSH2 0x3F48 JUMPI POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x3F74 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP7 PUSH2 0x400B JUMP JUMPDEST PUSH1 0x40 SWAP1 DUP2 MLOAD SWAP1 PUSH2 0x3F83 DUP3 PUSH2 0xAB7 JUMP JUMPDEST DUP7 PUSH2 0x3F94 PUSH1 0x0 SWAP4 DUP5 DUP2 MSTORE DUP4 DUP10 PUSH2 0x37F1 JUMP JUMPDEST PUSH2 0x3FA3 JUMPI JUMPDEST POP POP POP ADD DUP1 PUSH2 0x3F3E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE KECCAK256 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x3F99 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 DUP4 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x4029 DUP2 PUSH2 0xAD3 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 PUSH4 0xFFFFFFFF PUSH1 0x45 SLOAD PUSH1 0x58 SHR AND DUP1 ISZERO SWAP3 DUP4 PUSH2 0x408E JUMPI DUP2 SWAP1 MOD SWAP1 PUSH1 0x1 SWAP4 DUP5 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x1841 JUMPI DUP5 SWAP3 SWAP5 JUMPDEST PUSH2 0x405F JUMPI POP POP POP JUMP JUMPDEST PUSH2 0x4078 DUP6 SWAP4 SWAP6 PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4093 JUMPI DUP1 PUSH2 0x408E JUMPI DUP5 DUP3 DUP2 SWAP5 MOD ADD SWAP5 PUSH2 0x4056 JUMP JUMPDEST PUSH2 0x3FDC JUMP JUMPDEST POP SWAP1 SWAP3 POP POP JUMP JUMPDEST SWAP1 PUSH2 0x40A3 PUSH2 0x4C18 JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x2 PUSH1 0xFF DUP3 PUSH1 0x30 SHR AND PUSH2 0x40B8 DUP2 PUSH2 0x218F JUMP JUMPDEST SUB PUSH2 0x789 JUMPI PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 DUP4 MLOAD DUP4 ADD DUP1 SWAP4 GT PUSH2 0x1841 JUMPI PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI PUSH2 0x2A4 SWAP2 PUSH2 0x40FB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP1 SWAP5 AND SWAP2 AND ADD SWAP2 DUP3 GT PUSH2 0x1841 JUMPI JUMP JUMPDEST DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF PUSH1 0x45 SWAP2 PUSH2 0x4128 PUSH2 0x3EAE DUP3 PUSH2 0x4123 DUP7 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x40E3 JUMP JUMPDEST AND SWAP4 PUSH2 0x4133 DUP6 PUSH2 0x1F99 JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT PUSH2 0x414E JUMPI POP POP PUSH2 0x2A4 SWAP4 SWAP5 POP PUSH2 0x3B6D PUSH2 0x3753 JUMP JUMPDEST PUSH2 0x4158 DUP2 DUP5 PUSH2 0x2073 JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 SWAP2 DUP3 PUSH2 0x4168 DUP4 DUP9 PUSH2 0x2073 JUMP JUMPDEST MSTORE PUSH2 0x4180 DUP2 PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x41E1 JUMPI DUP1 ISZERO SWAP1 DUP2 ISZERO PUSH2 0x41C3 JUMPI JUMPDEST POP PUSH2 0x4199 JUMPI ADD PUSH2 0x4137 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x3F6CC76800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH2 0x41DA PUSH2 0x170C DUP6 SLOAD PUSH4 0xFFFFFFFF SWAP1 PUSH1 0x58 SHR AND SWAP1 JUMP JUMPDEST LT CODESIZE PUSH2 0x418E JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH31 0xA5A1F500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST ISZERO PUSH2 0x4211 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x40 MLOAD PUSH32 0x713562FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x2130 JUMPI POP PUSH2 0x212C JUMPI POP JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x1320 PUSH2 0x20AD JUMP JUMPDEST SWAP1 DUP1 SWAP3 SWAP2 DUP3 CALLDATACOPY ADD PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 CALLDATACOPY DUP2 ADD PUSH1 0x42 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x5 GT ISZERO PUSH2 0x2199 JUMPI JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP6 SWAP7 SWAP9 SWAP8 SWAP2 SWAP9 DUP5 ISZERO PUSH2 0x46B0 JUMPI PUSH2 0x4328 DUP4 DUP3 PUSH2 0x42EC JUMP JUMPDEST PUSH2 0x4333 DUP7 DUP3 SLOAD PUSH2 0x2703 JUMP JUMPDEST SWAP1 SSTORE DUP2 PUSH2 0x4340 DUP5 DUP4 PUSH2 0x42EC JUMP JUMPDEST SLOAD GT PUSH2 0x4686 JUMPI PUSH1 0x45 SLOAD SWAP4 PUSH4 0xFFFFFFFF SWAP5 PUSH2 0x435C DUP8 DUP8 DUP4 AND PUSH2 0x2703 JUMP JUMPDEST DUP7 DUP3 PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI PUSH1 0x20 SHR PUSH1 0xFF AND PUSH2 0x4376 DUP2 PUSH2 0x4305 JUMP JUMPDEST ISZERO PUSH2 0x465C JUMPI PUSH1 0x40 SWAP11 DUP12 MLOAD SWAP4 DUP5 DUP10 DUP13 PUSH1 0x20 DUP4 ADD SWAP4 DUP7 DUP7 CHAINID SWAP5 ADDRESS SWAP6 PUSH2 0x441C SWAP7 DUP10 SWAP6 SWAP4 SWAP2 SWAP3 PUSH1 0x8E SWAP8 SWAP6 SWAP4 PUSH32 0x9D13A5BA00000000000000000000000000000000000000000000000000000000 DUP9 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 SWAP4 PUSH1 0x60 SHL AND PUSH1 0x4 DUP10 ADD MSTORE PUSH1 0x18 DUP9 ADD MSTORE PUSH1 0x60 SHL AND PUSH1 0x38 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0xF8 SHL PUSH1 0x4C DUP6 ADD MSTORE PUSH1 0x4D DUP5 ADD MSTORE PUSH1 0x6D DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0xF8 SHL PUSH1 0x8D DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SUB SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP6 DUP7 DUP2 ADD DUP3 MSTORE PUSH2 0x444F SWAP1 DUP3 PUSH2 0xB0B JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x445B SWAP1 PUSH2 0x48EC JUMP JUMPDEST PUSH2 0x4466 CALLDATASIZE DUP8 DUP7 PUSH2 0xBFC JUMP JUMPDEST PUSH2 0x446F SWAP2 PUSH2 0x46DA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xC0FFEE06CE3D6689305035601A055A96ACD619C6 DUP2 EQ ISZERO SWAP1 DUP2 PUSH2 0x462E JUMPI JUMPDEST POP PUSH2 0x4605 JUMPI ISZERO PUSH2 0x45E5 JUMPI POP CALLVALUE PUSH2 0x45BC JUMPI JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x30 SHR PUSH1 0xFF AND PUSH2 0x44C7 DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x450F JUMPI POP POP POP POP POP DUP3 MLOAD SUB PUSH2 0x44E6 JUMPI PUSH2 0x2A4 SWAP4 SWAP5 POP PUSH2 0x49CE JUMP JUMPDEST PUSH1 0x4 DUP6 MLOAD PUSH32 0x991F339F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP7 POP PUSH2 0x4521 DUP2 SWAP7 SWAP6 SWAP7 PUSH2 0x218F JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x4574 JUMPI POP SWAP2 PUSH2 0x454E PUSH2 0x455A PUSH2 0x3EAE SWAP4 PUSH2 0x456F SWAP6 PUSH2 0x2A4 SWAP12 SWAP13 MLOAD SWAP4 DUP5 SWAP2 PUSH1 0x20 DUP4 ADD SWAP7 DUP8 SWAP2 PUSH2 0x42DE JUMP JUMPDEST SUB SWAP1 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0xB0B JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP5 DUP5 AND PUSH2 0x4123 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3F38 JUMP JUMPDEST SWAP4 SWAP5 SWAP6 POP POP POP POP PUSH2 0x4584 DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH2 0x4593 JUMPI PUSH2 0x2A4 SWAP4 SWAP5 POP PUSH2 0x492F JUMP JUMPDEST PUSH1 0x4 DUP6 MLOAD PUSH32 0x3F88681900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP11 MLOAD PUSH32 0x122D34A800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP6 DUP2 ISZERO PUSH2 0x45FB JUMPI JUMPDEST PUSH2 0x45F6 SWAP2 PUSH2 0x4DB5 JUMP JUMPDEST PUSH2 0x44B5 JUMP JUMPDEST PUSH1 0x3A SLOAD SWAP2 POP PUSH2 0x45ED JUMP JUMPDEST PUSH1 0x4 DUP13 MLOAD PUSH32 0x73A8EE1800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH2 0x4654 PUSH2 0x463B PUSH2 0x20AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST EQ ISZERO CODESIZE PUSH2 0x44A4 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x7963E2B500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x9A89C66A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x2C5211C600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x48A SWAP2 PUSH2 0x46E7 SWAP2 PUSH2 0x4825 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x46F3 DUP2 PUSH2 0x4305 JUMP JUMPDEST DUP1 PUSH2 0x46FB JUMPI POP JUMP JUMPDEST PUSH2 0x4704 DUP2 PUSH2 0x4305 JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x4751 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0x475A DUP2 PUSH2 0x4305 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x47A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x47B3 PUSH1 0x3 SWAP3 PUSH2 0x4305 JUMP JUMPDEST EQ PUSH2 0x47BA JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x41 DUP2 MLOAD EQ PUSH1 0x0 EQ PUSH2 0x4853 JUMPI PUSH2 0x484F SWAP2 PUSH1 0x20 DUP3 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP5 ADD MLOAD SWAP4 ADD MLOAD PUSH1 0x0 BYTE SWAP1 PUSH2 0x485D JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP1 PUSH1 0x2 SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT PUSH2 0x48E0 JUMPI SWAP2 PUSH1 0x80 SWAP5 SWAP4 SWAP2 PUSH1 0xFF PUSH1 0x20 SWAP5 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP5 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP2 DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x6CE JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x48DA JUMPI SWAP2 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP POP PUSH1 0x0 SWAP1 PUSH1 0x3 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP4 MSTORE PUSH1 0x3C DUP3 ADD MSTORE PUSH1 0x3C DUP2 MSTORE PUSH2 0x4929 DUP2 PUSH2 0xAD3 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 JUMPDEST DUP4 DUP2 LT PUSH2 0x4942 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x45 SWAP1 DUP2 SLOAD SWAP2 PUSH4 0xFFFFFFFF SWAP1 DUP5 PUSH2 0x499A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x1 SWAP7 DUP6 DUP9 DUP2 DUP4 AND ADD AND SWAP2 DUP3 SWAP2 AND OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP1 PUSH2 0x4991 DUP3 PUSH2 0xAB7 JUMP JUMPDEST DUP12 DUP3 MSTORE DUP10 PUSH2 0x37F1 JUMP JUMPDEST PUSH2 0x49A7 JUMPI JUMPDEST POP POP ADD PUSH2 0x4934 JUMP JUMPDEST PUSH2 0x49C7 SWAP2 PUSH2 0x1428 SWAP2 SLOAD AND PUSH4 0xFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST CODESIZE DUP1 PUSH2 0x499F JUMP JUMPDEST DUP2 PUSH2 0x49D8 SWAP2 PUSH2 0x40FB JUMP JUMPDEST DUP1 MLOAD SWAP2 PUSH2 0x49E3 JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 JUMPDEST DUP4 DUP2 LT PUSH2 0x49F5 JUMPI POP POP POP POP JUMP JUMPDEST PUSH2 0x49FF DUP2 DUP4 PUSH2 0x2073 JUMP JUMPDEST MLOAD DUP4 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SWAP1 PUSH1 0x1 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE ADD PUSH2 0x49E8 JUMP JUMPDEST SWAP1 PUSH2 0xFFFF DUP1 SWAP3 AND PUSH2 0x2710 SUB SWAP2 DUP3 GT PUSH2 0x1841 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0xFF PUSH2 0x4A7E DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND ISZERO PUSH2 0x4BD6 JUMPI PUSH2 0x4ABD PUSH2 0x4AB2 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x18 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x4AFF PUSH2 0x4AF9 PUSH2 0x4AEE DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x8 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0x4A3D JUMP JUMPDEST SWAP3 PUSH2 0x4B1C PUSH2 0x4B14 PUSH1 0x3A SLOAD PUSH2 0xFFFF DUP1 SWAP8 AND PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x2710 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH2 0x4B26 DUP4 DUP3 PUSH2 0x4DB5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP5 DUP6 PUSH2 0x4B4B JUMPI POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4BA4 SWAP4 PUSH2 0x4B64 PUSH2 0x4B69 SWAP4 PUSH2 0x4B14 SWAP4 PUSH2 0xDD0 SWAP7 AND PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x2710 JUMP JUMPDEST SWAP3 PUSH2 0x4B7E PUSH2 0x4B79 DUP6 PUSH1 0x37 SLOAD PUSH2 0x2703 JUMP JUMPDEST PUSH1 0x37 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 SSTORE PUSH32 0xF2F90295CDB5DAFD392BFC62D7868BCC79E8C6164C820C7CC195D6C8CDA8E674 PUSH1 0x0 DUP1 LOG2 CODESIZE DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2FCF JUMP JUMPDEST PUSH1 0x0 DUP1 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH32 0x619FCD35F40C77DA8AA64D5F98C1FED669135ECC4F245CE6667721B157F7098F DUP1 SLOAD PUSH1 0x18 SHR PUSH2 0xFFFF AND SWAP3 SWAP1 PUSH2 0x4AFF SWAP1 PUSH2 0x4AF9 SWAP1 PUSH2 0x4AEE JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x20 SHR PUSH1 0xFF AND PUSH2 0x4C2A DUP2 PUSH2 0x4305 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x4C35 JUMPI POP JUMP JUMPDEST PUSH2 0x4C3E DUP2 PUSH2 0x4305 JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x4CB8 JUMPI POP PUSH1 0x3D SLOAD TIMESTAMP LT PUSH2 0x4C8E JUMPI PUSH2 0x4C84 PUSH5 0x200000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x0 PUSH1 0x3D SSTORE JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB3C0357700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP1 PUSH2 0x4CC4 PUSH1 0x4 SWAP3 PUSH2 0x4305 JUMP JUMPDEST SUB PUSH2 0x4D05 JUMPI PUSH1 0x3D SLOAD TIMESTAMP LT PUSH2 0x4C8E JUMPI PUSH1 0x3E SLOAD TIMESTAMP LT PUSH2 0x2A4 JUMPI PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x734F1AD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x63A2DE0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x78 SHR PUSH1 0xFF AND PUSH2 0x4D7C JUMPI DUP1 DUP1 DIV PUSH1 0x1 EQ DUP2 ISZERO OR ISZERO PUSH2 0x1841 JUMPI CALLVALUE SUB PUSH2 0x4D52 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xC288BF8F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP1 ISZERO PUSH2 0x4DB2 JUMPI DUP1 DUP1 DIV PUSH1 0x1 SUB PUSH2 0x1841 JUMPI PUSH2 0x2A4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SLOAD AND ADDRESS SWAP1 CALLER SWAP1 PUSH2 0x4E0D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x78 SHR PUSH1 0xFF AND PUSH2 0x4DD4 JUMPI SWAP1 PUSH2 0x4DCC SWAP2 PUSH2 0x2710 JUMP JUMPDEST CALLVALUE SUB PUSH2 0x4D52 JUMPI JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4E09 JUMPI PUSH2 0x2A4 SWAP2 PUSH2 0x4DE7 SWAP2 PUSH2 0x2710 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SLOAD AND ADDRESS SWAP1 CALLER SWAP1 PUSH2 0x4E0D JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH1 0x0 DUP1 PUSH2 0x4EE4 SWAP5 PUSH1 0x40 MLOAD SWAP5 PUSH1 0x20 SWAP8 DUP9 DUP8 ADD SWAP6 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP1 SWAP3 AND PUSH1 0x24 DUP11 ADD MSTORE AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE PUSH1 0x64 DUP7 MSTORE PUSH2 0x4E7A DUP7 PUSH2 0xAEF JUMP JUMPDEST AND SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x4E89 DUP7 PUSH2 0xA9B JUMP JUMPDEST DUP8 DUP7 MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP9 DUP8 ADD MSTORE MLOAD SWAP1 DUP3 DUP6 GAS CALL RETURNDATASIZE ISZERO PUSH2 0x4F09 JUMPI RETURNDATASIZE SWAP2 PUSH2 0x4EC8 DUP4 PUSH2 0xBC2 JUMP JUMPDEST SWAP3 PUSH2 0x4ED6 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xB0B JUMP JUMPDEST DUP4 MSTORE RETURNDATASIZE PUSH1 0x0 DUP8 DUP6 ADD RETURNDATACOPY PUSH2 0x4F97 JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 PUSH2 0x4EF1 JUMPI POP POP POP JUMP JUMPDEST DUP3 PUSH2 0x2A4 SWAP4 PUSH2 0x4F04 SWAP4 DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F11 JUMP JUMPDEST PUSH2 0x4F26 JUMP JUMPDEST PUSH1 0x60 SWAP2 PUSH2 0x4F97 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x292 JUMPI MLOAD PUSH2 0x48A DUP2 PUSH2 0x11C9 JUMP JUMPDEST ISZERO PUSH2 0x4F2D JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 SWAP3 SWAP1 ISZERO PUSH2 0x4FF8 JUMPI POP DUP2 MLOAD ISZERO PUSH2 0x4FAB JUMPI POP SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO PUSH2 0x4FB4 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x30E8 JUMPI POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x28 SHR PUSH1 0xFF AND PUSH2 0x501D DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x50BB JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xC617113400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 PUSH14 0xAAEB6D7670E522A718067333CD4E GAS STATICCALL DUP1 ISZERO PUSH2 0x6CE JUMPI PUSH2 0x5094 JUMPI POP JUMP JUMPDEST PUSH2 0x4DB2 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x50B4 JUMPI JUMPDEST PUSH2 0x50AC DUP2 DUP4 PUSH2 0xB0B JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4F11 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x50A2 JUMP JUMPDEST PUSH2 0x50C4 DUP2 PUSH2 0x218F JUMP JUMPDEST ISZERO PUSH2 0x50CC JUMPI POP JUMP JUMPDEST PUSH14 0xAAEB6D7670E522A718067333CD4E DUP1 EXTCODESIZE PUSH2 0x50E5 JUMPI POP POP JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO PUSH2 0x292 JUMPI PUSH1 0x40 MLOAD PUSH32 0x7D3E3DBE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x3CC6CDDA760B79BAFA08DF41ECFA224F810DCEB6 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP2 PUSH1 0x44 DUP2 DUP4 DUP7 GAS CALL SWAP1 DUP2 PUSH2 0x51EF JUMPI JUMPDEST POP ISZERO PUSH2 0x4E09 JUMPI PUSH2 0x51DE SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x5185 PUSH6 0x10000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC617113400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP3 DUP4 SWAP2 SWAP1 DUP3 SWAP1 DUP2 SWAP1 PUSH1 0x44 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x6CE JUMPI PUSH2 0x5094 JUMPI POP JUMP JUMPDEST DUP1 PUSH2 0x51FC PUSH2 0x5202 SWAP3 PUSH2 0xA82 JUMP JUMPDEST DUP1 PUSH2 0x408 JUMP JUMPDEST CODESIZE PUSH2 0x5143 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE DUP2 DUP1 CALLDATACOPY DUP1 DUP1 CALLDATASIZE DUP2 PUSH32 0x0 GAS DELEGATECALL RETURNDATASIZE DUP3 DUP1 RETURNDATACOPY ISZERO PUSH2 0x5242 JUMPI RETURNDATASIZE SWAP1 RETURN JUMPDEST RETURNDATASIZE SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE PUSH14 0x2B75533EDDFB7C55745599ED27FC 0xB8 0xA5 PUSH7 0x788AF8D338588E 0xCC 0xF6 0xD DUP6 SLOAD DELEGATECALL PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"5433:9075:45:-:0;;;;;;;;;;;;;-1:-1:-1;;5433:9075:45;;;;-1:-1:-1;;;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5433:9075:45;;;;;;;;;;;;;;;;;;8075:25:44;;-1:-1:-1;5433:9075:45;;;;;;;;;;;;6067:30:10;6063:138;;-1:-1:-1;6536:32:47;5433:9075:45;6536:32:47;5433:9075:45;;;;;;;;8075:25:44;5433:9075:45;;;;;;;;;;;;;;;;;6063:138:10;5433:9075:45;;;;;;-1:-1:-1;5433:9075:45;6162:28:10;5433:9075:45;;;;;;6162:28:10;6063:138;;;5433:9075:45;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;-1:-1:-1;5433:9075:45;;;;;;-1:-1:-1;5433:9075:45;;;;;-1:-1:-1;5433:9075:45"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":1032,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":663,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":8332,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_uint256t_address":{"entryPoint":3645,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_array_address_dyn":{"entryPoint":3920,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_address_dynt_bool":{"entryPoint":4819,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_array_struct_RevenueAddress_calldata_dyn_calldata":{"entryPoint":4459,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_uint256_dyn":{"entryPoint":2916,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":3068,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool":{"entryPoint":4563,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":20241,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":3123,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes4_fromMemory":{"entryPoint":11935,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_enum_MintingType":{"entryPoint":4577,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_uint16":{"entryPoint":4539,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_uint32":{"entryPoint":4508,"id":null,"parameterSlots":0,"returnSlots":1},"abi_encode_address_address":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_19752":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_address_array_uint256_dyn_array_uint256_dyn_bytes":{"entryPoint":13995,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_address_address_array_uint256_dyn_array_uint256_dyn_bytes_31931":{"entryPoint":13906,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_address_uint256_uint256_bytes":{"entryPoint":12020,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_address_address_uint256_uint256_bytes_38590":{"entryPoint":11956,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":4076,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_array_uint256_dyn":{"entryPoint":13869,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256_dyn_memory_ptr":{"entryPoint":4024,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_uint256_uint256":{"entryPoint":6038,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_calldata":{"entryPoint":17118,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_packed_bytes4_address_uint256_address_bool_uint256_uint256_bool":{"entryPoint":null,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_rational_by":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string":{"entryPoint":1145,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":1078,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_0004":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_520d":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_f591":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":8089,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_array_string":{"entryPoint":14163,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":2892,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":3010,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_string_storage_31916":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_string_storage_31917":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"calldata_array_index_access_struct_RevenueAddress_calldata_dyn_calldata":{"entryPoint":9961,"id":null,"parameterSlots":3,"returnSlots":1},"checked_add_uint256":{"entryPoint":9987,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint32":{"entryPoint":16611,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256":{"entryPoint":10000,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint16":{"entryPoint":19005,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_uint256":{"entryPoint":10452,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256_19520":{"entryPoint":10362,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_uint256_19570":{"entryPoint":10407,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":9131,"id":null,"parameterSlots":2,"returnSlots":0},"clean_up_bytearray_end_slots_string_storage_31913":{"entryPoint":9018,"id":null,"parameterSlots":2,"returnSlots":0},"cleanup_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint16_to_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_to_storage_from_array_struct_RevenueAddress_calldata_dyn_calldata_to_array_struct_RevenueAddress_dyn":{"entryPoint":10176,"id":null,"parameterSlots":2,"returnSlots":0},"copy_byte_array_to_storage_from_string_to_string":{"entryPoint":9244,"id":null,"parameterSlots":1,"returnSlots":0},"copy_byte_array_to_storage_from_string_to_string_19584":{"entryPoint":9567,"id":null,"parameterSlots":1,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":1043,"id":null,"parameterSlots":3,"returnSlots":0},"copy_struct_to_storage_from_struct_RevenueAddress_calldata_to_struct_RevenueAddress":{"entryPoint":10019,"id":null,"parameterSlots":2,"returnSlots":0},"external_fun_airdropRandom":{"entryPoint":7144,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_airdropSequential":{"entryPoint":4875,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_airdropSpecify":{"entryPoint":5491,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_balanceOf":{"entryPoint":678,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_balanceOfBatch":{"entryPoint":4093,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_balanceOf_10844":{"entryPoint":5452,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_exists":{"entryPoint":4405,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getSupplies":{"entryPoint":6072,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":4593,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isApprovedForAll":{"entryPoint":7410,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isMetadataFixed":{"entryPoint":1424,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_maxPerAddress":{"entryPoint":4752,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mint":{"entryPoint":1747,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintCustomURITo":{"entryPoint":5208,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintPresale":{"entryPoint":6580,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintPrice":{"entryPoint":4789,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintRandomTo":{"entryPoint":2007,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintRandomTo_12279":{"entryPoint":7882,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintSpecifyTo":{"entryPoint":3837,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintSpecifyTo_12579":{"entryPoint":3714,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintTo":{"entryPoint":3794,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintTo_12140":{"entryPoint":3686,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mint_12077":{"entryPoint":6735,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mint_12098":{"entryPoint":6285,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_n2mVersion":{"entryPoint":7381,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_name":{"entryPoint":1165,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":6228,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_redeemRandom":{"entryPoint":2055,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_royaltyInfo":{"entryPoint":2586,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_safeBatchTransferFrom":{"entryPoint":3150,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_safeTransferFrom":{"entryPoint":7462,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setApprovalForAll":{"entryPoint":6765,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_supportsInterface":{"entryPoint":771,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_symbol":{"entryPoint":6413,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalSupply":{"entryPoint":7100,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalSupply_13262":{"entryPoint":1971,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_uri":{"entryPoint":1497,"id":null,"parameterSlots":0,"returnSlots":0},"extract_byte_array_length":{"entryPoint":6330,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_enum_MintingType":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_enum_OperatorFilterStatus":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_enum_SalePhase":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint16":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":2827,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_19753":{"entryPoint":2690,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_31919":{"entryPoint":2715,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_31923":{"entryPoint":2743,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_31932":{"entryPoint":2771,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_31936":{"entryPoint":2799,"id":null,"parameterSlots":1,"returnSlots":0},"fun":{"entryPoint":21000,"id":13613,"parameterSlots":0,"returnSlots":0},"fun__beforeTokenTransfer":{"entryPoint":13621,"id":3045,"parameterSlots":4,"returnSlots":0},"fun__mintSpecify":{"entryPoint":18894,"id":12683,"parameterSlots":3,"returnSlots":0},"fun_asSingletonArray":{"entryPoint":12742,"id":2705,"parameterSlots":1,"returnSlots":1},"fun_balanceOf":{"entryPoint":7897,"id":1599,"parameterSlots":2,"returnSlots":1},"fun_balanceOf_10844":{"entryPoint":11339,"id":10844,"parameterSlots":1,"returnSlots":1},"fun_beforeTokenTransfer":{"entryPoint":12995,"id":11110,"parameterSlots":4,"returnSlots":0},"fun_beforeTokenTransfer_19643":{"entryPoint":12779,"id":11110,"parameterSlots":3,"returnSlots":0},"fun_beforeTokenTransfer_31920":{"entryPoint":13416,"id":3045,"parameterSlots":3,"returnSlots":0},"fun_checkOwner":{"entryPoint":17107,"id":680,"parameterSlots":0,"returnSlots":0},"fun_checkPhase":{"entryPoint":19480,"id":13468,"parameterSlots":0,"returnSlots":0},"fun_doSafeBatchTransferAcceptanceCheck":{"entryPoint":14059,"id":2677,"parameterSlots":6,"returnSlots":0},"fun_doSafeTransferAcceptanceCheck":{"entryPoint":12227,"id":2612,"parameterSlots":6,"returnSlots":0},"fun_exists":{"entryPoint":null,"id":2928,"parameterSlots":1,"returnSlots":1},"fun_initialize_inner":{"entryPoint":10465,"id":null,"parameterSlots":12,"returnSlots":0},"fun_isApprovedForAll":{"entryPoint":11438,"id":11185,"parameterSlots":2,"returnSlots":1},"fun_isOperatorAllowed":{"entryPoint":20491,"id":13604,"parameterSlots":1,"returnSlots":0},"fun_mint":{"entryPoint":14182,"id":10795,"parameterSlots":2,"returnSlots":0},"fun_mintBatch":{"entryPoint":15311,"id":2251,"parameterSlots":4,"returnSlots":0},"fun_mintPresale":{"entryPoint":17167,"id":13244,"parameterSlots":9,"returnSlots":0},"fun_mintRandom":{"entryPoint":16184,"id":12514,"parameterSlots":4,"returnSlots":0},"fun_mintRandomWithChecks":{"entryPoint":15849,"id":12347,"parameterSlots":2,"returnSlots":0},"fun_mintRandom_19526":{"entryPoint":16095,"id":12514,"parameterSlots":3,"returnSlots":0},"fun_mintSequential":{"entryPoint":18735,"id":12211,"parameterSlots":3,"returnSlots":0},"fun_mintSequentialWithChecks":{"entryPoint":15007,"id":12174,"parameterSlots":2,"returnSlots":0},"fun_mintSpecify":{"entryPoint":16635,"id":11004,"parameterSlots":2,"returnSlots":0},"fun_mintSpecifyWithChecks":{"entryPoint":16538,"id":12639,"parameterSlots":2,"returnSlots":0},"fun_mint_19642":{"entryPoint":14321,"id":2140,"parameterSlots":3,"returnSlots":0},"fun_owner":{"entryPoint":8365,"id":10401,"parameterSlots":0,"returnSlots":1},"fun_randomTokenId":{"entryPoint":16395,"id":12557,"parameterSlots":2,"returnSlots":1},"fun_recover":{"entryPoint":18138,"id":6865,"parameterSlots":2,"returnSlots":1},"fun_requirePayment":{"entryPoint":19893,"id":13519,"parameterSlots":2,"returnSlots":0},"fun_requirePaymentWithAffiliates":{"entryPoint":19025,"id":13405,"parameterSlots":2,"returnSlots":0},"fun_requirePayment_19513":{"entryPoint":19759,"id":13519,"parameterSlots":1,"returnSlots":0},"fun_safeTransferFrom":{"entryPoint":19981,"id":3238,"parameterSlots":4,"returnSlots":0},"fun_strictOwner":{"entryPoint":16981,"id":10434,"parameterSlots":0,"returnSlots":1},"fun_throwError":{"entryPoint":null,"id":6792,"parameterSlots":1,"returnSlots":0},"fun_toEthSignedMessageHash":{"entryPoint":18668,"id":7056,"parameterSlots":1,"returnSlots":1},"fun_tryRecover":{"entryPoint":18525,"id":7006,"parameterSlots":4,"returnSlots":2},"fun_tryRecover_6838":{"entryPoint":18469,"id":6838,"parameterSlots":2,"returnSlots":2},"fun_verifyCallResultFromTarget":{"entryPoint":20375,"id":5031,"parameterSlots":4,"returnSlots":1},"increment_uint256":{"entryPoint":8215,"id":null,"parameterSlots":1,"returnSlots":1},"increment_wrapping_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address_19517":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address_19565":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address_19615":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address_19732":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address_19733":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"mapping_index_access_mapping_address_uint256_of_address_19741":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_bool_of_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_bool_of_uint32_19544":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_mapping_address_uint256__of_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_mapping_address_uint256_of_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_mapping_address_uint256_of_uint256_19617":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_address_dyn":{"entryPoint":8307,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":8606,"id":1368,"parameterSlots":12,"returnSlots":0},"packed_hashed_bytes_calldata_uint256_to_bytes_uint":{"entryPoint":17132,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":8168,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":16348,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":8544,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":8260,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2643,"id":null,"parameterSlots":0,"returnSlots":0},"read_from_calldatat_uint16":{"entryPoint":9977,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_3_uint16":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint16":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":16906,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_47c7":{"entryPoint":11596,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_6faf":{"entryPoint":11709,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_8ac7":{"entryPoint":11822,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_9eb0":{"entryPoint":13303,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_e11a":{"entryPoint":20262,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_e909":{"entryPoint":13756,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_ebf0":{"entryPoint":14208,"id":null,"parameterSlots":1,"returnSlots":0},"return_data_selector":{"entryPoint":12086,"id":null,"parameterSlots":0,"returnSlots":1},"revert_forward":{"entryPoint":8353,"id":null,"parameterSlots":0,"returnSlots":0},"try_decode_error_message":{"entryPoint":12116,"id":null,"parameterSlots":0,"returnSlots":1},"update_storage_value_offset_0t_bool_to_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_address_to_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_bool_to_bool_19545":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_bool_to_bool_19581":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_bool_to_bool_19595":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_bool_to_t_bool":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_bytes32_to_bytes32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_bytes32_to_bytes32_19587":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_bytes32_to_bytes32_19589":{"entryPoint":9890,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_bytes32_to_bytes32_19740":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_enum_MintingType_to_enum_MintingType":{"entryPoint":9895,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_enum_OperatorFilterStatus_to_enum_OperatorFilterStatus":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_enum_SalePhase_to_enum_SalePhase":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_uint16_to_uint16":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_uint16_to_uint16_19590":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_uint32_to_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_uint32_to_uint32_19515":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_uint8_to_uint8":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_uint16_to_uint16":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_uint256_to_uint256":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"validator_assert_enum_MintingType":{"entryPoint":8591,"id":null,"parameterSlots":1,"returnSlots":0},"validator_assert_enum_SalePhase":{"entryPoint":17157,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_address":{"entryPoint":628,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":4553,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":729,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint16":{"entryPoint":4527,"id":null,"parameterSlots":1,"returnSlots":0},"wrapping_add_uint32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"10278":[{"length":32,"start":8441},{"length":32,"start":17057}],"11969":[{"length":32,"start":21012}]},"linkReferences":{},"object":"60806040526004361015610015575b3661520857005b60003560e01c8062fdd58e1461026f57806301ffc9a71461026a57806306fdde03146102655780630de77eb8146102605780630e89341c146101cf5780631249c58b1461025b57806318160ddd146102565780631d7df191146102515780631ff4cc7d1461024c5780632a55205a146102475780632eb2c2d614610242578063438b1b4b1461023d5780634402d25414610238578063449a52f8146102335780634a50aa851461022e5780634e1273f4146102295780634f558e79146102245780635066e5c21461021f578063639814e01461021a5780636817c76c1461021557806368fdda33146102105780636ad542401461020b57806370a082311461020657806371e6775f14610201578063798f4794146101fc5780638da5cb5b146101f757806394bf804d146101f257806395d89b41146101ed5780639d13a5ba146101e8578063a0712d68146101e3578063a22cb465146101de578063bd85b039146101d9578063be172edf146101d4578063c87b56dd146101cf578063cb93c48f146101ca578063e985e9c5146101c5578063f242432a146101c05763fefa5d720361000e57611eca565b611d26565b611cf2565b611cd5565b6105d9565b611be8565b611bbc565b611a6d565b611a4f565b6119b4565b61190d565b61188d565b611854565b6117b8565b611573565b61154c565b611458565b61130b565b6112b5565b611290565b6111f1565b611135565b610ffd565b610efd565b610ed2565b610e82565b610e66565b610c4e565b610a1a565b610807565b6107d7565b6107b3565b6106d3565b610590565b61048d565b610303565b6102a6565b73ffffffffffffffffffffffffffffffffffffffff81160361029257565b600080fd5b60c435906102a482610274565b565b346102925760406003193601126102925760206102d16004356102c881610274565b60243590611ed9565b604051908152f35b7fffffffff0000000000000000000000000000000000000000000000000000000081160361029257565b346102925760206003193601126102925760207fffffffff00000000000000000000000000000000000000000000000000000000600435610343816102d9565b167f2a55205a00000000000000000000000000000000000000000000000000000000811490811561037a575b506040519015158152f35b7fd9b67a26000000000000000000000000000000000000000000000000000000008114915081156103de575b81156103b4575b503861036f565b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386103ad565b7f0e89341c00000000000000000000000000000000000000000000000000000000811491506103a6565b600091031261029257565b60005b8381106104265750506000910152565b8181015183820152602001610416565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361047281518092818752878088019101610413565b0116010190565b90602061048a928181520190610436565b90565b346102925760008060031936011261058d57604051908060dc546104b0816118ba565b8085529160019180831690811561054557506001146104ea575b6104e6856104da81870382610b0b565b60405191829182610479565b0390f35b925060dc83527f3162b0988d4210bff484413ed451d170a03887272177efc0b7d000f10abe9edf5b82841061052d5750505081016020016104da826104e66104ca565b80546020858701810191909152909301928101610512565b8695506104e6969350602092506104da9491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010192936104ca565b80fd5b3461029257600060031936011261029257603354158015906105ba575b6020906040519015158152f35b506020600360ff60455460301c166105d18161218f565b1490506105ad565b346102925760208060031936011261029257604051907f01284a4600000000000000000000000000000000000000000000000000000000825260043560048301526000918281602481305afa9283156106ce578093610649575b50506104e6604051928284938452830190610436565b909192503d8082843e61065c8184610b0b565b82019183818403126106c65780519067ffffffffffffffff82116106ca570182601f820112156106c65780519161069283610bc2565b936106a06040519586610b0b565b83855285848401011161058d5750906106be91848085019101610413565b903880610633565b5080fd5b8280fd5b6120a1565b6000600319360112610292576106ea603a54614d2f565b6106f2614c18565b60455460ff8160301c166107058161218f565b61078957604580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92831660010183169081179091559060455491818360581c161061075f5761075d911633613766565b005b60046040517f5fd48f91000000000000000000000000000000000000000000000000000000008152fd5b60046040517f64151c75000000000000000000000000000000000000000000000000000000008152fd5b3461029257600060031936011261029257602063ffffffff60455416604051908152f35b60406003193601126102925761075d6004356107f281610274565b6024359061080282603a54614db5565b613de9565b60008060031936011261058d5760016108403373ffffffffffffffffffffffffffffffffffffffff166000526041602052604060002090565b01543360009081526041602052604090205480156109f05760016108843373ffffffffffffffffffffffffffffffffffffffff166000526041602052604060002090565b01544311156109c657610938826109759340908115610978575b508460016108cc3373ffffffffffffffffffffffffffffffffffffffff166000526041602052604060002090565b0155846108f93373ffffffffffffffffffffffffffffffffffffffff166000526041602052604060002090565b5560455460481c61ffff16926109327fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff60455416604555565b33613edf565b7fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff6affff0000000000000000006045549260481b16911617604555565b80f35b6109a8915060ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff004316612703565b438110156109b8575b403861089e565b6109c19061287a565b6109b1565b60046040517f93c4a003000000000000000000000000000000000000000000000000000000008152fd5b60046040517f9890af60000000000000000000000000000000000000000000000000000000008152fd5b34610292576040600319360112610292576040612710610a4561ffff60455460381c16602435612710565b048151903082526020820152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111610a9657604052565b610a53565b6040810190811067ffffffffffffffff821117610a9657604052565b6020810190811067ffffffffffffffff821117610a9657604052565b6060810190811067ffffffffffffffff821117610a9657604052565b60a0810190811067ffffffffffffffff821117610a9657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a9657604052565b67ffffffffffffffff8111610a965760051b60200190565b81601f8201121561029257803591610b7b83610b4c565b92610b896040519485610b0b565b808452602092838086019260051b820101928311610292578301905b828210610bb3575050505090565b81358152908301908301610ba5565b67ffffffffffffffff8111610a9657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192610c0882610bc2565b91610c166040519384610b0b565b829481845281830111610292578281602093846000960137010152565b9080601f830112156102925781602061048a93359101610bfc565b346102925760a060031936011261029257600435610c6b81610274565b60243590610c7882610274565b67ffffffffffffffff9060443582811161029257610c9a903690600401610b64565b9160643581811161029257610cb3903690600401610b64565b9060843590811161029257610ccc903690600401610c33565b92610cd63361500b565b73ffffffffffffffffffffffffffffffffffffffff93848416943386148015610e28575b610d0390612d4c565b610d1083518551146135bc565b8616610d1d811515612dbd565b610d29848489886132c3565b60005b8351811015610de45780610d43610ddf9286612073565b51610dd8610dd08b610d77610d58868c612073565b51948c610dbf87610d9c83610d77866000526078602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54610da982821015612e2e565b0391610d77846000526078602052604060002090565b556000526078602052604060002090565b918254612703565b9055612017565b610d2c565b509386919461075d966040517f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb339180610e1f8a8a8361362d565b0390a4336136eb565b50610d03610e363387612cae565b9050610cfa565b600319606091011261029257600435610e5581610274565b906024359060443561048a81610274565b61075d610e7d610e7536610e3d565b819391614a51565b613a9f565b604060031936011261029257600435610e9a81610274565b6024359067ffffffffffffffff821161029257610ebe61075d923690600401610b64565b90610ecd603a54835190614db5565b61409a565b60406003193601126102925761075d600435610eed81610274565b60243590610e7d82603a54614db5565b606060031936011261029257600435610f1581610274565b6024359067ffffffffffffffff821161029257610f3961075d923690600401610b64565b90610ecd604435610f4981610274565b8351614a51565b81601f8201121561029257803591610f6783610b4c565b92610f756040519485610b0b565b808452602092838086019260051b820101928311610292578301905b828210610f9f575050505090565b8380918335610fad81610274565b815201910190610f91565b90815180825260208080930193019160005b828110610fd8575050505090565b835185529381019392810192600101610fca565b90602061048a928181520190610fb8565b346102925760406003193601126102925767ffffffffffffffff6004358181116102925761102f903690600401610f50565b9060243590811161029257611048903690600401610b64565b9080518251036110cb5761105c8151611f99565b9160005b82518110156110bd57806110a861109761107d6110b89487612073565b5173ffffffffffffffffffffffffffffffffffffffff1690565b6110a18386612073565b5190611ed9565b6110b28287612073565b52612017565b611060565b604051806104e68682610fec565b608460405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152fd5b3461029257602060031936011261029257602061116160043560005260aa602052604060002054151590565b6040519015158152f35b9181601f840112156102925782359167ffffffffffffffff8311610292576020808501948460061b01011161029257565b60e4359063ffffffff8216820361029257565b61ffff81160361029257565b61010435906102a4826111af565b8015150361029257565b61012435906102a4826111c9565b6101443590600482101561029257565b6101606003193601126102925767ffffffffffffffff6004358181116102925761121f903690600401610c33565b60243582811161029257611237903690600401610c33565b9060a4359283116102925761125361075d93369060040161116b565b61125b610297565b61126361119c565b9161126c6111bb565b936112756111d3565b9561127e6111e1565b9760843591606435916044359161219e565b3461029257600060031936011261029257602061ffff60455460481c16604051908152f35b34610292576000600319360112610292576020603a54604051908152f35b6040600319820112610292576004359067ffffffffffffffff8211610292576112fe91600401610f50565b9060243561048a816111c9565b611314366112d3565b9061133d611320614255565b73ffffffffffffffffffffffffffffffffffffffff16331461420a565b604580549260ff8460301c166113528161218f565b6107895761136c93835163ffffffff958691828416612703565b9160581c161061075f5782519260005b84811061138557005b80836113f361139961107d60019587612073565b896113b76113ab8a5463ffffffff1690565b60010163ffffffff1690565b6113ec8163ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006045541617604555565b1690613766565b6113fe575b0161137c565b611453611428611412875463ffffffff1690565b63ffffffff166000526043602052604060002090565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b6113f8565b60606003193601126102925760043561147081610274565b6044359061147d826111c9565b611488603a54614d2f565b611490614c18565b60455490600360ff8360301c166114a68161218f565b0361078957604580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff93841660010184169081179091559160455492818460581c161061075f576114ff921690613766565b611532575b60243561152f61151960455463ffffffff1690565b63ffffffff166000526044602052604060002090565b55005b61154761142861141260455463ffffffff1690565b611504565b346102925760206003193601126102925760206102d160043561156e81610274565b612c4b565b60606003193601126102925767ffffffffffffffff60048035828111610292576115a09036908301610f50565b91602435908111610292576115b89036908301610b64565b604435926115c5846111c9565b6115cd6142d3565b80519260458054600260ff8260301c166115e68161218f565b0361176d5763ffffffff908181169082611601885184612703565b9160581c1610611744578551870361171b579061164e91818816011663ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006045541617604555565b60005b85811061165a57005b6116648186612073565b511580156116f0575b6116c757808761169661168561107d60019589612073565b61168f848a612073565b5190613766565b6116a1575b01611651565b6116c26114286116b18389612073565b516000526043602052604060002090565b61169b565b826040517f3f6cc768000000000000000000000000000000000000000000000000000000008152fd5b506116fb8186612073565b5182546117159060581c63ffffffff165b63ffffffff1690565b1061166d565b836040517f991f339f000000000000000000000000000000000000000000000000000000008152fd5b836040517f5fd48f91000000000000000000000000000000000000000000000000000000008152fd5b826040517f64151c75000000000000000000000000000000000000000000000000000000008152fd5b6117ae60409295949395606083526060830190610fb8565b9460208201520152565b34610292576040806003193601126102925760243590600435908183106118465760019280840190818511611841578385910301908111611841576117fc81611f99565b9260005b82811061181e575050506104e692505b519182914290439084611796565b808691830160005260aa602052846000205461183a8288612073565b5201611800565b611fe8565b6104e6925060609150611810565b3461029257600060031936011261029257602061186f6120ad565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60406003193601126102925761075d6004356118b46024356118ae81610274565b82614a51565b33613a9f565b90600182811c92168015611903575b60208310146118d457565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916118c9565b346102925760008060031936011261058d57604051908060dd54611930816118ba565b808552916001918083169081156105455750600114611959576104e6856104da81870382610b0b565b925060dd83527fac507b9f8bf86ad8bb770f71cd2b1992902ae0314d93fc0f2bb011d70e7962265b82841061199c5750505081016020016104da826104e66104ca565b80546020858701810191909152909301928101611981565b610100600319360112610292576004356119cd81610274565b67ffffffffffffffff602435818111610292576119ee903690600401610b64565b916044356119fb816111c9565b60c43590611a08826111c9565b60e43594848611610292573660238701121561029257856004013594851161029257366024868801011161029257602461075d96019360a43592608435926064359261430f565b60206003193601126102925761075d6004356118b481603a54614db5565b3461029257604060031936011261029257600435611a8a81610274565b602435611a96816111c9565b611a9f8261500b565b73ffffffffffffffffffffffffffffffffffffffff821691823314611b525781611af0611b2092610d773373ffffffffffffffffffffffffffffffffffffffff166000526079602052604060002090565b9060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051901515815233907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3005b608460405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152fd5b346102925760206003193601126102925760043560005260aa6020526020604060002054604051908152f35b611bf1366112d3565b90611bfa6142d3565b8051906045549260ff8460301c1693611c128561218f565b60018095036107895763ffffffff8082169181611c2f8785612703565b9160581c161061075f57611c7391818616011663ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006045541617604555565b611c7c436128a7565b4060005b848110611c8957005b80611c9587928461400b565b84611cac82611ca761107d868b612073565b613766565b611cb8575b5001611c80565b611428611ccf916000526043602052604060002090565b38611cb1565b346102925760006003193601126102925760206040516103e88152f35b34610292576040600319360112610292576020611161600435611d1481610274565b60243590611d2182610274565b612cae565b346102925760a060031936011261029257600435611d4381610274565b602435611d4f81610274565b6084359060643560443567ffffffffffffffff841161029257611d79610975943690600401610c33565b92611d833361500b565b73ffffffffffffffffffffffffffffffffffffffff95868116963388148015611eb5575b611db090612d4c565b8216611dbd811515612dbd565b611dda611dc9856131c6565b611dd2876131c6565b9085856132c3565b600097848952607860205285611e138460408c209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54611e2082821015612e2e565b868b52607860205203611e568460408c209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b55611e6f84610d77876000526078602052604060002090565b611e7a878254612703565b9055604080518681526020810188905233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291a433612fc3565b50611db0611ec33384612cae565b9050611da7565b61075d610802610e7536610e3d565b73ffffffffffffffffffffffffffffffffffffffff811615611f2f57611f2b91600052607860205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5490565b608460405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e6572000000000000000000000000000000000000000000006064820152fd5b90611fa382610b4c565b611fb06040519182610b0b565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611fde8294610b4c565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118415760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156120875760209160051b010190565b612044565b90816020910312610292575161048a81610274565b6040513d6000823e3d90fd5b6000906040517f6352211e00000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa60009181612130575b5061212c5750565b9150565b61215291925060203d8111612159575b61214a8183610b0b565b81019061208c565b9038612124565b503d612140565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004111561219957565b612160565b99979593919a98969492909a6000549b60ff8d60081c1615809d819e61232c575b811561230c575b50156122a25761220a9b8d61220160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055565b61226c576128e1565b61221057565b61223d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff60005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b61229d6101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff6000541617600055565b6128e1565b608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b303b1591508161231e575b50386121c6565b6001915060ff161438612317565b600160ff82161091506121bf565b601f8111612346575050565b60009060dc82527f3162b0988d4210bff484413ed451d170a03887272177efc0b7d000f10abe9edf906020601f850160051c830194106123a1575b601f0160051c01915b82811061239657505050565b81815560010161238a565b9092508290612381565b601f81116123b7575050565b60009060dd82527fac507b9f8bf86ad8bb770f71cd2b1992902ae0314d93fc0f2bb011d70e796226906020601f850160051c83019410612412575b601f0160051c01915b82811061240757505050565b8181556001016123fb565b90925082906123f2565b90815167ffffffffffffffff8111610a96576124428161243d60dc546118ba565b61233a565b602080601f831160011461249b5750819293600092612490575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161760dc55565b01519050388061245c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316946124ec60dc6000527f3162b0988d4210bff484413ed451d170a03887272177efc0b7d000f10abe9edf90565b926000905b878210612547575050836001959610612510575b505050811b0160dc55565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080612505565b806001859682949686015181550195019301906124f1565b90815167ffffffffffffffff8111610a96576125858161258060dd546118ba565b6123ab565b602080601f83116001146125de57508192936000926125d3575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161760dd55565b01519050388061259f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169461262f60dd6000527fac507b9f8bf86ad8bb770f71cd2b1992902ae0314d93fc0f2bb011d70e79622690565b926000905b87821061268a575050836001959610612653575b505050811b0160dd55565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080612648565b80600185968294968601518155019501930190612634565b603a55565b6126b08161218f565b7fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff66ff0000000000006045549260301b16911617604555565b91908110156120875760061b0190565b3561048a816111af565b9190820180921161184157565b8181029291811591840414171561184157565b9073ffffffffffffffffffffffffffffffffffffffff813561274481610274565b167fffffffffffffffffffff0000000000000000000000000000000000000000000075ffff00000000000000000000000000000000000000006020855494847fffffffffffffffffffffffff0000000000000000000000000000000000000000871617875501356127b4816111af565b60a01b16921617179055565b680100000000000000008211610a965760385482603855808310612833575b5060386000527f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f4561996000915b8383106128175750505050565b6001604082612827839486612723565b0192019201919061280a565b600060388152837f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619992830192015b82811061286f5750506127df565b818155600101612861565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00820191821161184157565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161184157565b9190820391821161184157565b906128f86128fd929d9c989993979d9a969a61241c565b61255f565b63ffffffff811615612c2157811590811580612c18575b612bee5761138861ffff861611612bc45761296a907fffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff6effffffff00000000000000000000006045549260581b16911617604555565b15612bb3575080612ba3575061297f8361218f565b60038303612b79576129936129ce92603a55565b7fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff68ffff000000000000006045549260381b16911617604555565b6129d78161218f565b80612b6a575b5073ffffffffffffffffffffffffffffffffffffffff8116612ae0575b5060018092151514612a9b575b83612a13575b50509050565b60009182905b858210612a6757505061251c9293612a30916127c0565b11612a3d57803880612a0d565b60046040517ffe0c06b7000000000000000000000000000000000000000000000000000000008152fd5b612a938294612a8d612a866020612a8086978c8a6126e9565b016126f9565b61ffff1690565b90612703565b930190612a19565b612adb7001000000000000000000000000000000007fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff6045541617604555565b612a07565b612b6490612b236f010000000000000000000000000000007fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff6045541617604555565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006040541617604055565b386129fa565b612b73906126a7565b386129dd565b60046040517f27bfeafe000000000000000000000000000000000000000000000000000000008152fd5b6129ce926126a261299392603455565b603355506129ce9161299390603a55565b60046040517f44b93ba4000000000000000000000000000000000000000000000000000000008152fd5b60046040517f04cff63b000000000000000000000000000000000000000000000000000000008152fd5b50831515612914565b60046040517fb8a9effe000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff168015610292578060005260de60205260406000205490600160ff60455460301c16612c8b8161218f565b14612c94575090565b600052604160205260406000205481018091116118415790565b73ffffffffffffffffffffffffffffffffffffffff918281167388899dc0b84c6e726840e00dfb94abc6248825ec8114612d4357731e0049783f008a0085193e00003d00cd54003c7114612d3b5760ff92612d369216600052607960205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b541690565b505050600190565b50505050600190565b15612d5357565b608460405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f7665640000000000000000000000000000000000006064820152fd5b15612dc457565b608460405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b15612e3557565b608460405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e73666572000000000000000000000000000000000000000000006064820152fd5b90816020910312610292575161048a816102d9565b61048a939273ffffffffffffffffffffffffffffffffffffffff60a093168252600060208301526040820152600160608201528160808201520190610436565b919261048a95949160a09473ffffffffffffffffffffffffffffffffffffffff8092168552166020840152604083015260608201528160808201520190610436565b60009060033d11612f4357565b905060046000803e60005160e01c90565b600060443d1061048a5760405160031991823d016004833e815167ffffffffffffffff918282113d602484011117612fb257818401948551938411612fba573d85010160208487010111612fb2575061048a92910160200190610b0b565b949350505050565b50949350505050565b9493919092813b612fd7575b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff60209561302c604051988997889687947ff23a6e61000000000000000000000000000000000000000000000000000000009d8e875260048701612ef4565b0393165af160009181613196575b50613104575050600161304b612f36565b6308c379a0146130d5575b613066575b388080808080612fcf565b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608490fd5b0390fd5b6130dd612f54565b806130e85750613056565b6130d19060405191829162461bcd60e51b835260048301610479565b7fffffffff00000000000000000000000000000000000000000000000000000000161461305b5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e730000000000000000000000000000000000000000000000006064820152608490fd5b6131b891925060203d81116131bf575b6131b08183610b0b565b810190612e9f565b903861303a565b503d6131a6565b604051906131d382610a9b565b60018252602082016020368237825115612087575290565b9190805160005b818110613254575050906132069183613468565b60455460481c61ffff16908161321a575050565b61322390612c4b565b1161322a57565b60046040517f550ffa9c000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff8516613278575b6001016131f2565b6132828185612073565b51906132ae8673ffffffffffffffffffffffffffffffffffffffff1660005260de602052604060002090565b91825490810180911161184157909155613270565b9392909193845160005b8181106132e35750509382613206939495613535565b73ffffffffffffffffffffffffffffffffffffffff90818416613350575b6001918616613311575b016132cd565b61331b8186612073565b51613349610dd08873ffffffffffffffffffffffffffffffffffffffff1660005260de602052604060002090565b905561330b565b6133676133606116b1838b612073565b5460ff1690565b80156133e8575b6133be5760019161337f8287612073565b516133b56133ad8773ffffffffffffffffffffffffffffffffffffffff1660005260de602052604060002090565b9182546128d4565b90559150613301565b60046040517f765c862b000000000000000000000000000000000000000000000000000000008152fd5b5060455460801c60ff1661336e565b156133fe57565b608460405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f7460448201527f616c537570706c790000000000000000000000000000000000000000000000006064820152fd5b91909260005b84518110156134ac57806134856134a79285612073565b51610dd8610dd0613496848a612073565b5160005260aa602052604060002090565b61346e565b509173ffffffffffffffffffffffffffffffffffffffff16156134ce57509050565b60005b8351811015612a0d57806134e86135309286612073565b5161352a6134f68386612073565b5161350b8360005260aa602052604060002090565b54613518828210156133f7565b039160005260aa602052604060002090565b55612017565b6134d1565b909392919373ffffffffffffffffffffffffffffffffffffffff80921615613582575b161561356357509050565b60005b8351811015612a0d57806134e861357d9286612073565b613566565b929060005b85518110156135b4578061359e6135af9286612073565b51610dd8610dd0613496848b612073565b613587565b509092613558565b156135c357565b608460405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b909161364461048a93604084526040840190610fb8565b916020818403910152610fb8565b9261368f61048a959373ffffffffffffffffffffffffffffffffffffffff61369d941686526000602087015260a0604087015260a0860190610fb8565b908482036060860152610fb8565b916080818403910152610436565b939061048a959361368f9161369d9473ffffffffffffffffffffffffffffffffffffffff809216885216602087015260a0604087015260a0860190610fb8565b9493919092813b6136fe57505050505050565b600073ffffffffffffffffffffffffffffffffffffffff60209561302c604051988997889687947fbc197c81000000000000000000000000000000000000000000000000000000009d8e8752600487016136ab565b6040519061376082610ab7565b60008252565b6102a4916040519161377783610ab7565b600083526137f1565b1561378757565b608460405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b9073ffffffffffffffffffffffffffffffffffffffff821692613815841515613780565b61381e826131c6565b60409485519161382d83610a9b565b6001835260209283810191843684378151156120875760016138509352876131eb565b60009484865260788352613886818888209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b805490600182018092116118415755818688518781526001868201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a3392a43b6138d457505050505050565b6139128291869488519586809481937ff23a6e61000000000000000000000000000000000000000000000000000000009a8b84523360048501612eb4565b03925af19182918593613a80575b50506139e8575050600190613933612f36565b6308c379a0146139b8575b5061394f5750388080808080612fcf565b5162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608490fd5b6139c0612f54565b90816139cc575061393e565b50825162461bcd60e51b81529081906130d19060048301610479565b7fffffffff0000000000000000000000000000000000000000000000000000000016039050613a17575061305b565b5162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e730000000000000000000000000000000000000000000000006064820152608490fd5b613a97929350803d106131bf576131b08183610b0b565b903880613920565b919091613aaa614c18565b604580549060ff8260301c16613abf8161218f565b6107895763ffffffff91828116908682018092116118415760581c83161061075f57600194808603613b3a575093816102a4949554160116613b2c8163ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006045541617604555565b613b34613753565b916137f1565b613b4681939293611f99565b91613b5082611f99565b9360005b838110613b7357505050506102a4939450613b6d613753565b92613bcf565b88908382818554160116613bb28163ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006045541617604555565b613bbc8288612073565b5281613bc88289612073565b5201613b54565b91909373ffffffffffffffffffffffffffffffffffffffff8316613bf4811515613780565b613c0186518451146135bc565b613c0c8387866131eb565b60005b8651811015613c6257613c228185612073565b5190613c4686610d77613c35848c612073565b516000526078602052604060002090565b91825490810180911161184157613c5d9255612017565b613c0f565b5092949390948360006040517f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb339180613c9d898c8361362d565b0390a43b613cac575b50505050565b613ced9260209260006040518096819582947fbc197c81000000000000000000000000000000000000000000000000000000009a8b85523360048601613652565b03925af160009181613dc9575b50613d375750506001613d0b612f36565b6308c379a014613d24575b613066575b38808080613ca6565b613d2c612f54565b806130e85750613d16565b7fffffffff000000000000000000000000000000000000000000000000000000001614613d1b5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e730000000000000000000000000000000000000000000000006064820152608490fd5b613de291925060203d81116131bf576131b08183610b0b565b9038613cfa565b90613df2614c18565b60455490600160ff8360301c16613e088161218f565b036107895763ffffffff9182613e2083828416612703565b9160581c161061075f5761320691613eae91600243016001613e628773ffffffffffffffffffffffffffffffffffffffff166000526041602052604060002090565b0155613e8e8573ffffffffffffffffffffffffffffffffffffffff166000526041602052604060002090565b81815401905516613ea460455463ffffffff1690565b0163ffffffff1690565b63ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006045541617604555565b90805b613eeb57505050565b80613f31613f1a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff938661400b565b60405190613f2782610ab7565b60008252856137f1565b0180613ee2565b90809392935b613f485750505050565b80613f747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff928661400b565b604090815190613f8382610ab7565b86613f9460009384815283896137f1565b613fa3575b5050500180613f3e565b815260436020522060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055388080613f99565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b90604051906020820192835260408201526040815261402981610ad3565b5190209063ffffffff60455460581c168015928361408e5781900690600193848301809311611841578492945b61405f57505050565b61407885939560005260aa602052604060002054151590565b15614093578061408e5784828194060194614056565b613fdc565b5090925050565b906140a3614c18565b604554600260ff8260301c166140b88161218f565b036107895763ffffffff80821691835183018093116118415760581c161061075f576102a4916140fb565b91909163ffffffff8080941691160191821161184157565b815191929163ffffffff1663ffffffff604591614128613eae82614123865463ffffffff1690565b6140e3565b169361413385611f99565b9160005b86811061414e5750506102a4939450613b6d613753565b6141588184612073565b5190600191826141688388612073565b526141808160005260aa602052604060002054151590565b6141e15780159081156141c3575b506141995701614137565b60046040517f3f6cc768000000000000000000000000000000000000000000000000000000008152fd5b90506141da61170c855463ffffffff9060581c1690565b103861418e565b60046040517ea5a1f5000000000000000000000000000000000000000000000000000000008152fd5b1561421157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6000906040517f713562fe00000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa60009181612130575061212c5750565b6102a46113206120ad565b908092918237016000815290565b6020908260405193849283378101604281520301902090565b6005111561219957565b94939095969897919884156146b05761432883826142ec565b614333868254612703565b90558161434084836142ec565b5411614686576045549363ffffffff9461435c87878316612703565b868260581c161061075f5760201c60ff1661437681614305565b1561465c5760409a8b519384898c602083019386864694309561441c968995939192608e9795937f9d13a5ba0000000000000000000000000000000000000000000000000000000088527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000809360601b166004890152601888015260601b166038860152151560f81b604c850152604d840152606d830152151560f81b608d8201520190565b03947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101825261444f9082610b0b565b51902061445b906148ec565b614466368786610bfc565b61446f916146da565b73ffffffffffffffffffffffffffffffffffffffff1673c0ffee06ce3d6689305035601a055a96acd619c6811415908161462e575b5061460557156145e55750346145bc575b60455460301c60ff166144c78161218f565b6002810361450f5750505050508251036144e6576102a49394506149ce565b600485517f991f339f000000000000000000000000000000000000000000000000000000008152fd5b9091929396506145218196959661218f565b6001810361457457509161454e61455a613eae9361456f956102a49b9c51938491602083019687916142de565b03908101835282610b0b565b51902094841661412360455463ffffffff1690565b613f38565b939495505050506145848161218f565b614593576102a493945061492f565b600485517f3f886819000000000000000000000000000000000000000000000000000000008152fd5b60048a517f122d34a8000000000000000000000000000000000000000000000000000000008152fd5b8581156145fb575b6145f691614db5565b6144b5565b603a5491506145ed565b60048c517f73a8ee18000000000000000000000000000000000000000000000000000000008152fd5b905061465461463b6120ad565b73ffffffffffffffffffffffffffffffffffffffff1690565b1415386144a4565b60046040517f7963e2b5000000000000000000000000000000000000000000000000000000008152fd5b60046040517f9a89c66a000000000000000000000000000000000000000000000000000000008152fd5b60046040517f2c5211c6000000000000000000000000000000000000000000000000000000008152fd5b61048a916146e791614825565b9190916146f381614305565b806146fb5750565b61470481614305565b600181036147515760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b61475a81614305565b600281036147a75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806147b3600392614305565b146147ba57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608490fd5b9060418151146000146148535761484f916020820151906060604084015193015160001a9061485d565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116148e05791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156106ce57815173ffffffffffffffffffffffffffffffffffffffff8116156148da579190565b50600190565b50505050600090600390565b60405160208101917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008352603c820152603c815261492981610ad3565b51902090565b600092835b838110614942575050505050565b60459081549163ffffffff908461499a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000060019685888183160116918291161784556040519061499182610ab7565b8b8252896137f1565b6149a7575b505001614934565b6149c79161142891541663ffffffff166000526043602052604060002090565b388061499f565b816149d8916140fb565b8051916149e3575050565b600090815b8381106149f55750505050565b6149ff8183612073565b51835260436020526040832090600191827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055016149e8565b9061ffff8092166127100391821161184157565b9060ff614a7e8273ffffffffffffffffffffffffffffffffffffffff166000526039602052604060002090565b541615614bd657614abd614ab28273ffffffffffffffffffffffffffffffffffffffff166000526039602052604060002090565b5460181c61ffff1690565b91614aff614af9614aee8473ffffffffffffffffffffffffffffffffffffffff166000526039602052604060002090565b5460081c61ffff1690565b93614a3d565b92614b1c614b14603a5461ffff809716612710565b612710900490565b614b268382614db5565b73ffffffffffffffffffffffffffffffffffffffff84169485614b4b57505050505050565b614ba493614b64614b6993614b1493610dd09616612710565b612710565b92614b7e614b7985603754612703565b603755565b73ffffffffffffffffffffffffffffffffffffffff166000526036602052604060002090565b90557ff2f90295cdb5dafd392bfc62d7868bcc79e8c6164c820c7cc195d6c8cda8e674600080a2388080808080612fcf565b6000805260396020527f619fcd35f40c77da8aa64d5f98c1fed669135ecc4f245ce6667721b157f7098f805460181c61ffff169290614aff90614af990614aee565b60455460201c60ff16614c2a81614305565b60028103614c355750565b614c3e81614305565b60038103614cb85750603d544210614c8e57614c846402000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff6045541617604555565b6102a46000603d55565b60046040517fb3c03577000000000000000000000000000000000000000000000000000000008152fd5b80614cc4600492614305565b03614d0557603d544210614c8e57603e5442106102a45760046040517f0734f1ad000000000000000000000000000000000000000000000000000000008152fd5b60046040517f63a2de0f000000000000000000000000000000000000000000000000000000008152fd5b60455460781c60ff16614d7c5780800460011481151715611841573403614d5257565b60046040517fc288bf8f000000000000000000000000000000000000000000000000000000008152fd5b8015614db257808004600103611841576102a49073ffffffffffffffffffffffffffffffffffffffff6040541630903390614e0d565b50565b60455460781c60ff16614dd45790614dcc91612710565b3403614d5257565b8015614e09576102a491614de791612710565b73ffffffffffffffffffffffffffffffffffffffff6040541630903390614e0d565b5050565b90600080614ee49460405194602097888701957f23b872dd00000000000000000000000000000000000000000000000000000000875273ffffffffffffffffffffffffffffffffffffffff938480921660248a0152166044880152606487015260648652614e7a86610aef565b169260405194614e8986610a9b565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af13d15614f09573d91614ec883610bc2565b92614ed66040519485610b0b565b83523d60008785013e614f97565b80519081614ef157505050565b826102a493614f04938301019101614f11565b614f26565b606091614f97565b90816020910312610292575161048a816111c9565b15614f2d57565b608460405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b91929015614ff85750815115614fab575090565b3b15614fb45790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156130e85750805190602001fd5b60455460281c60ff1661501d8161218f565b600181036150bb57506040517fc617113400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9190911660248201526020816044816daaeb6d7670e522a718067333cd4e5afa80156106ce576150945750565b614db29060203d81116150b4575b6150ac8183610b0b565b810190614f11565b503d6150a2565b6150c48161218f565b156150cc5750565b6daaeb6d7670e522a718067333cd4e803b6150e5575050565b803b15610292576040517f7d3e3dbe000000000000000000000000000000000000000000000000000000008152306004820152733cc6cdda760b79bafa08df41ecfa224f810dceb6602482015260008160448183865af190816151ef575b5015614e09576151de91602091615185650100000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff6045541617604555565b6040517fc617113400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90921660248301529092839190829081906044820190565b03915afa80156106ce576150945750565b806151fc61520292610a82565b80610408565b38615143565b600036818037808036817f00000000000000000000000000000000000000000000000000000000000000005af43d82803e15615242573d90f35b3d90fdfea2646970667358221220be6d2b75533eddfb7c55745599ed27fcb8a566788af8d338588eccf60d8554f464736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x5208 JUMPI STOP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0xFDD58E EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x26A JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xDE77EB8 EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x1249C58B EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0x1D7DF191 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x1FF4CC7D EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0x438B1B4B EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0x4402D254 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0x449A52F8 EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0x4A50AA85 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0x4F558E79 EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0x5066E5C2 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x639814E0 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x6817C76C EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0x68FDDA33 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x6AD54240 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0x71E6775F EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x798F4794 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1F7 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0x9D13A5BA EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0xBD85B039 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xBE172EDF EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xCB93C48F EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x1C0 JUMPI PUSH4 0xFEFA5D72 SUB PUSH2 0xE JUMPI PUSH2 0x1ECA JUMP JUMPDEST PUSH2 0x1D26 JUMP JUMPDEST PUSH2 0x1CF2 JUMP JUMPDEST PUSH2 0x1CD5 JUMP JUMPDEST PUSH2 0x5D9 JUMP JUMPDEST PUSH2 0x1BE8 JUMP JUMPDEST PUSH2 0x1BBC JUMP JUMPDEST PUSH2 0x1A6D JUMP JUMPDEST PUSH2 0x1A4F JUMP JUMPDEST PUSH2 0x19B4 JUMP JUMPDEST PUSH2 0x190D JUMP JUMPDEST PUSH2 0x188D JUMP JUMPDEST PUSH2 0x1854 JUMP JUMPDEST PUSH2 0x17B8 JUMP JUMPDEST PUSH2 0x1573 JUMP JUMPDEST PUSH2 0x154C JUMP JUMPDEST PUSH2 0x1458 JUMP JUMPDEST PUSH2 0x130B JUMP JUMPDEST PUSH2 0x12B5 JUMP JUMPDEST PUSH2 0x1290 JUMP JUMPDEST PUSH2 0x11F1 JUMP JUMPDEST PUSH2 0x1135 JUMP JUMPDEST PUSH2 0xFFD JUMP JUMPDEST PUSH2 0xEFD JUMP JUMPDEST PUSH2 0xED2 JUMP JUMPDEST PUSH2 0xE82 JUMP JUMPDEST PUSH2 0xE66 JUMP JUMPDEST PUSH2 0xC4E JUMP JUMPDEST PUSH2 0xA1A JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST PUSH2 0x7D7 JUMP JUMPDEST PUSH2 0x7B3 JUMP JUMPDEST PUSH2 0x6D3 JUMP JUMPDEST PUSH2 0x590 JUMP JUMPDEST PUSH2 0x48D JUMP JUMPDEST PUSH2 0x303 JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SUB PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH2 0x2A4 DUP3 PUSH2 0x274 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH2 0x2D1 PUSH1 0x4 CALLDATALOAD PUSH2 0x2C8 DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1ED9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND SUB PUSH2 0x292 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 CALLDATALOAD PUSH2 0x343 DUP2 PUSH2 0x2D9 JUMP JUMPDEST AND PUSH32 0x2A55205A00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x37A JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x3DE JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x3B4 JUMPI JUMPDEST POP CODESIZE PUSH2 0x36F JUMP JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ CODESIZE PUSH2 0x3AD JUMP JUMPDEST PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP PUSH2 0x3A6 JUMP JUMPDEST PUSH1 0x0 SWAP2 SUB SLT PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x426 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x416 JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 SWAP4 PUSH2 0x472 DUP2 MLOAD DUP1 SWAP3 DUP2 DUP8 MSTORE DUP8 DUP1 DUP9 ADD SWAP2 ADD PUSH2 0x413 JUMP JUMPDEST ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x48A SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x436 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x58D JUMPI PUSH1 0x40 MLOAD SWAP1 DUP1 PUSH1 0xDC SLOAD PUSH2 0x4B0 DUP2 PUSH2 0x18BA JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0x545 JUMPI POP PUSH1 0x1 EQ PUSH2 0x4EA JUMPI JUMPDEST PUSH2 0x4E6 DUP6 PUSH2 0x4DA DUP2 DUP8 SUB DUP3 PUSH2 0xB0B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x479 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP3 POP PUSH1 0xDC DUP4 MSTORE PUSH32 0x3162B0988D4210BFF484413ED451D170A03887272177EFC0B7D000F10ABE9EDF JUMPDEST DUP3 DUP5 LT PUSH2 0x52D JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x4DA DUP3 PUSH2 0x4E6 PUSH2 0x4CA JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x512 JUMP JUMPDEST DUP7 SWAP6 POP PUSH2 0x4E6 SWAP7 SWAP4 POP PUSH1 0x20 SWAP3 POP PUSH2 0x4DA SWAP5 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 SWAP4 PUSH2 0x4CA JUMP JUMPDEST DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x33 SLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5BA JUMPI JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 PUSH1 0x3 PUSH1 0xFF PUSH1 0x45 SLOAD PUSH1 0x30 SHR AND PUSH2 0x5D1 DUP2 PUSH2 0x218F JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x5AD JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0x1284A4600000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 DUP3 DUP2 PUSH1 0x24 DUP2 ADDRESS GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x6CE JUMPI DUP1 SWAP4 PUSH2 0x649 JUMPI JUMPDEST POP POP PUSH2 0x4E6 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x436 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 DUP3 DUP5 RETURNDATACOPY PUSH2 0x65C DUP2 DUP5 PUSH2 0xB0B JUMP JUMPDEST DUP3 ADD SWAP2 DUP4 DUP2 DUP5 SUB SLT PUSH2 0x6C6 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6CA JUMPI ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x6C6 JUMPI DUP1 MLOAD SWAP2 PUSH2 0x692 DUP4 PUSH2 0xBC2 JUMP JUMPDEST SWAP4 PUSH2 0x6A0 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0xB0B JUMP JUMPDEST DUP4 DUP6 MSTORE DUP6 DUP5 DUP5 ADD ADD GT PUSH2 0x58D JUMPI POP SWAP1 PUSH2 0x6BE SWAP2 DUP5 DUP1 DUP6 ADD SWAP2 ADD PUSH2 0x413 JUMP JUMPDEST SWAP1 CODESIZE DUP1 PUSH2 0x633 JUMP JUMPDEST POP DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST PUSH2 0x20A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH2 0x6EA PUSH1 0x3A SLOAD PUSH2 0x4D2F JUMP JUMPDEST PUSH2 0x6F2 PUSH2 0x4C18 JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0xFF DUP2 PUSH1 0x30 SHR AND PUSH2 0x705 DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH2 0x789 JUMPI PUSH1 0x45 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x1 ADD DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 PUSH1 0x45 SLOAD SWAP2 DUP2 DUP4 PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI PUSH2 0x75D SWAP2 AND CALLER PUSH2 0x3766 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x5FD48F9100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x64151C7500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH4 0xFFFFFFFF PUSH1 0x45 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH2 0x75D PUSH1 0x4 CALLDATALOAD PUSH2 0x7F2 DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x802 DUP3 PUSH1 0x3A SLOAD PUSH2 0x4DB5 JUMP JUMPDEST PUSH2 0x3DE9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x58D JUMPI PUSH1 0x1 PUSH2 0x840 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x9F0 JUMPI PUSH1 0x1 PUSH2 0x884 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SLOAD NUMBER GT ISZERO PUSH2 0x9C6 JUMPI PUSH2 0x938 DUP3 PUSH2 0x975 SWAP4 BLOCKHASH SWAP1 DUP2 ISZERO PUSH2 0x978 JUMPI JUMPDEST POP DUP5 PUSH1 0x1 PUSH2 0x8CC CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SSTORE DUP5 PUSH2 0x8F9 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x45 SLOAD PUSH1 0x48 SHR PUSH2 0xFFFF AND SWAP3 PUSH2 0x932 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF PUSH1 0x45 SLOAD AND PUSH1 0x45 SSTORE JUMP JUMPDEST CALLER PUSH2 0x3EDF JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF PUSH11 0xFFFF000000000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x48 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST DUP1 RETURN JUMPDEST PUSH2 0x9A8 SWAP2 POP PUSH1 0xFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 NUMBER AND PUSH2 0x2703 JUMP JUMPDEST NUMBER DUP2 LT ISZERO PUSH2 0x9B8 JUMPI JUMPDEST BLOCKHASH CODESIZE PUSH2 0x89E JUMP JUMPDEST PUSH2 0x9C1 SWAP1 PUSH2 0x287A JUMP JUMPDEST PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x93C4A00300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x9890AF6000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x40 PUSH2 0x2710 PUSH2 0xA45 PUSH2 0xFFFF PUSH1 0x45 SLOAD PUSH1 0x38 SHR AND PUSH1 0x24 CALLDATALOAD PUSH2 0x2710 JUMP JUMPDEST DIV DUP2 MLOAD SWAP1 ADDRESS DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA96 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0xA53 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA96 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA96 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA96 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA96 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xA96 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA96 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x292 JUMPI DUP1 CALLDATALOAD SWAP2 PUSH2 0xB7B DUP4 PUSH2 0xB4C JUMP JUMPDEST SWAP3 PUSH2 0xB89 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xB0B JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP3 DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x292 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xBB3 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0xBA5 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA96 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0xC08 DUP3 PUSH2 0xBC2 JUMP JUMPDEST SWAP2 PUSH2 0xC16 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0xB0B JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x292 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x292 JUMPI DUP2 PUSH1 0x20 PUSH2 0x48A SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xBFC JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xC6B DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xC78 DUP3 PUSH2 0x274 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x44 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0xC9A SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB64 JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0xCB3 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB64 JUMP JUMPDEST SWAP1 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0xCCC SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC33 JUMP JUMPDEST SWAP3 PUSH2 0xCD6 CALLER PUSH2 0x500B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP5 AND SWAP5 CALLER DUP7 EQ DUP1 ISZERO PUSH2 0xE28 JUMPI JUMPDEST PUSH2 0xD03 SWAP1 PUSH2 0x2D4C JUMP JUMPDEST PUSH2 0xD10 DUP4 MLOAD DUP6 MLOAD EQ PUSH2 0x35BC JUMP JUMPDEST DUP7 AND PUSH2 0xD1D DUP2 ISZERO ISZERO PUSH2 0x2DBD JUMP JUMPDEST PUSH2 0xD29 DUP5 DUP5 DUP10 DUP9 PUSH2 0x32C3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0xDE4 JUMPI DUP1 PUSH2 0xD43 PUSH2 0xDDF SWAP3 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0xDD8 PUSH2 0xDD0 DUP12 PUSH2 0xD77 PUSH2 0xD58 DUP7 DUP13 PUSH2 0x2073 JUMP JUMPDEST MLOAD SWAP5 DUP13 PUSH2 0xDBF DUP8 PUSH2 0xD9C DUP4 PUSH2 0xD77 DUP7 PUSH1 0x0 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xDA9 DUP3 DUP3 LT ISZERO PUSH2 0x2E2E JUMP JUMPDEST SUB SWAP2 PUSH2 0xD77 DUP5 PUSH1 0x0 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x0 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP3 SLOAD PUSH2 0x2703 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x2017 JUMP JUMPDEST PUSH2 0xD2C JUMP JUMPDEST POP SWAP4 DUP7 SWAP2 SWAP5 PUSH2 0x75D SWAP7 PUSH1 0x40 MLOAD PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB CALLER SWAP2 DUP1 PUSH2 0xE1F DUP11 DUP11 DUP4 PUSH2 0x362D JUMP JUMPDEST SUB SWAP1 LOG4 CALLER PUSH2 0x36EB JUMP JUMPDEST POP PUSH2 0xD03 PUSH2 0xE36 CALLER DUP8 PUSH2 0x2CAE JUMP JUMPDEST SWAP1 POP PUSH2 0xCFA JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xE55 DUP2 PUSH2 0x274 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD PUSH2 0x48A DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH2 0x75D PUSH2 0xE7D PUSH2 0xE75 CALLDATASIZE PUSH2 0xE3D JUMP JUMPDEST DUP2 SWAP4 SWAP2 PUSH2 0x4A51 JUMP JUMPDEST PUSH2 0x3A9F JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xE9A DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x292 JUMPI PUSH2 0xEBE PUSH2 0x75D SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB64 JUMP JUMPDEST SWAP1 PUSH2 0xECD PUSH1 0x3A SLOAD DUP4 MLOAD SWAP1 PUSH2 0x4DB5 JUMP JUMPDEST PUSH2 0x409A JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH2 0x75D PUSH1 0x4 CALLDATALOAD PUSH2 0xEED DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xE7D DUP3 PUSH1 0x3A SLOAD PUSH2 0x4DB5 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xF15 DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x292 JUMPI PUSH2 0xF39 PUSH2 0x75D SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB64 JUMP JUMPDEST SWAP1 PUSH2 0xECD PUSH1 0x44 CALLDATALOAD PUSH2 0xF49 DUP2 PUSH2 0x274 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x4A51 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x292 JUMPI DUP1 CALLDATALOAD SWAP2 PUSH2 0xF67 DUP4 PUSH2 0xB4C JUMP JUMPDEST SWAP3 PUSH2 0xF75 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xB0B JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP3 DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x292 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xF9F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0xFAD DUP2 PUSH2 0x274 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xF91 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0xFD8 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xFCA JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x48A SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xFB8 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x102F SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF50 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x1048 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB64 JUMP JUMPDEST SWAP1 DUP1 MLOAD DUP3 MLOAD SUB PUSH2 0x10CB JUMPI PUSH2 0x105C DUP2 MLOAD PUSH2 0x1F99 JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x10BD JUMPI DUP1 PUSH2 0x10A8 PUSH2 0x1097 PUSH2 0x107D PUSH2 0x10B8 SWAP5 DUP8 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x10A1 DUP4 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1ED9 JUMP JUMPDEST PUSH2 0x10B2 DUP3 DUP8 PUSH2 0x2073 JUMP JUMPDEST MSTORE PUSH2 0x2017 JUMP JUMPDEST PUSH2 0x1060 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x4E6 DUP7 DUP3 PUSH2 0xFEC JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH2 0x1161 PUSH1 0x4 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x292 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x292 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x6 SHL ADD ADD GT PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH1 0xE4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH2 0xFFFF DUP2 AND SUB PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH2 0x104 CALLDATALOAD SWAP1 PUSH2 0x2A4 DUP3 PUSH2 0x11AF JUMP JUMPDEST DUP1 ISZERO ISZERO SUB PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH2 0x124 CALLDATALOAD SWAP1 PUSH2 0x2A4 DUP3 PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0x144 CALLDATALOAD SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x292 JUMPI JUMP JUMPDEST PUSH2 0x160 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x121F SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC33 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x1237 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC33 JUMP JUMPDEST SWAP1 PUSH1 0xA4 CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x292 JUMPI PUSH2 0x1253 PUSH2 0x75D SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x116B JUMP JUMPDEST PUSH2 0x125B PUSH2 0x297 JUMP JUMPDEST PUSH2 0x1263 PUSH2 0x119C JUMP JUMPDEST SWAP2 PUSH2 0x126C PUSH2 0x11BB JUMP JUMPDEST SWAP4 PUSH2 0x1275 PUSH2 0x11D3 JUMP JUMPDEST SWAP6 PUSH2 0x127E PUSH2 0x11E1 JUMP JUMPDEST SWAP8 PUSH1 0x84 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x219E JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH2 0xFFFF PUSH1 0x45 SLOAD PUSH1 0x48 SHR AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH1 0x3A SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x292 JUMPI PUSH2 0x12FE SWAP2 PUSH1 0x4 ADD PUSH2 0xF50 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0x48A DUP2 PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0x1314 CALLDATASIZE PUSH2 0x12D3 JUMP JUMPDEST SWAP1 PUSH2 0x133D PUSH2 0x1320 PUSH2 0x4255 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x420A JUMP JUMPDEST PUSH1 0x45 DUP1 SLOAD SWAP3 PUSH1 0xFF DUP5 PUSH1 0x30 SHR AND PUSH2 0x1352 DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH2 0x789 JUMPI PUSH2 0x136C SWAP4 DUP4 MLOAD PUSH4 0xFFFFFFFF SWAP6 DUP7 SWAP2 DUP3 DUP5 AND PUSH2 0x2703 JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI DUP3 MLOAD SWAP3 PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1385 JUMPI STOP JUMPDEST DUP1 DUP4 PUSH2 0x13F3 PUSH2 0x1399 PUSH2 0x107D PUSH1 0x1 SWAP6 DUP8 PUSH2 0x2073 JUMP JUMPDEST DUP10 PUSH2 0x13B7 PUSH2 0x13AB DUP11 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x13EC DUP2 PUSH4 0xFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST AND SWAP1 PUSH2 0x3766 JUMP JUMPDEST PUSH2 0x13FE JUMPI JUMPDEST ADD PUSH2 0x137C JUMP JUMPDEST PUSH2 0x1453 PUSH2 0x1428 PUSH2 0x1412 DUP8 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x13F8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1470 DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH2 0x147D DUP3 PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0x1488 PUSH1 0x3A SLOAD PUSH2 0x4D2F JUMP JUMPDEST PUSH2 0x1490 PUSH2 0x4C18 JUMP JUMPDEST PUSH1 0x45 SLOAD SWAP1 PUSH1 0x3 PUSH1 0xFF DUP4 PUSH1 0x30 SHR AND PUSH2 0x14A6 DUP2 PUSH2 0x218F JUMP JUMPDEST SUB PUSH2 0x789 JUMPI PUSH1 0x45 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF SWAP4 DUP5 AND PUSH1 0x1 ADD DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 PUSH1 0x45 SLOAD SWAP3 DUP2 DUP5 PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI PUSH2 0x14FF SWAP3 AND SWAP1 PUSH2 0x3766 JUMP JUMPDEST PUSH2 0x1532 JUMPI JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x152F PUSH2 0x1519 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x44 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE STOP JUMPDEST PUSH2 0x1547 PUSH2 0x1428 PUSH2 0x1412 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1504 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH2 0x2D1 PUSH1 0x4 CALLDATALOAD PUSH2 0x156E DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH2 0x2C4B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP1 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x15A0 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xF50 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x15B8 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xB64 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 PUSH2 0x15C5 DUP5 PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0x15CD PUSH2 0x42D3 JUMP JUMPDEST DUP1 MLOAD SWAP3 PUSH1 0x45 DUP1 SLOAD PUSH1 0x2 PUSH1 0xFF DUP3 PUSH1 0x30 SHR AND PUSH2 0x15E6 DUP2 PUSH2 0x218F JUMP JUMPDEST SUB PUSH2 0x176D JUMPI PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP2 AND SWAP1 DUP3 PUSH2 0x1601 DUP9 MLOAD DUP5 PUSH2 0x2703 JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x1744 JUMPI DUP6 MLOAD DUP8 SUB PUSH2 0x171B JUMPI SWAP1 PUSH2 0x164E SWAP2 DUP2 DUP9 AND ADD AND PUSH4 0xFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP6 DUP2 LT PUSH2 0x165A JUMPI STOP JUMPDEST PUSH2 0x1664 DUP2 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD ISZERO DUP1 ISZERO PUSH2 0x16F0 JUMPI JUMPDEST PUSH2 0x16C7 JUMPI DUP1 DUP8 PUSH2 0x1696 PUSH2 0x1685 PUSH2 0x107D PUSH1 0x1 SWAP6 DUP10 PUSH2 0x2073 JUMP JUMPDEST PUSH2 0x168F DUP5 DUP11 PUSH2 0x2073 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3766 JUMP JUMPDEST PUSH2 0x16A1 JUMPI JUMPDEST ADD PUSH2 0x1651 JUMP JUMPDEST PUSH2 0x16C2 PUSH2 0x1428 PUSH2 0x16B1 DUP4 DUP10 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x169B JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH32 0x3F6CC76800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP PUSH2 0x16FB DUP2 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD DUP3 SLOAD PUSH2 0x1715 SWAP1 PUSH1 0x58 SHR PUSH4 0xFFFFFFFF AND JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST LT PUSH2 0x166D JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x991F339F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x5FD48F9100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH32 0x64151C7500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x17AE PUSH1 0x40 SWAP3 SWAP6 SWAP5 SWAP4 SWAP6 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0xFB8 JUMP JUMPDEST SWAP5 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x40 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x4 CALLDATALOAD SWAP1 DUP2 DUP4 LT PUSH2 0x1846 JUMPI PUSH1 0x1 SWAP3 DUP1 DUP5 ADD SWAP1 DUP2 DUP6 GT PUSH2 0x1841 JUMPI DUP4 DUP6 SWAP2 SUB ADD SWAP1 DUP2 GT PUSH2 0x1841 JUMPI PUSH2 0x17FC DUP2 PUSH2 0x1F99 JUMP JUMPDEST SWAP3 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x181E JUMPI POP POP POP PUSH2 0x4E6 SWAP3 POP JUMPDEST MLOAD SWAP2 DUP3 SWAP2 TIMESTAMP SWAP1 NUMBER SWAP1 DUP5 PUSH2 0x1796 JUMP JUMPDEST DUP1 DUP7 SWAP2 DUP4 ADD PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE DUP5 PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x183A DUP3 DUP9 PUSH2 0x2073 JUMP JUMPDEST MSTORE ADD PUSH2 0x1800 JUMP JUMPDEST PUSH2 0x1FE8 JUMP JUMPDEST PUSH2 0x4E6 SWAP3 POP PUSH1 0x60 SWAP2 POP PUSH2 0x1810 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH2 0x186F PUSH2 0x20AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH2 0x75D PUSH1 0x4 CALLDATALOAD PUSH2 0x18B4 PUSH1 0x24 CALLDATALOAD PUSH2 0x18AE DUP2 PUSH2 0x274 JUMP JUMPDEST DUP3 PUSH2 0x4A51 JUMP JUMPDEST CALLER PUSH2 0x3A9F JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1903 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x18D4 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x18C9 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x58D JUMPI PUSH1 0x40 MLOAD SWAP1 DUP1 PUSH1 0xDD SLOAD PUSH2 0x1930 DUP2 PUSH2 0x18BA JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0x545 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1959 JUMPI PUSH2 0x4E6 DUP6 PUSH2 0x4DA DUP2 DUP8 SUB DUP3 PUSH2 0xB0B JUMP JUMPDEST SWAP3 POP PUSH1 0xDD DUP4 MSTORE PUSH32 0xAC507B9F8BF86AD8BB770F71CD2B1992902AE0314D93FC0F2BB011D70E796226 JUMPDEST DUP3 DUP5 LT PUSH2 0x199C JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x4DA DUP3 PUSH2 0x4E6 PUSH2 0x4CA JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1981 JUMP JUMPDEST PUSH2 0x100 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x19CD DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x292 JUMPI PUSH2 0x19EE SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB64 JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH2 0x19FB DUP2 PUSH2 0x11C9 JUMP JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH2 0x1A08 DUP3 PUSH2 0x11C9 JUMP JUMPDEST PUSH1 0xE4 CALLDATALOAD SWAP5 DUP5 DUP7 GT PUSH2 0x292 JUMPI CALLDATASIZE PUSH1 0x23 DUP8 ADD SLT ISZERO PUSH2 0x292 JUMPI DUP6 PUSH1 0x4 ADD CALLDATALOAD SWAP5 DUP6 GT PUSH2 0x292 JUMPI CALLDATASIZE PUSH1 0x24 DUP7 DUP9 ADD ADD GT PUSH2 0x292 JUMPI PUSH1 0x24 PUSH2 0x75D SWAP7 ADD SWAP4 PUSH1 0xA4 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD SWAP3 PUSH2 0x430F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH2 0x75D PUSH1 0x4 CALLDATALOAD PUSH2 0x18B4 DUP2 PUSH1 0x3A SLOAD PUSH2 0x4DB5 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1A8A DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x1A96 DUP2 PUSH2 0x11C9 JUMP JUMPDEST PUSH2 0x1A9F DUP3 PUSH2 0x500B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP2 DUP3 CALLER EQ PUSH2 0x1B52 JUMPI DUP2 PUSH2 0x1AF0 PUSH2 0x1B20 SWAP3 PUSH2 0xD77 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x79 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0xFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP4 SLOAD AND SWAP2 ISZERO ISZERO AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE CALLER SWAP1 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP1 PUSH1 0x20 SWAP1 LOG3 STOP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1BF1 CALLDATASIZE PUSH2 0x12D3 JUMP JUMPDEST SWAP1 PUSH2 0x1BFA PUSH2 0x42D3 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x45 SLOAD SWAP3 PUSH1 0xFF DUP5 PUSH1 0x30 SHR AND SWAP4 PUSH2 0x1C12 DUP6 PUSH2 0x218F JUMP JUMPDEST PUSH1 0x1 DUP1 SWAP6 SUB PUSH2 0x789 JUMPI PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 DUP2 PUSH2 0x1C2F DUP8 DUP6 PUSH2 0x2703 JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI PUSH2 0x1C73 SWAP2 DUP2 DUP7 AND ADD AND PUSH4 0xFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x1C7C NUMBER PUSH2 0x28A7 JUMP JUMPDEST BLOCKHASH PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1C89 JUMPI STOP JUMPDEST DUP1 PUSH2 0x1C95 DUP8 SWAP3 DUP5 PUSH2 0x400B JUMP JUMPDEST DUP5 PUSH2 0x1CAC DUP3 PUSH2 0x1CA7 PUSH2 0x107D DUP7 DUP12 PUSH2 0x2073 JUMP JUMPDEST PUSH2 0x3766 JUMP JUMPDEST PUSH2 0x1CB8 JUMPI JUMPDEST POP ADD PUSH2 0x1C80 JUMP JUMPDEST PUSH2 0x1428 PUSH2 0x1CCF SWAP2 PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST CODESIZE PUSH2 0x1CB1 JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x3E8 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x20 PUSH2 0x1161 PUSH1 0x4 CALLDATALOAD PUSH2 0x1D14 DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1D21 DUP3 PUSH2 0x274 JUMP JUMPDEST PUSH2 0x2CAE JUMP JUMPDEST CALLVALUE PUSH2 0x292 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x292 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1D43 DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x1D4F DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x292 JUMPI PUSH2 0x1D79 PUSH2 0x975 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC33 JUMP JUMPDEST SWAP3 PUSH2 0x1D83 CALLER PUSH2 0x500B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 DUP2 AND SWAP7 CALLER DUP9 EQ DUP1 ISZERO PUSH2 0x1EB5 JUMPI JUMPDEST PUSH2 0x1DB0 SWAP1 PUSH2 0x2D4C JUMP JUMPDEST DUP3 AND PUSH2 0x1DBD DUP2 ISZERO ISZERO PUSH2 0x2DBD JUMP JUMPDEST PUSH2 0x1DDA PUSH2 0x1DC9 DUP6 PUSH2 0x31C6 JUMP JUMPDEST PUSH2 0x1DD2 DUP8 PUSH2 0x31C6 JUMP JUMPDEST SWAP1 DUP6 DUP6 PUSH2 0x32C3 JUMP JUMPDEST PUSH1 0x0 SWAP8 DUP5 DUP10 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE DUP6 PUSH2 0x1E13 DUP5 PUSH1 0x40 DUP13 KECCAK256 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x1E20 DUP3 DUP3 LT ISZERO PUSH2 0x2E2E JUMP JUMPDEST DUP7 DUP12 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE SUB PUSH2 0x1E56 DUP5 PUSH1 0x40 DUP13 KECCAK256 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x1E6F DUP5 PUSH2 0xD77 DUP8 PUSH1 0x0 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1E7A DUP8 DUP3 SLOAD PUSH2 0x2703 JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE CALLER SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 LOG4 CALLER PUSH2 0x2FC3 JUMP JUMPDEST POP PUSH2 0x1DB0 PUSH2 0x1EC3 CALLER DUP5 PUSH2 0x2CAE JUMP JUMPDEST SWAP1 POP PUSH2 0x1DA7 JUMP JUMPDEST PUSH2 0x75D PUSH2 0x802 PUSH2 0xE75 CALLDATASIZE PUSH2 0xE3D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x1F2F JUMPI PUSH2 0x1F2B SWAP2 PUSH1 0x0 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH2 0x1FA3 DUP3 PUSH2 0xB4C JUMP JUMPDEST PUSH2 0x1FB0 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0xB0B JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x1FDE DUP3 SWAP5 PUSH2 0xB4C JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x1841 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x2087 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x2044 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x292 JUMPI MLOAD PUSH2 0x48A DUP2 PUSH2 0x274 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x40 MLOAD PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x2130 JUMPI JUMPDEST POP PUSH2 0x212C JUMPI POP JUMP JUMPDEST SWAP2 POP JUMP JUMPDEST PUSH2 0x2152 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x2159 JUMPI JUMPDEST PUSH2 0x214A DUP2 DUP4 PUSH2 0xB0B JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x208C JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x2124 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2140 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x4 GT ISZERO PUSH2 0x2199 JUMPI JUMP JUMPDEST PUSH2 0x2160 JUMP JUMPDEST SWAP10 SWAP8 SWAP6 SWAP4 SWAP2 SWAP11 SWAP9 SWAP7 SWAP5 SWAP3 SWAP1 SWAP11 PUSH1 0x0 SLOAD SWAP12 PUSH1 0xFF DUP14 PUSH1 0x8 SHR AND ISZERO DUP1 SWAP14 DUP2 SWAP15 PUSH2 0x232C JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x230C JUMPI JUMPDEST POP ISZERO PUSH2 0x22A2 JUMPI PUSH2 0x220A SWAP12 DUP14 PUSH2 0x2201 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x0 SLOAD AND OR PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x226C JUMPI PUSH2 0x28E1 JUMP JUMPDEST PUSH2 0x2210 JUMPI JUMP JUMPDEST PUSH2 0x223D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF PUSH1 0x0 SLOAD AND PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x229D PUSH2 0x100 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF PUSH1 0x0 SLOAD AND OR PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x28E1 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP2 POP DUP2 PUSH2 0x231E JUMPI JUMPDEST POP CODESIZE PUSH2 0x21C6 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH1 0xFF AND EQ CODESIZE PUSH2 0x2317 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF DUP3 AND LT SWAP2 POP PUSH2 0x21BF JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x2346 JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0xDC DUP3 MSTORE PUSH32 0x3162B0988D4210BFF484413ED451D170A03887272177EFC0B7D000F10ABE9EDF SWAP1 PUSH1 0x20 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP4 ADD SWAP5 LT PUSH2 0x23A1 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x2396 JUMPI POP POP POP JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x238A JUMP JUMPDEST SWAP1 SWAP3 POP DUP3 SWAP1 PUSH2 0x2381 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x23B7 JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0xDD DUP3 MSTORE PUSH32 0xAC507B9F8BF86AD8BB770F71CD2B1992902AE0314D93FC0F2BB011D70E796226 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP4 ADD SWAP5 LT PUSH2 0x2412 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x2407 JUMPI POP POP POP JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x23FB JUMP JUMPDEST SWAP1 SWAP3 POP DUP3 SWAP1 PUSH2 0x23F2 JUMP JUMPDEST SWAP1 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA96 JUMPI PUSH2 0x2442 DUP2 PUSH2 0x243D PUSH1 0xDC SLOAD PUSH2 0x18BA JUMP JUMPDEST PUSH2 0x233A JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x249B JUMPI POP DUP2 SWAP3 SWAP4 PUSH1 0x0 SWAP3 PUSH2 0x2490 JUMPI JUMPDEST POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH1 0x1 SHL SWAP3 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0xDC SSTORE JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0x245C JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 AND SWAP5 PUSH2 0x24EC PUSH1 0xDC PUSH1 0x0 MSTORE PUSH32 0x3162B0988D4210BFF484413ED451D170A03887272177EFC0B7D000F10ABE9EDF SWAP1 JUMP JUMPDEST SWAP3 PUSH1 0x0 SWAP1 JUMPDEST DUP8 DUP3 LT PUSH2 0x2547 JUMPI POP POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x2510 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0xDC SSTORE JUMP JUMPDEST ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x2505 JUMP JUMPDEST DUP1 PUSH1 0x1 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0x24F1 JUMP JUMPDEST SWAP1 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA96 JUMPI PUSH2 0x2585 DUP2 PUSH2 0x2580 PUSH1 0xDD SLOAD PUSH2 0x18BA JUMP JUMPDEST PUSH2 0x23AB JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x25DE JUMPI POP DUP2 SWAP3 SWAP4 PUSH1 0x0 SWAP3 PUSH2 0x25D3 JUMPI JUMPDEST POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH1 0x1 SHL SWAP3 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0xDD SSTORE JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0x259F JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 AND SWAP5 PUSH2 0x262F PUSH1 0xDD PUSH1 0x0 MSTORE PUSH32 0xAC507B9F8BF86AD8BB770F71CD2B1992902AE0314D93FC0F2BB011D70E796226 SWAP1 JUMP JUMPDEST SWAP3 PUSH1 0x0 SWAP1 JUMPDEST DUP8 DUP3 LT PUSH2 0x268A JUMPI POP POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x2653 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0xDD SSTORE JUMP JUMPDEST ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x2648 JUMP JUMPDEST DUP1 PUSH1 0x1 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0x2634 JUMP JUMPDEST PUSH1 0x3A SSTORE JUMP JUMPDEST PUSH2 0x26B0 DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF PUSH7 0xFF000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x30 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x2087 JUMPI PUSH1 0x6 SHL ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH2 0x48A DUP2 PUSH2 0x11AF JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1841 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1841 JUMPI JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD PUSH2 0x2744 DUP2 PUSH2 0x274 JUMP JUMPDEST AND PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 PUSH22 0xFFFF0000000000000000000000000000000000000000 PUSH1 0x20 DUP6 SLOAD SWAP5 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP8 AND OR DUP8 SSTORE ADD CALLDATALOAD PUSH2 0x27B4 DUP2 PUSH2 0x11AF JUMP JUMPDEST PUSH1 0xA0 SHL AND SWAP3 AND OR OR SWAP1 SSTORE JUMP JUMPDEST PUSH9 0x10000000000000000 DUP3 GT PUSH2 0xA96 JUMPI PUSH1 0x38 SLOAD DUP3 PUSH1 0x38 SSTORE DUP1 DUP4 LT PUSH2 0x2833 JUMPI JUMPDEST POP PUSH1 0x38 PUSH1 0x0 MSTORE PUSH32 0x38395C5DCEADE9603479B177B68959049485DF8AA97B39F3533039AF5F456199 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x2817 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 DUP3 PUSH2 0x2827 DUP4 SWAP5 DUP7 PUSH2 0x2723 JUMP JUMPDEST ADD SWAP3 ADD SWAP3 ADD SWAP2 SWAP1 PUSH2 0x280A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x38 DUP2 MSTORE DUP4 PUSH32 0x38395C5DCEADE9603479B177B68959049485DF8AA97B39F3533039AF5F456199 SWAP3 DUP4 ADD SWAP3 ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x286F JUMPI POP POP PUSH2 0x27DF JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2861 JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 ADD SWAP2 DUP3 GT PUSH2 0x1841 JUMPI JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD SWAP2 DUP3 GT PUSH2 0x1841 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1841 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x28F8 PUSH2 0x28FD SWAP3 SWAP14 SWAP13 SWAP9 SWAP10 SWAP4 SWAP8 SWAP14 SWAP11 SWAP7 SWAP11 PUSH2 0x241C JUMP JUMPDEST PUSH2 0x255F JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND ISZERO PUSH2 0x2C21 JUMPI DUP2 ISZERO SWAP1 DUP2 ISZERO DUP1 PUSH2 0x2C18 JUMPI JUMPDEST PUSH2 0x2BEE JUMPI PUSH2 0x1388 PUSH2 0xFFFF DUP7 AND GT PUSH2 0x2BC4 JUMPI PUSH2 0x296A SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF PUSH15 0xFFFFFFFF0000000000000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x58 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST ISZERO PUSH2 0x2BB3 JUMPI POP DUP1 PUSH2 0x2BA3 JUMPI POP PUSH2 0x297F DUP4 PUSH2 0x218F JUMP JUMPDEST PUSH1 0x3 DUP4 SUB PUSH2 0x2B79 JUMPI PUSH2 0x2993 PUSH2 0x29CE SWAP3 PUSH1 0x3A SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF PUSH9 0xFFFF00000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x38 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x29D7 DUP2 PUSH2 0x218F JUMP JUMPDEST DUP1 PUSH2 0x2B6A JUMPI JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x2AE0 JUMPI JUMPDEST POP PUSH1 0x1 DUP1 SWAP3 ISZERO ISZERO EQ PUSH2 0x2A9B JUMPI JUMPDEST DUP4 PUSH2 0x2A13 JUMPI JUMPDEST POP POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 SWAP1 JUMPDEST DUP6 DUP3 LT PUSH2 0x2A67 JUMPI POP POP PUSH2 0x251C SWAP3 SWAP4 PUSH2 0x2A30 SWAP2 PUSH2 0x27C0 JUMP JUMPDEST GT PUSH2 0x2A3D JUMPI DUP1 CODESIZE DUP1 PUSH2 0x2A0D JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xFE0C06B700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x2A93 DUP3 SWAP5 PUSH2 0x2A8D PUSH2 0x2A86 PUSH1 0x20 PUSH2 0x2A80 DUP7 SWAP8 DUP13 DUP11 PUSH2 0x26E9 JUMP JUMPDEST ADD PUSH2 0x26F9 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2703 JUMP JUMPDEST SWAP4 ADD SWAP1 PUSH2 0x2A19 JUMP JUMPDEST PUSH2 0x2ADB PUSH17 0x100000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x2A07 JUMP JUMPDEST PUSH2 0x2B64 SWAP1 PUSH2 0x2B23 PUSH16 0x1000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0x40 SLOAD AND OR PUSH1 0x40 SSTORE JUMP JUMPDEST CODESIZE PUSH2 0x29FA JUMP JUMPDEST PUSH2 0x2B73 SWAP1 PUSH2 0x26A7 JUMP JUMPDEST CODESIZE PUSH2 0x29DD JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x27BFEAFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x29CE SWAP3 PUSH2 0x26A2 PUSH2 0x2993 SWAP3 PUSH1 0x34 SSTORE JUMP JUMPDEST PUSH1 0x33 SSTORE POP PUSH2 0x29CE SWAP2 PUSH2 0x2993 SWAP1 PUSH1 0x3A SSTORE JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x44B93BA400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x4CFF63B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP4 ISZERO ISZERO PUSH2 0x2914 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB8A9EFFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 ISZERO PUSH2 0x292 JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0xDE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xFF PUSH1 0x45 SLOAD PUSH1 0x30 SHR AND PUSH2 0x2C8B DUP2 PUSH2 0x218F JUMP JUMPDEST EQ PUSH2 0x2C94 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1841 JUMPI SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 AND PUSH20 0x88899DC0B84C6E726840E00DFB94ABC6248825EC DUP2 EQ PUSH2 0x2D43 JUMPI PUSH20 0x1E0049783F008A0085193E00003D00CD54003C71 EQ PUSH2 0x2D3B JUMPI PUSH1 0xFF SWAP3 PUSH2 0x2D36 SWAP3 AND PUSH1 0x0 MSTORE PUSH1 0x79 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND SWAP1 JUMP JUMPDEST POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x2D53 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6572206F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x2DC4 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ISZERO PUSH2 0x2E35 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72207472616E7366657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x292 JUMPI MLOAD PUSH2 0x48A DUP2 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0x48A SWAP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA0 SWAP4 AND DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x80 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x436 JUMP JUMPDEST SWAP2 SWAP3 PUSH2 0x48A SWAP6 SWAP5 SWAP2 PUSH1 0xA0 SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP6 MSTORE AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x80 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x436 JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x3 RETURNDATASIZE GT PUSH2 0x2F43 JUMPI JUMP JUMPDEST SWAP1 POP PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY PUSH1 0x0 MLOAD PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH1 0x3 NOT SWAP2 DUP3 RETURNDATASIZE ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT RETURNDATASIZE PUSH1 0x24 DUP5 ADD GT OR PUSH2 0x2FB2 JUMPI DUP2 DUP5 ADD SWAP5 DUP6 MLOAD SWAP4 DUP5 GT PUSH2 0x2FBA JUMPI RETURNDATASIZE DUP6 ADD ADD PUSH1 0x20 DUP5 DUP8 ADD ADD GT PUSH2 0x2FB2 JUMPI POP PUSH2 0x48A SWAP3 SWAP2 ADD PUSH1 0x20 ADD SWAP1 PUSH2 0xB0B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP5 SWAP4 SWAP2 SWAP1 SWAP3 DUP2 EXTCODESIZE PUSH2 0x2FD7 JUMPI JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 SWAP6 PUSH2 0x302C PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP14 DUP15 DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x2EF4 JUMP JUMPDEST SUB SWAP4 AND GAS CALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x3196 JUMPI JUMPDEST POP PUSH2 0x3104 JUMPI POP POP PUSH1 0x1 PUSH2 0x304B PUSH2 0x2F36 JUMP JUMPDEST PUSH4 0x8C379A0 EQ PUSH2 0x30D5 JUMPI JUMPDEST PUSH2 0x3066 JUMPI JUMPDEST CODESIZE DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2FCF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0x30DD PUSH2 0x2F54 JUMP JUMPDEST DUP1 PUSH2 0x30E8 JUMPI POP PUSH2 0x3056 JUMP JUMPDEST PUSH2 0x30D1 SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x479 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ PUSH2 0x305B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6420746F6B656E73000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH2 0x31B8 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x31BF JUMPI JUMPDEST PUSH2 0x31B0 DUP2 DUP4 PUSH2 0xB0B JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2E9F JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x303A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x31A6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x31D3 DUP3 PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD PUSH1 0x20 CALLDATASIZE DUP3 CALLDATACOPY DUP3 MLOAD ISZERO PUSH2 0x2087 JUMPI MSTORE SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x3254 JUMPI POP POP SWAP1 PUSH2 0x3206 SWAP2 DUP4 PUSH2 0x3468 JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x48 SHR PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0x321A JUMPI POP POP JUMP JUMPDEST PUSH2 0x3223 SWAP1 PUSH2 0x2C4B JUMP JUMPDEST GT PUSH2 0x322A JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x550FFA9C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x3278 JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0x31F2 JUMP JUMPDEST PUSH2 0x3282 DUP2 DUP6 PUSH2 0x2073 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x32AE DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0xDE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP3 SLOAD SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1841 JUMPI SWAP1 SWAP2 SSTORE PUSH2 0x3270 JUMP JUMPDEST SWAP4 SWAP3 SWAP1 SWAP2 SWAP4 DUP5 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x32E3 JUMPI POP POP SWAP4 DUP3 PUSH2 0x3206 SWAP4 SWAP5 SWAP6 PUSH2 0x3535 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP5 AND PUSH2 0x3350 JUMPI JUMPDEST PUSH1 0x1 SWAP2 DUP7 AND PUSH2 0x3311 JUMPI JUMPDEST ADD PUSH2 0x32CD JUMP JUMPDEST PUSH2 0x331B DUP2 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0x3349 PUSH2 0xDD0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0xDE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x330B JUMP JUMPDEST PUSH2 0x3367 PUSH2 0x3360 PUSH2 0x16B1 DUP4 DUP12 PUSH2 0x2073 JUMP JUMPDEST SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x33E8 JUMPI JUMPDEST PUSH2 0x33BE JUMPI PUSH1 0x1 SWAP2 PUSH2 0x337F DUP3 DUP8 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0x33B5 PUSH2 0x33AD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0xDE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP3 SLOAD PUSH2 0x28D4 JUMP JUMPDEST SWAP1 SSTORE SWAP2 POP PUSH2 0x3301 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x765C862B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP PUSH1 0x45 SLOAD PUSH1 0x80 SHR PUSH1 0xFF AND PUSH2 0x336E JUMP JUMPDEST ISZERO PUSH2 0x33FE JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E20616D6F756E74206578636565647320746F74 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C537570706C79000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 SWAP1 SWAP3 PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x34AC JUMPI DUP1 PUSH2 0x3485 PUSH2 0x34A7 SWAP3 DUP6 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0xDD8 PUSH2 0xDD0 PUSH2 0x3496 DUP5 DUP11 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x346E JUMP JUMPDEST POP SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x34CE JUMPI POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2A0D JUMPI DUP1 PUSH2 0x34E8 PUSH2 0x3530 SWAP3 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0x352A PUSH2 0x34F6 DUP4 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0x350B DUP4 PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x3518 DUP3 DUP3 LT ISZERO PUSH2 0x33F7 JUMP JUMPDEST SUB SWAP2 PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x2017 JUMP JUMPDEST PUSH2 0x34D1 JUMP JUMPDEST SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND ISZERO PUSH2 0x3582 JUMPI JUMPDEST AND ISZERO PUSH2 0x3563 JUMPI POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2A0D JUMPI DUP1 PUSH2 0x34E8 PUSH2 0x357D SWAP3 DUP7 PUSH2 0x2073 JUMP JUMPDEST PUSH2 0x3566 JUMP JUMPDEST SWAP3 SWAP1 PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x35B4 JUMPI DUP1 PUSH2 0x359E PUSH2 0x35AF SWAP3 DUP7 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH2 0xDD8 PUSH2 0xDD0 PUSH2 0x3496 DUP5 DUP12 PUSH2 0x2073 JUMP JUMPDEST PUSH2 0x3587 JUMP JUMPDEST POP SWAP1 SWAP3 PUSH2 0x3558 JUMP JUMPDEST ISZERO PUSH2 0x35C3 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 SWAP2 PUSH2 0x3644 PUSH2 0x48A SWAP4 PUSH1 0x40 DUP5 MSTORE PUSH1 0x40 DUP5 ADD SWAP1 PUSH2 0xFB8 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xFB8 JUMP JUMPDEST SWAP3 PUSH2 0x368F PUSH2 0x48A SWAP6 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x369D SWAP5 AND DUP7 MSTORE PUSH1 0x0 PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD SWAP1 PUSH2 0xFB8 JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xFB8 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x436 JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0x48A SWAP6 SWAP4 PUSH2 0x368F SWAP2 PUSH2 0x369D SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP9 MSTORE AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD SWAP1 PUSH2 0xFB8 JUMP JUMPDEST SWAP5 SWAP4 SWAP2 SWAP1 SWAP3 DUP2 EXTCODESIZE PUSH2 0x36FE JUMPI POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 SWAP6 PUSH2 0x302C PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP14 DUP15 DUP8 MSTORE PUSH1 0x4 DUP8 ADD PUSH2 0x36AB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x3760 DUP3 PUSH2 0xAB7 JUMP JUMPDEST PUSH1 0x0 DUP3 MSTORE JUMP JUMPDEST PUSH2 0x2A4 SWAP2 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x3777 DUP4 PUSH2 0xAB7 JUMP JUMPDEST PUSH1 0x0 DUP4 MSTORE PUSH2 0x37F1 JUMP JUMPDEST ISZERO PUSH2 0x3787 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP3 PUSH2 0x3815 DUP5 ISZERO ISZERO PUSH2 0x3780 JUMP JUMPDEST PUSH2 0x381E DUP3 PUSH2 0x31C6 JUMP JUMPDEST PUSH1 0x40 SWAP5 DUP6 MLOAD SWAP2 PUSH2 0x382D DUP4 PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x1 DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 DUP2 ADD SWAP2 DUP5 CALLDATASIZE DUP5 CALLDATACOPY DUP2 MLOAD ISZERO PUSH2 0x2087 JUMPI PUSH1 0x1 PUSH2 0x3850 SWAP4 MSTORE DUP8 PUSH2 0x31EB JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP5 DUP7 MSTORE PUSH1 0x78 DUP4 MSTORE PUSH2 0x3886 DUP2 DUP9 DUP9 KECCAK256 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1841 JUMPI SSTORE DUP2 DUP7 DUP9 MLOAD DUP8 DUP2 MSTORE PUSH1 0x1 DUP7 DUP3 ADD MSTORE PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP11 CALLER SWAP3 LOG4 EXTCODESIZE PUSH2 0x38D4 JUMPI POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3912 DUP3 SWAP2 DUP7 SWAP5 DUP9 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP11 DUP12 DUP5 MSTORE CALLER PUSH1 0x4 DUP6 ADD PUSH2 0x2EB4 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 SWAP2 DUP6 SWAP4 PUSH2 0x3A80 JUMPI JUMPDEST POP POP PUSH2 0x39E8 JUMPI POP POP PUSH1 0x1 SWAP1 PUSH2 0x3933 PUSH2 0x2F36 JUMP JUMPDEST PUSH4 0x8C379A0 EQ PUSH2 0x39B8 JUMPI JUMPDEST POP PUSH2 0x394F JUMPI POP CODESIZE DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2FCF JUMP JUMPDEST MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH2 0x39C0 PUSH2 0x2F54 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x39CC JUMPI POP PUSH2 0x393E JUMP JUMPDEST POP DUP3 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x30D1 SWAP1 PUSH1 0x4 DUP4 ADD PUSH2 0x479 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SUB SWAP1 POP PUSH2 0x3A17 JUMPI POP PUSH2 0x305B JUMP JUMPDEST MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6420746F6B656E73000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH2 0x3A97 SWAP3 SWAP4 POP DUP1 RETURNDATASIZE LT PUSH2 0x31BF JUMPI PUSH2 0x31B0 DUP2 DUP4 PUSH2 0xB0B JUMP JUMPDEST SWAP1 CODESIZE DUP1 PUSH2 0x3920 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x3AAA PUSH2 0x4C18 JUMP JUMPDEST PUSH1 0x45 DUP1 SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x30 SHR AND PUSH2 0x3ABF DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH2 0x789 JUMPI PUSH4 0xFFFFFFFF SWAP2 DUP3 DUP2 AND SWAP1 DUP7 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1841 JUMPI PUSH1 0x58 SHR DUP4 AND LT PUSH2 0x75F JUMPI PUSH1 0x1 SWAP5 DUP1 DUP7 SUB PUSH2 0x3B3A JUMPI POP SWAP4 DUP2 PUSH2 0x2A4 SWAP5 SWAP6 SLOAD AND ADD AND PUSH2 0x3B2C DUP2 PUSH4 0xFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x3B34 PUSH2 0x3753 JUMP JUMPDEST SWAP2 PUSH2 0x37F1 JUMP JUMPDEST PUSH2 0x3B46 DUP2 SWAP4 SWAP3 SWAP4 PUSH2 0x1F99 JUMP JUMPDEST SWAP2 PUSH2 0x3B50 DUP3 PUSH2 0x1F99 JUMP JUMPDEST SWAP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x3B73 JUMPI POP POP POP POP PUSH2 0x2A4 SWAP4 SWAP5 POP PUSH2 0x3B6D PUSH2 0x3753 JUMP JUMPDEST SWAP3 PUSH2 0x3BCF JUMP JUMPDEST DUP9 SWAP1 DUP4 DUP3 DUP2 DUP6 SLOAD AND ADD AND PUSH2 0x3BB2 DUP2 PUSH4 0xFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x3BBC DUP3 DUP9 PUSH2 0x2073 JUMP JUMPDEST MSTORE DUP2 PUSH2 0x3BC8 DUP3 DUP10 PUSH2 0x2073 JUMP JUMPDEST MSTORE ADD PUSH2 0x3B54 JUMP JUMPDEST SWAP2 SWAP1 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x3BF4 DUP2 ISZERO ISZERO PUSH2 0x3780 JUMP JUMPDEST PUSH2 0x3C01 DUP7 MLOAD DUP5 MLOAD EQ PUSH2 0x35BC JUMP JUMPDEST PUSH2 0x3C0C DUP4 DUP8 DUP7 PUSH2 0x31EB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x3C62 JUMPI PUSH2 0x3C22 DUP2 DUP6 PUSH2 0x2073 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3C46 DUP7 PUSH2 0xD77 PUSH2 0x3C35 DUP5 DUP13 PUSH2 0x2073 JUMP JUMPDEST MLOAD PUSH1 0x0 MSTORE PUSH1 0x78 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP3 SLOAD SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1841 JUMPI PUSH2 0x3C5D SWAP3 SSTORE PUSH2 0x2017 JUMP JUMPDEST PUSH2 0x3C0F JUMP JUMPDEST POP SWAP3 SWAP5 SWAP4 SWAP1 SWAP5 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB CALLER SWAP2 DUP1 PUSH2 0x3C9D DUP10 DUP13 DUP4 PUSH2 0x362D JUMP JUMPDEST SUB SWAP1 LOG4 EXTCODESIZE PUSH2 0x3CAC JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x3CED SWAP3 PUSH1 0x20 SWAP3 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP11 DUP12 DUP6 MSTORE CALLER PUSH1 0x4 DUP7 ADD PUSH2 0x3652 JUMP JUMPDEST SUB SWAP3 GAS CALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x3DC9 JUMPI JUMPDEST POP PUSH2 0x3D37 JUMPI POP POP PUSH1 0x1 PUSH2 0x3D0B PUSH2 0x2F36 JUMP JUMPDEST PUSH4 0x8C379A0 EQ PUSH2 0x3D24 JUMPI JUMPDEST PUSH2 0x3066 JUMPI JUMPDEST CODESIZE DUP1 DUP1 DUP1 PUSH2 0x3CA6 JUMP JUMPDEST PUSH2 0x3D2C PUSH2 0x2F54 JUMP JUMPDEST DUP1 PUSH2 0x30E8 JUMPI POP PUSH2 0x3D16 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ PUSH2 0x3D1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6420746F6B656E73000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH2 0x3DE2 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x31BF JUMPI PUSH2 0x31B0 DUP2 DUP4 PUSH2 0xB0B JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x3CFA JUMP JUMPDEST SWAP1 PUSH2 0x3DF2 PUSH2 0x4C18 JUMP JUMPDEST PUSH1 0x45 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xFF DUP4 PUSH1 0x30 SHR AND PUSH2 0x3E08 DUP2 PUSH2 0x218F JUMP JUMPDEST SUB PUSH2 0x789 JUMPI PUSH4 0xFFFFFFFF SWAP2 DUP3 PUSH2 0x3E20 DUP4 DUP3 DUP5 AND PUSH2 0x2703 JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI PUSH2 0x3206 SWAP2 PUSH2 0x3EAE SWAP2 PUSH1 0x2 NUMBER ADD PUSH1 0x1 PUSH2 0x3E62 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SSTORE PUSH2 0x3E8E DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP2 DUP2 SLOAD ADD SWAP1 SSTORE AND PUSH2 0x3EA4 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST ADD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST SWAP1 DUP1 JUMPDEST PUSH2 0x3EEB JUMPI POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x3F31 PUSH2 0x3F1A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP7 PUSH2 0x400B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x3F27 DUP3 PUSH2 0xAB7 JUMP JUMPDEST PUSH1 0x0 DUP3 MSTORE DUP6 PUSH2 0x37F1 JUMP JUMPDEST ADD DUP1 PUSH2 0x3EE2 JUMP JUMPDEST SWAP1 DUP1 SWAP4 SWAP3 SWAP4 JUMPDEST PUSH2 0x3F48 JUMPI POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x3F74 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP7 PUSH2 0x400B JUMP JUMPDEST PUSH1 0x40 SWAP1 DUP2 MLOAD SWAP1 PUSH2 0x3F83 DUP3 PUSH2 0xAB7 JUMP JUMPDEST DUP7 PUSH2 0x3F94 PUSH1 0x0 SWAP4 DUP5 DUP2 MSTORE DUP4 DUP10 PUSH2 0x37F1 JUMP JUMPDEST PUSH2 0x3FA3 JUMPI JUMPDEST POP POP POP ADD DUP1 PUSH2 0x3F3E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE KECCAK256 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x3F99 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 DUP4 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x4029 DUP2 PUSH2 0xAD3 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 PUSH4 0xFFFFFFFF PUSH1 0x45 SLOAD PUSH1 0x58 SHR AND DUP1 ISZERO SWAP3 DUP4 PUSH2 0x408E JUMPI DUP2 SWAP1 MOD SWAP1 PUSH1 0x1 SWAP4 DUP5 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x1841 JUMPI DUP5 SWAP3 SWAP5 JUMPDEST PUSH2 0x405F JUMPI POP POP POP JUMP JUMPDEST PUSH2 0x4078 DUP6 SWAP4 SWAP6 PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4093 JUMPI DUP1 PUSH2 0x408E JUMPI DUP5 DUP3 DUP2 SWAP5 MOD ADD SWAP5 PUSH2 0x4056 JUMP JUMPDEST PUSH2 0x3FDC JUMP JUMPDEST POP SWAP1 SWAP3 POP POP JUMP JUMPDEST SWAP1 PUSH2 0x40A3 PUSH2 0x4C18 JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x2 PUSH1 0xFF DUP3 PUSH1 0x30 SHR AND PUSH2 0x40B8 DUP2 PUSH2 0x218F JUMP JUMPDEST SUB PUSH2 0x789 JUMPI PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 DUP4 MLOAD DUP4 ADD DUP1 SWAP4 GT PUSH2 0x1841 JUMPI PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI PUSH2 0x2A4 SWAP2 PUSH2 0x40FB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP1 SWAP5 AND SWAP2 AND ADD SWAP2 DUP3 GT PUSH2 0x1841 JUMPI JUMP JUMPDEST DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF PUSH1 0x45 SWAP2 PUSH2 0x4128 PUSH2 0x3EAE DUP3 PUSH2 0x4123 DUP7 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x40E3 JUMP JUMPDEST AND SWAP4 PUSH2 0x4133 DUP6 PUSH2 0x1F99 JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT PUSH2 0x414E JUMPI POP POP PUSH2 0x2A4 SWAP4 SWAP5 POP PUSH2 0x3B6D PUSH2 0x3753 JUMP JUMPDEST PUSH2 0x4158 DUP2 DUP5 PUSH2 0x2073 JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 SWAP2 DUP3 PUSH2 0x4168 DUP4 DUP9 PUSH2 0x2073 JUMP JUMPDEST MSTORE PUSH2 0x4180 DUP2 PUSH1 0x0 MSTORE PUSH1 0xAA PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x41E1 JUMPI DUP1 ISZERO SWAP1 DUP2 ISZERO PUSH2 0x41C3 JUMPI JUMPDEST POP PUSH2 0x4199 JUMPI ADD PUSH2 0x4137 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x3F6CC76800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH2 0x41DA PUSH2 0x170C DUP6 SLOAD PUSH4 0xFFFFFFFF SWAP1 PUSH1 0x58 SHR AND SWAP1 JUMP JUMPDEST LT CODESIZE PUSH2 0x418E JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH31 0xA5A1F500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST ISZERO PUSH2 0x4211 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x40 MLOAD PUSH32 0x713562FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x2130 JUMPI POP PUSH2 0x212C JUMPI POP JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x1320 PUSH2 0x20AD JUMP JUMPDEST SWAP1 DUP1 SWAP3 SWAP2 DUP3 CALLDATACOPY ADD PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 CALLDATACOPY DUP2 ADD PUSH1 0x42 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x5 GT ISZERO PUSH2 0x2199 JUMPI JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP6 SWAP7 SWAP9 SWAP8 SWAP2 SWAP9 DUP5 ISZERO PUSH2 0x46B0 JUMPI PUSH2 0x4328 DUP4 DUP3 PUSH2 0x42EC JUMP JUMPDEST PUSH2 0x4333 DUP7 DUP3 SLOAD PUSH2 0x2703 JUMP JUMPDEST SWAP1 SSTORE DUP2 PUSH2 0x4340 DUP5 DUP4 PUSH2 0x42EC JUMP JUMPDEST SLOAD GT PUSH2 0x4686 JUMPI PUSH1 0x45 SLOAD SWAP4 PUSH4 0xFFFFFFFF SWAP5 PUSH2 0x435C DUP8 DUP8 DUP4 AND PUSH2 0x2703 JUMP JUMPDEST DUP7 DUP3 PUSH1 0x58 SHR AND LT PUSH2 0x75F JUMPI PUSH1 0x20 SHR PUSH1 0xFF AND PUSH2 0x4376 DUP2 PUSH2 0x4305 JUMP JUMPDEST ISZERO PUSH2 0x465C JUMPI PUSH1 0x40 SWAP11 DUP12 MLOAD SWAP4 DUP5 DUP10 DUP13 PUSH1 0x20 DUP4 ADD SWAP4 DUP7 DUP7 CHAINID SWAP5 ADDRESS SWAP6 PUSH2 0x441C SWAP7 DUP10 SWAP6 SWAP4 SWAP2 SWAP3 PUSH1 0x8E SWAP8 SWAP6 SWAP4 PUSH32 0x9D13A5BA00000000000000000000000000000000000000000000000000000000 DUP9 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 SWAP4 PUSH1 0x60 SHL AND PUSH1 0x4 DUP10 ADD MSTORE PUSH1 0x18 DUP9 ADD MSTORE PUSH1 0x60 SHL AND PUSH1 0x38 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0xF8 SHL PUSH1 0x4C DUP6 ADD MSTORE PUSH1 0x4D DUP5 ADD MSTORE PUSH1 0x6D DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0xF8 SHL PUSH1 0x8D DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SUB SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP6 DUP7 DUP2 ADD DUP3 MSTORE PUSH2 0x444F SWAP1 DUP3 PUSH2 0xB0B JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x445B SWAP1 PUSH2 0x48EC JUMP JUMPDEST PUSH2 0x4466 CALLDATASIZE DUP8 DUP7 PUSH2 0xBFC JUMP JUMPDEST PUSH2 0x446F SWAP2 PUSH2 0x46DA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xC0FFEE06CE3D6689305035601A055A96ACD619C6 DUP2 EQ ISZERO SWAP1 DUP2 PUSH2 0x462E JUMPI JUMPDEST POP PUSH2 0x4605 JUMPI ISZERO PUSH2 0x45E5 JUMPI POP CALLVALUE PUSH2 0x45BC JUMPI JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x30 SHR PUSH1 0xFF AND PUSH2 0x44C7 DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x450F JUMPI POP POP POP POP POP DUP3 MLOAD SUB PUSH2 0x44E6 JUMPI PUSH2 0x2A4 SWAP4 SWAP5 POP PUSH2 0x49CE JUMP JUMPDEST PUSH1 0x4 DUP6 MLOAD PUSH32 0x991F339F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP7 POP PUSH2 0x4521 DUP2 SWAP7 SWAP6 SWAP7 PUSH2 0x218F JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x4574 JUMPI POP SWAP2 PUSH2 0x454E PUSH2 0x455A PUSH2 0x3EAE SWAP4 PUSH2 0x456F SWAP6 PUSH2 0x2A4 SWAP12 SWAP13 MLOAD SWAP4 DUP5 SWAP2 PUSH1 0x20 DUP4 ADD SWAP7 DUP8 SWAP2 PUSH2 0x42DE JUMP JUMPDEST SUB SWAP1 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0xB0B JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP5 DUP5 AND PUSH2 0x4123 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3F38 JUMP JUMPDEST SWAP4 SWAP5 SWAP6 POP POP POP POP PUSH2 0x4584 DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH2 0x4593 JUMPI PUSH2 0x2A4 SWAP4 SWAP5 POP PUSH2 0x492F JUMP JUMPDEST PUSH1 0x4 DUP6 MLOAD PUSH32 0x3F88681900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP11 MLOAD PUSH32 0x122D34A800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP6 DUP2 ISZERO PUSH2 0x45FB JUMPI JUMPDEST PUSH2 0x45F6 SWAP2 PUSH2 0x4DB5 JUMP JUMPDEST PUSH2 0x44B5 JUMP JUMPDEST PUSH1 0x3A SLOAD SWAP2 POP PUSH2 0x45ED JUMP JUMPDEST PUSH1 0x4 DUP13 MLOAD PUSH32 0x73A8EE1800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH2 0x4654 PUSH2 0x463B PUSH2 0x20AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST EQ ISZERO CODESIZE PUSH2 0x44A4 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x7963E2B500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x9A89C66A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x2C5211C600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x48A SWAP2 PUSH2 0x46E7 SWAP2 PUSH2 0x4825 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x46F3 DUP2 PUSH2 0x4305 JUMP JUMPDEST DUP1 PUSH2 0x46FB JUMPI POP JUMP JUMPDEST PUSH2 0x4704 DUP2 PUSH2 0x4305 JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x4751 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0x475A DUP2 PUSH2 0x4305 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x47A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x47B3 PUSH1 0x3 SWAP3 PUSH2 0x4305 JUMP JUMPDEST EQ PUSH2 0x47BA JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x41 DUP2 MLOAD EQ PUSH1 0x0 EQ PUSH2 0x4853 JUMPI PUSH2 0x484F SWAP2 PUSH1 0x20 DUP3 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP5 ADD MLOAD SWAP4 ADD MLOAD PUSH1 0x0 BYTE SWAP1 PUSH2 0x485D JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP1 PUSH1 0x2 SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT PUSH2 0x48E0 JUMPI SWAP2 PUSH1 0x80 SWAP5 SWAP4 SWAP2 PUSH1 0xFF PUSH1 0x20 SWAP5 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP5 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP2 DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x6CE JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x48DA JUMPI SWAP2 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP POP PUSH1 0x0 SWAP1 PUSH1 0x3 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP4 MSTORE PUSH1 0x3C DUP3 ADD MSTORE PUSH1 0x3C DUP2 MSTORE PUSH2 0x4929 DUP2 PUSH2 0xAD3 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 JUMPDEST DUP4 DUP2 LT PUSH2 0x4942 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x45 SWAP1 DUP2 SLOAD SWAP2 PUSH4 0xFFFFFFFF SWAP1 DUP5 PUSH2 0x499A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x1 SWAP7 DUP6 DUP9 DUP2 DUP4 AND ADD AND SWAP2 DUP3 SWAP2 AND OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP1 PUSH2 0x4991 DUP3 PUSH2 0xAB7 JUMP JUMPDEST DUP12 DUP3 MSTORE DUP10 PUSH2 0x37F1 JUMP JUMPDEST PUSH2 0x49A7 JUMPI JUMPDEST POP POP ADD PUSH2 0x4934 JUMP JUMPDEST PUSH2 0x49C7 SWAP2 PUSH2 0x1428 SWAP2 SLOAD AND PUSH4 0xFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST CODESIZE DUP1 PUSH2 0x499F JUMP JUMPDEST DUP2 PUSH2 0x49D8 SWAP2 PUSH2 0x40FB JUMP JUMPDEST DUP1 MLOAD SWAP2 PUSH2 0x49E3 JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 JUMPDEST DUP4 DUP2 LT PUSH2 0x49F5 JUMPI POP POP POP POP JUMP JUMPDEST PUSH2 0x49FF DUP2 DUP4 PUSH2 0x2073 JUMP JUMPDEST MLOAD DUP4 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SWAP1 PUSH1 0x1 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE ADD PUSH2 0x49E8 JUMP JUMPDEST SWAP1 PUSH2 0xFFFF DUP1 SWAP3 AND PUSH2 0x2710 SUB SWAP2 DUP3 GT PUSH2 0x1841 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0xFF PUSH2 0x4A7E DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND ISZERO PUSH2 0x4BD6 JUMPI PUSH2 0x4ABD PUSH2 0x4AB2 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x18 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x4AFF PUSH2 0x4AF9 PUSH2 0x4AEE DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x8 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0x4A3D JUMP JUMPDEST SWAP3 PUSH2 0x4B1C PUSH2 0x4B14 PUSH1 0x3A SLOAD PUSH2 0xFFFF DUP1 SWAP8 AND PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x2710 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH2 0x4B26 DUP4 DUP3 PUSH2 0x4DB5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP5 DUP6 PUSH2 0x4B4B JUMPI POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4BA4 SWAP4 PUSH2 0x4B64 PUSH2 0x4B69 SWAP4 PUSH2 0x4B14 SWAP4 PUSH2 0xDD0 SWAP7 AND PUSH2 0x2710 JUMP JUMPDEST PUSH2 0x2710 JUMP JUMPDEST SWAP3 PUSH2 0x4B7E PUSH2 0x4B79 DUP6 PUSH1 0x37 SLOAD PUSH2 0x2703 JUMP JUMPDEST PUSH1 0x37 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 SSTORE PUSH32 0xF2F90295CDB5DAFD392BFC62D7868BCC79E8C6164C820C7CC195D6C8CDA8E674 PUSH1 0x0 DUP1 LOG2 CODESIZE DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2FCF JUMP JUMPDEST PUSH1 0x0 DUP1 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH32 0x619FCD35F40C77DA8AA64D5F98C1FED669135ECC4F245CE6667721B157F7098F DUP1 SLOAD PUSH1 0x18 SHR PUSH2 0xFFFF AND SWAP3 SWAP1 PUSH2 0x4AFF SWAP1 PUSH2 0x4AF9 SWAP1 PUSH2 0x4AEE JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x20 SHR PUSH1 0xFF AND PUSH2 0x4C2A DUP2 PUSH2 0x4305 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x4C35 JUMPI POP JUMP JUMPDEST PUSH2 0x4C3E DUP2 PUSH2 0x4305 JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x4CB8 JUMPI POP PUSH1 0x3D SLOAD TIMESTAMP LT PUSH2 0x4C8E JUMPI PUSH2 0x4C84 PUSH5 0x200000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x0 PUSH1 0x3D SSTORE JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB3C0357700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP1 PUSH2 0x4CC4 PUSH1 0x4 SWAP3 PUSH2 0x4305 JUMP JUMPDEST SUB PUSH2 0x4D05 JUMPI PUSH1 0x3D SLOAD TIMESTAMP LT PUSH2 0x4C8E JUMPI PUSH1 0x3E SLOAD TIMESTAMP LT PUSH2 0x2A4 JUMPI PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x734F1AD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x63A2DE0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x78 SHR PUSH1 0xFF AND PUSH2 0x4D7C JUMPI DUP1 DUP1 DIV PUSH1 0x1 EQ DUP2 ISZERO OR ISZERO PUSH2 0x1841 JUMPI CALLVALUE SUB PUSH2 0x4D52 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xC288BF8F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP1 ISZERO PUSH2 0x4DB2 JUMPI DUP1 DUP1 DIV PUSH1 0x1 SUB PUSH2 0x1841 JUMPI PUSH2 0x2A4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SLOAD AND ADDRESS SWAP1 CALLER SWAP1 PUSH2 0x4E0D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x78 SHR PUSH1 0xFF AND PUSH2 0x4DD4 JUMPI SWAP1 PUSH2 0x4DCC SWAP2 PUSH2 0x2710 JUMP JUMPDEST CALLVALUE SUB PUSH2 0x4D52 JUMPI JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4E09 JUMPI PUSH2 0x2A4 SWAP2 PUSH2 0x4DE7 SWAP2 PUSH2 0x2710 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 SLOAD AND ADDRESS SWAP1 CALLER SWAP1 PUSH2 0x4E0D JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH1 0x0 DUP1 PUSH2 0x4EE4 SWAP5 PUSH1 0x40 MLOAD SWAP5 PUSH1 0x20 SWAP8 DUP9 DUP8 ADD SWAP6 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP1 SWAP3 AND PUSH1 0x24 DUP11 ADD MSTORE AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE PUSH1 0x64 DUP7 MSTORE PUSH2 0x4E7A DUP7 PUSH2 0xAEF JUMP JUMPDEST AND SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x4E89 DUP7 PUSH2 0xA9B JUMP JUMPDEST DUP8 DUP7 MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP9 DUP8 ADD MSTORE MLOAD SWAP1 DUP3 DUP6 GAS CALL RETURNDATASIZE ISZERO PUSH2 0x4F09 JUMPI RETURNDATASIZE SWAP2 PUSH2 0x4EC8 DUP4 PUSH2 0xBC2 JUMP JUMPDEST SWAP3 PUSH2 0x4ED6 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xB0B JUMP JUMPDEST DUP4 MSTORE RETURNDATASIZE PUSH1 0x0 DUP8 DUP6 ADD RETURNDATACOPY PUSH2 0x4F97 JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 PUSH2 0x4EF1 JUMPI POP POP POP JUMP JUMPDEST DUP3 PUSH2 0x2A4 SWAP4 PUSH2 0x4F04 SWAP4 DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F11 JUMP JUMPDEST PUSH2 0x4F26 JUMP JUMPDEST PUSH1 0x60 SWAP2 PUSH2 0x4F97 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x292 JUMPI MLOAD PUSH2 0x48A DUP2 PUSH2 0x11C9 JUMP JUMPDEST ISZERO PUSH2 0x4F2D JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP2 SWAP3 SWAP1 ISZERO PUSH2 0x4FF8 JUMPI POP DUP2 MLOAD ISZERO PUSH2 0x4FAB JUMPI POP SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO PUSH2 0x4FB4 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x30E8 JUMPI POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x28 SHR PUSH1 0xFF AND PUSH2 0x501D DUP2 PUSH2 0x218F JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x50BB JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xC617113400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 PUSH14 0xAAEB6D7670E522A718067333CD4E GAS STATICCALL DUP1 ISZERO PUSH2 0x6CE JUMPI PUSH2 0x5094 JUMPI POP JUMP JUMPDEST PUSH2 0x4DB2 SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x50B4 JUMPI JUMPDEST PUSH2 0x50AC DUP2 DUP4 PUSH2 0xB0B JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4F11 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x50A2 JUMP JUMPDEST PUSH2 0x50C4 DUP2 PUSH2 0x218F JUMP JUMPDEST ISZERO PUSH2 0x50CC JUMPI POP JUMP JUMPDEST PUSH14 0xAAEB6D7670E522A718067333CD4E DUP1 EXTCODESIZE PUSH2 0x50E5 JUMPI POP POP JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO PUSH2 0x292 JUMPI PUSH1 0x40 MLOAD PUSH32 0x7D3E3DBE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x3CC6CDDA760B79BAFA08DF41ECFA224F810DCEB6 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP2 PUSH1 0x44 DUP2 DUP4 DUP7 GAS CALL SWAP1 DUP2 PUSH2 0x51EF JUMPI JUMPDEST POP ISZERO PUSH2 0x4E09 JUMPI PUSH2 0x51DE SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x5185 PUSH6 0x10000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC617113400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP3 DUP4 SWAP2 SWAP1 DUP3 SWAP1 DUP2 SWAP1 PUSH1 0x44 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x6CE JUMPI PUSH2 0x5094 JUMPI POP JUMP JUMPDEST DUP1 PUSH2 0x51FC PUSH2 0x5202 SWAP3 PUSH2 0xA82 JUMP JUMPDEST DUP1 PUSH2 0x408 JUMP JUMPDEST CODESIZE PUSH2 0x5143 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE DUP2 DUP1 CALLDATACOPY DUP1 DUP1 CALLDATASIZE DUP2 PUSH32 0x0 GAS DELEGATECALL RETURNDATASIZE DUP3 DUP1 RETURNDATACOPY ISZERO PUSH2 0x5242 JUMPI RETURNDATASIZE SWAP1 RETURN JUMPDEST RETURNDATASIZE SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE PUSH14 0x2B75533EDDFB7C55745599ED27FC 0xB8 0xA5 PUSH7 0x788AF8D338588E 0xCC 0xF6 0xD DUP6 SLOAD DELEGATECALL PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"5433:9075:45:-:0;;;;;;;;;-1:-1:-1;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;;;;:::i;:::-;;12052:37;12037:52;;:92;;;;;5433:9075;;;;;;;;;;12037:92;1774:37:11;1759:52;;;-1:-1:-1;1759:131:11;;;;12037:92:45;1759:183:11;;;;12037:92:45;;;;;1759:183:11;1183:36:32;1168:51;;;1759:183:11;;;:131;1842:48;1827:63;;;-1:-1:-1;1759:131:11;;5433:9075:45;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;5433:9075:45;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;8879:5;5433:9075;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;8879:5;5433:9075;;;;;;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5433:9075:45;;;;;9683:15:44;5433:9075:45;9683:20:44;;;:64;;;5433:9075:45;;;;;;;;;;;9683:64:44;5433:9075:45;;9724:22:44;5433:9075:45;9708:12:44;5433:9075:45;;;;;;;:::i;:::-;9708:38:44;9683:64;;;;5433:9075:45;;;;;;-1:-1:-1;;5433:9075:45;;;;;;;8439:48;5433:9075;8439:48;;5433:9075;;;8439:48;;5433:9075;-1:-1:-1;8459:4:45;;;5433:9075;8459:4;;8439:48;;;;;;;;;;;5433:9075;;;;;;;;;;;;;;;;:::i;8439:48::-;;;;;;;;;;;;;;:::i;:::-;;;5433:9075;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8439:48;;;;;5433:9075;;;;;;;;8439:48;;:::i;5433:9075::-;;-1:-1:-1;;5433:9075:45;;;;;7229:30:47;7245:10;5433:9075:45;7229:30:47;:::i;:::-;;;:::i;:::-;7296:12;5433:9075:45;;;;;;;;;:::i;:::-;7292:71:47;;7296:12;5433:9075:45;;;;;;;;;;;;;;;;;;;7296:12:47;5433:9075:45;;;;;;;-1:-1:-1;7397:65:47;;7482:30;5433:9075:45;;7488:10:47;7482:30;:::i;:::-;5433:9075:45;7397:65:47;5433:9075:45;;;7443:19:47;;;;7292:71;5433:9075:45;;;7343:20:47;;;;5433:9075:45;;;;;-1:-1:-1;;5433:9075:45;;;;;;;24254:11:47;5433:9075:45;;;;;;;;;;-1:-1:-1;;5433:9075:45;;;;;10940:6:47;5433:9075:45;;;;;:::i;:::-;;;;10897:6:47;5433:9075:45;10885:10:47;5433:9075:45;10897:6:47;:::i;:::-;10940;:::i;5433:9075:45:-;;;-1:-1:-1;;5433:9075:45;;;;;12460:46:47;:26;12475:10;5433:9075:45;;;;12460:14:47;5433:9075:45;;;;;;;12460:26:47;:46;5433:9075:45;12475:10:47;5433:9075:45;;;;12460:14:47;5433:9075:45;;;;;;12589:19:47;;12585:49;;12460:46;12664:26;12475:10;5433:9075:45;;;;12460:14:47;5433:9075:45;;;;;;;12664:26:47;:46;5433:9075:45;12648:12:47;:62;;12644:114;;13433:5;12799:30;13449:34;12799:30;;12844:24;;;12840:323;;5433:9075:45;12475:10:47;;12460:46;13180:26;12475:10;5433:9075:45;;;;12460:14:47;5433:9075:45;;;;;;;13180:26:47;:46;5433:9075:45;12475:10:47;13244:26;12475:10;5433:9075:45;;;;12460:14:47;5433:9075:45;;;;;;;13244:26:47;5433:9075:45;13316:14:47;5433:9075:45;;;;;;;;13316:14:47;5433:9075:45;;13316:14:47;5433:9075:45;;;12475:10:47;13433:5;:::i;:::-;5433:9075:45;;13316:14:47;5433:9075:45;;;;;;;;13316:14:47;5433:9075:45;;13449:34:47;5433:9075:45;;12840:323:47;12911:71;12955:26;;12977:4;12955:26;12942:6;12648:12;12912:38;12911:71;:::i;:::-;12648:12;13003:30;;;12998:93;;12840:323;13126:25;12840:323;;;12998:93;13054:21;;;:::i;:::-;12998:93;;12644:114;5433:9075:45;;;12719:39:47;;;;12585:49;5433:9075:45;;;12617:17:47;;;;5433:9075:45;;;;;-1:-1:-1;;5433:9075:45;;;;;;25093:6:47;25066:23;5433:9075:45;25078:11:47;5433:9075:45;;;;;;25066:23:47;:::i;:::-;5433:9075:45;;;25050:4:47;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;5433:9075:45;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;27595:10:47;;;;:::i;:::-;5433:9075:45;;;;;27595:10:47;;4697:20:11;;:60;;;;5433:9075:45;4676:153:11;;;:::i;:::-;6839:81;5433:9075:45;;;;6847:28:11;6839:81;:::i;:::-;5433:9075:45;;6930:66:11;6938:16;;;6930:66;:::i;:::-;5433:9075:45;;;;;;:::i;:::-;-1:-1:-1;7156:3:11;5433:9075:45;;7140:14:11;;;;;7188:6;;7156:3;7188:6;;;:::i;:::-;5433:9075:45;7493:27:11;:17;7225:10;7493:13;7225:10;;;;:::i;:::-;5433:9075:45;7272:13:11;;7423:19;7272:13;:19;:13;;;5433:9075:45;;5849:9:11;5433:9075:45;;;;;;;7272:13:11;5433:9075:45;;;;;;;;;;;;7272:19:11;5433:9075:45;7305:76:11;7313:21;;;;7305:76;:::i;:::-;5433:9075:45;7423:13:11;;;5433:9075:45;;5849:9:11;5433:9075:45;;;;;;;7423:19:11;5433:9075:45;;;5849:9:11;5433:9075:45;;;;;;;7493:17:11;5433:9075:45;;;7493:27:11;:::i;:::-;5433:9075:45;;7156:3:11;:::i;:::-;7125:13;;7140:14;;;;;;7744:4;7140:14;5433:9075:45;;7546:47:11;27595:10:47;7546:47:11;;;;;;;:::i;:::-;;;;27595:10:47;7744:4:11;:::i;4697:60::-;27595:10:47;4676:153:11;4721:36;27595:10:47;4721:36:11;;:::i;:::-;4697:60;;;;5433:9075:45;-1:-1:-1;;5433:9075:45;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;9465:6:47;9415:9;5433:9075:45;;;:::i;:::-;9415:9:47;;;;:::i;:::-;9465:6;:::i;5433:9075:45:-;;-1:-1:-1;;5433:9075:45;;;;;;;;;;:::i;:::-;;;;;;;;;;14755:8:47;5433:9075:45;;;;;;:::i;:::-;;14702:15:47;14690:10;5433:9075:45;;;14702:15:47;;:::i;:::-;14755:8;:::i;5433:9075:45:-;;-1:-1:-1;;5433:9075:45;;;;;8898:6:47;5433:9075:45;;;;;:::i;:::-;;;;8851:6:47;5433:9075:45;8839:10:47;5433:9075:45;8851:6:47;:::i;5433:9075:45:-;;-1:-1:-1;;5433:9075:45;;;;;;;;;;:::i;:::-;;;;;;;;;;15431:8:47;5433:9075:45;;;;;;:::i;:::-;;15384:9:47;5433:9075:45;;;;;:::i;:::-;;;15384:9:47;:::i;5433:9075:45:-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5433:9075:45;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3168:29:11;5433:9075:45;;3287:30:11;5433:9075:45;;3287:30:11;:::i;:::-;3333:13;-1:-1:-1;3369:3:11;5433:9075:45;;3348:19:11;;;;;3417:11;3407:30;3417:11;;3369:3;3417:11;;;:::i;:::-;5433:9075:45;;;;;3417:11:11;3430:6;;;;:::i;:::-;5433:9075:45;3407:30:11;;:::i;:::-;3388:49;;;;:::i;:::-;5433:9075:45;3369:3:11;:::i;:::-;3333:13;;3348:19;5433:9075:45;;;;3348:19:11;5433:9075:45;;:::i;:::-;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;-1:-1:-1;5433:9075:45;1033:12:14;5433:9075:45;;;-1:-1:-1;5433:9075:45;;1229:44:14;;1149:131;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;-1:-1:-1;;5433:9075:45;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5905:2060;5433:9075;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;5905:2060;;:::i;5433:9075::-;;;;;-1:-1:-1;;5433:9075:45;;;;;;;24460:14:47;5433:9075:45;;;;;;;;;;;;;;;-1:-1:-1;;5433:9075:45;;;;;;24071:10:47;5433:9075:45;;;;;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;6328:14:6;6320:73;6328:14;;:::i;:::-;5433:9075:45;;6346:10:6;6328:28;6320:73;:::i;:::-;18080:12:47;5433:9075:45;;;;;;;;;;;:::i;:::-;18076:71:47;;18161:25;5433:9075:45;;;;;;;;;;18161:25:47;:::i;:::-;5433:9075:45;;;;-1:-1:-1;18157:75:47;;5433:9075:45;;18286:9:47;18096:22;18297:12;;;;;;5433:9075:45;18286:9:47;18362:5;;18356:27;18362:5;;5433:9075:45;18362:5:47;;;:::i;:::-;5433:9075:45;18369:13:47;5433:9075:45;;;;;;;;;;;;;;18369:13:47;;;5433:9075:45;;;7296:12:47;5433:9075:45;;;7296:12:47;5433:9075:45;;18369:13:47;5433:9075:45;18356:27:47;;:::i;:::-;18417:45;;18286:9;5433:9075:45;18286:9:47;;18417:45;18432:30;:23;5433:9075:45;;;;;;;;;;;;18432:10:47;5433:9075:45;;;;;;;18432:23:47;18458:4;5433:9075:45;;;;;;;;18432:30:47;18417:45;;5433:9075:45;;-1:-1:-1;;5433:9075:45;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;17180:30:47;17196:10;5433:9075:45;17180:30:47;:::i;:::-;;;:::i;:::-;17247:12;5433:9075:45;;17263:22:47;5433:9075:45;;;;;;;;:::i;:::-;17247:38:47;17243:71;;7296:12;5433:9075:45;;;;;;;;;;;;;;;;;;;17247:12:47;5433:9075:45;;;;;;;-1:-1:-1;17348:65:47;;17433:22;5433:9075:45;;17433:22:47;;:::i;:::-;17490:45;;5433:9075:45;;;17555:32:47;5433:9075:45;17247:12:47;5433:9075:45;;;;;;;;;;17555:19:47;5433:9075:45;;;;;;;17555:32:47;5433:9075:45;;17490:45:47;17505:30;:23;5433:9075:45;17247:12:47;5433:9075:45;;;;;17505:30:47;17490:45;;5433:9075:45;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;-1:-1:-1;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;5520:62:6;;:::i;:::-;5433:9075:45;;20236:12:47;;5433:9075:45;;20252:19:47;5433:9075:45;;;;;;;;:::i;:::-;20236:35:47;20232:68;;5433:9075:45;;;;;;;20315:31:47;5433:9075:45;;20315:31:47;;:::i;:::-;5433:9075:45;;;;-1:-1:-1;20311:81:47;;5433:9075:45;;20406:27:47;;20402:68;;5433:9075:45;20505:31:47;5433:9075:45;;;;;;;;;7296:12:47;5433:9075:45;;;7296:12:47;5433:9075:45;;20505:31:47;-1:-1:-1;20573:12:47;;;;;;5433:9075:45;20562:9:47;20608:11;;;;:::i;:::-;5433:9075:45;20608:16:47;:49;;;;20562:9;20604:78;;20702:5;;20709:11;20702:5;;5433:9075:45;20702:5:47;;;:::i;:::-;20709:11;;;;:::i;:::-;5433:9075:45;20709:11:47;;:::i;:::-;20735:45;;20562:9;5433:9075:45;20562:9:47;;20735:45;20750:30;:23;20761:11;;;;:::i;:::-;5433:9075:45;;;20750:10:47;5433:9075:45;;;;;;;20750:30:47;20735:45;;20604:78;5433:9075:45;;;20666:16:47;;;;20608:49;20628:11;;;;;:::i;:::-;5433:9075:45;;;20628:29:47;;5433:9075:45;;;;;;;;;20628:29:47;-1:-1:-1;20608:49:47;;20402:68;5433:9075:45;;;20442:28:47;;;;20311:81;5433:9075:45;;;20373:19:47;;;;20232:68;5433:9075:45;;;20280:20:47;;;;5433:9075:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;;;14108:16;;;;;14156:1;5433:9075;;;;;;;;;;6321:4:44;;;;;;;;;;14228:20:45;;;:::i;:::-;14271:9;-1:-1:-1;14282:9:45;;;;;;14104:390;;;5433:9075;14104:390;;;5433:9075;14078:15;;;;14039:12;;5433:9075;;;:::i;14293:3::-;5433:9075;;;;;-1:-1:-1;5433:9075:45;1033:12:14;5433:9075:45;;;-1:-1:-1;5433:9075:45;;14320:38;;;;:::i;:::-;5433:9075;;14271:9;;6321:4:44;;:::i;14104:390:45:-;5433:9075;;-1:-1:-1;5433:9075:45;;-1:-1:-1;14104:390:45;;5433:9075;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;5433:9075:45;;;;;8435:6:47;5433:9075:45;;8377:9:47;5433:9075:45;;;;;:::i;:::-;8377:9:47;;:::i;:::-;8423:10;8435:6;:::i;5433:9075:45:-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;5737:29;5433:9075;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;5737:29;5433:9075;;;;;;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;5433:9075:45;;;;;7918:6:47;5433:9075:45;;7863:6:47;5433:9075:45;7851:10:47;5433:9075:45;7863:6:47;:::i;5433:9075:45:-;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;27714:8:47;;;:::i;:::-;5433:9075:45;;;929:10:27;;;13459:17:11;5433:9075:45;;929:10:27;13532:35:11;:46;929:10:27;13532:25:11;929:10:27;5433:9075:45;;;;13532:18:11;5433:9075:45;;;;;;;13532:35:11;5433:9075:45;;;;;;;;;;;;;;13532:46:11;5433:9075:45;;;;;;;929:10:27;;13593:41:11;;5433:9075:45;;13593:41:11;5433:9075:45;;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5433:9075:45;;;;;;;-1:-1:-1;5433:9075:45;1033:12:14;5433:9075:45;;;;-1:-1:-1;5433:9075:45;;;;;;;;;;;;:::i;:::-;5520:62:6;;;:::i;:::-;5433:9075:45;;;19026:12:47;5433:9075:45;;;;;;;;;;;:::i;:::-;19042:18:47;19026:34;;;19022:67;;5433:9075:45;;;;19105:22:47;;;;;;:::i;:::-;5433:9075:45;;;;-1:-1:-1;19100:74:47;;19209:31;5433:9075:45;;;;;;;;;7296:12:47;5433:9075:45;;;7296:12:47;5433:9075:45;;19209:31:47;19292:16;:12;:16;:::i;:::-;19282:27;-1:-1:-1;19336:12:47;;;;;;5433:9075:45;19325:9:47;19387:29;;;;;;:::i;:::-;19436:5;19443:10;19436:5;;;;;;:::i;:::-;19443:10;:::i;:::-;19468:44;;19325:9;5433:9075:45;;19325:9:47;;19468:44;19483:22;:29;:22;5433:9075:45;;20750:10:47;5433:9075:45;;;;;;;19483:29:47;19468:44;;;5433:9075:45;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;5448:4:48;5433:9075:45;;;;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;6283:4:11;5433:9075:45;;;;;;:::i;:::-;27595:10:47;;;;:::i;:::-;5433:9075:45;;;;;27595:10:47;;4206:20:11;;:60;;;;5433:9075:45;4185:153:11;;;:::i;:::-;5433:9075:45;;5521:66:11;5529:16;;;5521:66;:::i;:::-;5662:21;;;;:::i;:::-;5720:25;;;:::i;:::-;5662:21;;;;:::i;:::-;-1:-1:-1;5433:9075:45;;;;5849:9:11;5433:9075:45;;;5849:19:11;5433:9075:45;;;;;;;;;;;;;;;;5849:19:11;5433:9075:45;5878:76:11;5886:21;;;;5878:76;:::i;:::-;5433:9075:45;;;5849:9:11;5433:9075:45;;;5988:19:11;5433:9075:45;;;;;;;;;;;;;;;;5988:19:11;5433:9075:45;6050:17:11;:13;;;5433:9075:45;;5849:9:11;5433:9075:45;;;;;;;6050:17:11;:27;5433:9075:45;;;6050:27:11;:::i;:::-;5433:9075:45;;;;;;;;;;;;;;27595:10:47;;6093:46:11;;;27595:10:47;6283:4:11;:::i;4206:60::-;27595:10:47;4185:153:11;4230:36;27595:10:47;4230:36:11;;:::i;:::-;4206:60;;;;5433:9075:45;11639:6:47;11593:9;5433:9075:45;;;:::i;2593:227:11:-;5433:9075:45;;;2706:21:11;5433:9075:45;;2791:22:11;5433:9075:45;2725:1:11;5433:9075:45;2791:9:11;5433:9075:45;;;2725:1:11;5433:9075:45;;;;;;;;;;;;;2791:22:11;5433:9075:45;2593:227:11;:::o;5433:9075:45:-;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8214:257:44;5433:9075:45;;;;;8323:67:44;;8382:4;8323:67;;;5433:9075:45;8323:67:44;8340:8;5433:9075:45;8340:8:44;5433:9075:45;8340:8:44;5433:9075:45;8323:67:44;;5433:9075:45;;8323:67:44;;;8214:257;8319:146;;;8214:257;:::o;8319:146::-;8431:14;-1:-1:-1;8431:14:44:o;8323:67::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5433:9075:45;;;;;;;;;;;;-1:-1:-1;5433:9075:45;;;:::o;:::-;;:::i;3235:506:10:-;;;;;;;;;;;;;3291:13;5433:9075:45;;;;;;;3290:14:10;3336:34;;;;;;3235:506;3335:108;;;;3235:506;5433:9075:45;;;;3625:1:10;3525:16;;;5433:9075:45;;3291:13:10;5433:9075:45;;;3291:13:10;5433:9075:45;;3525:16:10;3551:65;;3625:1;:::i;:::-;3636:99;;3235:506::o;3636:99::-;3670:21;5433:9075:45;3291:13:10;5433:9075:45;;3291:13:10;5433:9075:45;;3670:21:10;5433:9075:45;;3540:1:10;5433:9075:45;;3710:14:10;;5433:9075:45;;3710:14:10;3235:506::o;3551:65::-;3585:20;5433:9075:45;;3291:13:10;5433:9075:45;;;3291:13:10;5433:9075:45;;3585:20:10;3625:1;:::i;5433:9075:45:-;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;3335:108:10;3415:4;1476:19:25;:23;;-1:-1:-1;1476:23:25;3376:66:10;;3335:108;;;;;3376:66;3441:1;5433:9075:45;;;;3425:17:10;3376:66;;;3336:34;3369:1;5433:9075:45;;;3354:16:10;;-1:-1:-1;3336:34:10;;5433:9075:45;;;;;;;;:::o;:::-;-1:-1:-1;5433:9075:45;6362:17;5433:9075;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;5433:9075:45;;;;;;;;;;;;:::o;:::-;-1:-1:-1;5433:9075:45;6389:20;5433:9075;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;5433:9075:45;;;;;;;;;;;;;;;;6362:17;5433:9075;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6362:17;5433:9075;:::o;:::-;;;;-1:-1:-1;5433:9075:45;;;;;;;;;;;6362:17;5433:9075;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6362:17;5433:9075;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6389:20;5433:9075;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6389:20;5433:9075;:::o;:::-;;;;-1:-1:-1;5433:9075:45;;;;;;;;;;;6389:20;5433:9075;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6389:20;5433:9075;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7090:23;5433:9075;:::o;:::-;;;;:::i;:::-;;;6673:30;5433:9075;;;;;;;;6673:30;5433:9075;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;7822:31;5433:9075;;7822:31;5433:9075;;;;;;;-1:-1:-1;7822:31:45;5433:9075;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;7822:31:45;5433:9075;;;;;;;;;;;;;;;;;;;;;;;;;;;6321:4:44;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;5905:2060:45:-;;5433:9075;;5905:2060;;;;;;;;;;;5433:9075;:::i;:::-;;:::i;:::-;;;;6424:17;6420:64;;6498:19;;;;;:51;;;5905:2060;6494:107;;6629:5;5433:9075;;;6615:19;6611:51;;6673:30;;5433:9075;;6673:30;5433:9075;;;;;;;;6673:30;5433:9075;;6673:30;6713:367;;;-1:-1:-1;6756:28:45;;;5433:9075;;;;:::i;:::-;6824:22;6808:38;;6804:99;;7090:23;7123:25;6752:255;7090:23;5433:9075;;7090:23;5433:9075;;6673:30;5433:9075;;;;;;;;6673:30;5433:9075;;7123:25;5433:9075;;;:::i;:::-;7162:38;7158:96;;6713:367;5433:9075;;;;7263:144;;6713:367;7443:4;;5433:9075;;;;7420:27;7416:85;;6713:367;7515:27;7511:447;;6713:367;5905:2060;;;;:::o;7511:447::-;6440:1;7607:9;;7602:207;7618:27;;;;;;5433:9075;;6321:4:44;5433:9075:45;;;;;:::i;:::-;7871:41;7867:80;;7511:447;;;;;7867:80;7921:26;5433:9075;;7921:26;;;;7607:9;7667:56;7693:19;;7667:56;7693:30;;:19;;;;;;:::i;:::-;:30;;:::i;:::-;5433:9075;;;;7667:56;;;:::i;:::-;5433:9075;;7607:9;;;7416:85;7463:27;5433:9075;;6673:30;5433:9075;;;6673:30;5433:9075;;7463:27;7416:85;;7263:144;7353:43;7317:22;;5433:9075;;6673:30;5433:9075;;;6673:30;5433:9075;;7317:22;5433:9075;;;7353:43;5433:9075;;;7353:43;5433:9075;;7353:43;7263:144;;;7158:96;7216:27;;;:::i;:::-;7158:96;;;6804:99;6875:28;5433:9075;;6875:28;;;;6752:255;7123:25;6942:50;;7090:23;6942:50;;5433:9075;;6713:367;7037:32;5433:9075;-1:-1:-1;7123:25:45;;7090:23;;;5433:9075;:::o;6611:51::-;6643:19;5433:9075;;6643:19;;;;6494:107;6558:43;5433:9075;;6558:43;;;;6498:51;6521:28;;;;6498:51;;6420:64;6450:34;5433:9075;;6450:34;;;;9052:280;5433:9075;;9147:19;;9143:33;;5433:9075;9164:1;5433:9075;9196:9;5433:9075;;;9164:1;5433:9075;;;9242:18;5433:9075;9226:12;5433:9075;;;;;;;:::i;:::-;9226:34;9222:104;;9052:280;;:::o;9222:104::-;9164:1;5433:9075;9287:14;5433:9075;;;9164:1;5433:9075;;;;;;;;;9052:280;:::o;12913:296::-;5433:9075;;;;;5894:42:44;13055:23:45;;13051:40;;5797:42:44;13105:27:45;13101:44;;5433:9075;;3895:37:11;5433:9075:45;;-1:-1:-1;5433:9075:45;3895:18:11;5433:9075:45;;;-1:-1:-1;5433:9075:45;;;;;;;;;;;;;3895:37:11;5433:9075:45;;12913:296;:::o;13101:44::-;13134:11;;;13141:4;13134:11;:::o;13051:40::-;13080:11;;;;13087:4;13080:11;:::o;5433:9075::-;;;;:::o;:::-;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8714:1;5433:9075;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5433:9075:45;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;15943:747:11:-;;;;;;1476:19:25;;16146:538:11;;15943:747;;;;;;;:::o;16146:538::-;16185:83;5433:9075:45;16185:83:11;5433:9075:45;16185:83:11;5433:9075:45;;;;;;;;;;16185:83:11;;;;;;;;:::i;:::-;;5433:9075:45;;16185:83:11;;;;;;;16146:538;-1:-1:-1;16181:493:11;;;;;;;:::i;:::-;;;;;;;;;16146:538;;;;;;;;16181:493;5433:9075:45;;-1:-1:-1;;;16597:62:11;;5433:9075:45;16185:83:11;16597:62;;5433:9075:45;;;;;;;;;;;;;;;;;;16597:62:11;;;;;16181:493;16491:81;;:::i;:::-;;;;16181:493;;;16491:81;16543:14;16491:81;5433:9075:45;;16543:14:11;;;-1:-1:-1;;;16543:14:11;;16185:83;16543:14;;;:::i;16181:493::-;5433:9075:45;;16313:163:11;16181:493;16313:163;5433:9075:45;;-1:-1:-1;;;16407:50:11;;5433:9075:45;16185:83:11;16407:50;;5433:9075:45;;;;;;;;;;;;;;;;;;16597:62:11;16185:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;17516:193;5433:9075:45;;;;;;:::i;:::-;17649:1:11;5433:9075:45;;;;;;;;;;;;;;;17516:193:11;:::o;10565:919:45:-;;;5433:9075;;;10887:10;;;;;;10920:18;;;;;;;:::i;:::-;11364:14;5433:9075;;;;;;;11360:117;;10565:919;;:::o;11360:117::-;11404:13;;;:::i;:::-;:30;11400:66;;10565:919::o;11400:66::-;11443:23;5433:9075;;11443:23;;;;10876:9;5433:9075;;;11120:83;;10876:9;10920:18;5433:9075;10876:9;;11120:83;11178:10;;;;:::i;:::-;5433:9075;11161:13;;;5433:9075;;;;11062:9;5433:9075;;;;;;;11161:13;5433:9075;;;;;;;;;;;;;;11120:83;;10565:919;;;;;;5433:9075;;-1:-1:-1;10887:10:45;;;;;;5433:9075;;;;;;;;;:::i;10876:9::-;5433:9075;;;;;10916:190;;10876:9;5433:9075;;;;11120:83;;10876:9;5433:9075;10876:9;;11120:83;11178:10;;;;:::i;:::-;5433:9075;11161:27;:13;;5433:9075;;;;11062:9;5433:9075;;;;;;;11161:27;5433:9075;;11120:83;;10916:190;10962:18;;10973:6;;;;:::i;10962:18::-;5433:9075;;;;;10962:18;:42;;;;10916:190;10958:85;;5433:9075;11081:10;;;;;:::i;:::-;5433:9075;11062:29;:15;;5433:9075;;;;11062:9;5433:9075;;;;;;;11062:15;5433:9075;;;11062:29;:::i;:::-;5433:9075;;10916:190;;;;10958:85;11013:30;5433:9075;;11013:30;;;;10962:42;-1:-1:-1;10984:20:45;5433:9075;;;;;10962:42;;5433:9075;;;;:::o;:::-;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;1350:904:14;;;;5433:9075:45;1732:3:14;5433:9075:45;;1716:14:14;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;5433:9075:45;1755:34:14;:20;1768:6;;;;:::i;:::-;5433:9075:45;;;1755:12:14;5433:9075:45;;;;;;;1732:3:14;1701:13;;1716:14;;;5433:9075:45;;1828:16:14;1824:424;;1350:904;;;:::o;1824:424::-;5433:9075:45;1896:3:14;5433:9075:45;;1880:14:14;;;;;1932:6;;1896:3;1932:6;;;:::i;:::-;5433:9075:45;2171:16:14;1973:10;;;;:::i;:::-;5433:9075:45;2018:16:14;;5433:9075:45;;1755:12:14;5433:9075:45;;;;;;;2018:16:14;5433:9075:45;2052:69:14;2060:16;;;;2052:69;:::i;:::-;5433:9075:45;2171:16:14;5433:9075:45;;1755:12:14;5433:9075:45;;;;;;;2171:16:14;5433:9075:45;1896:3:14;:::i;:::-;1865:13;;1350:904;;;;;;5433:9075:45;;;;1662:18:14;1658:156;;1350:904;5433:9075:45;1828:16:14;1824:424;;1350:904;;;:::o;1824:424::-;1678:1;1896:3;5433:9075:45;;1880:14:14;;;;;1932:6;;1896:3;1932:6;;;:::i;1896:3::-;1865:13;;1658:156;1701:13;;1678:1;1732:3;5433:9075:45;;1716:14:14;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;5433:9075:45;1755:34:14;:20;1768:6;;;;:::i;1732:3::-;1701:13;;1716:14;;;;1658:156;;5433:9075:45;;;;:::o;:::-;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;10323:1:11;5433:9075:45;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16696:814:11:-;;;;;;1476:19:25;;16924:580:11;;16696:814;;;;;;:::o;16924:580::-;16963:90;5433:9075:45;16963:90:11;5433:9075:45;16963:90:11;5433:9075:45;;;;;;;;;;16963:90:11;;;;;;;;:::i;5433:9075:45:-;;;;;;;:::i;:::-;-1:-1:-1;5433:9075:45;;:::o;8617:110::-;8689:31;8617:110;5433:9075;;;;;;:::i;:::-;;;;8689:31;:::i;5433:9075::-;;;;:::o;:::-;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;9038:709:11;;5433:9075:45;;;9185:16:11;9177:62;9185:16;;;9177:62;:::i;:::-;9314:21;;;:::i;:::-;5433:9075:45;;;;;;;;:::i;:::-;8714:1;5433:9075;;;;;;;;;;;;;;;;;8714:1;;5433:9075;;8714:1;;:::i;:::-;-1:-1:-1;5433:9075:45;;;;9485:9:11;5433:9075:45;;9485:17:11;5433:9075:45;;;;;;;;;;;;;;;;9485:17:11;5433:9075:45;;;8714:1;5433:9075;;;;;;;;;;;;;;;8714:1;5433:9075;;;;9527:52:11;929:10:27;;9527:52:11;;1476:19:25;16146:538:11;;9038:709;;;;;;:::o;16146:538::-;16185:83;5433:9075:45;;;;;;;;;;;;;16185:83:11;;;;929:10:27;16185:83:11;;;;:::i;:::-;;;;;;;;;;;;16146:538;-1:-1:-1;;16181:493:11;;;;8714:1:45;16181:493:11;;;:::i;:::-;;;;;;;;;;16146:538;;;;;;;;16181:493;5433:9075:45;-1:-1:-1;;;16597:62:11;;5433:9075:45;16185:83:11;16597:62;;5433:9075:45;;;;;;;;;;;;;;;;;;16597:62:11;16181:493;16491:81;;:::i;:::-;;;;;16181:493;;;16491:81;-1:-1:-1;5433:9075:45;;-1:-1:-1;;;16543:14:11;;5433:9075:45;;;16543:14:11;;16185:83;16543:14;;;:::i;16181:493::-;5433:9075:45;;16317:66:11;;-1:-1:-1;16313:163:11;;16181:493;;;16313:163;5433:9075:45;-1:-1:-1;;;16407:50:11;;5433:9075:45;16185:83:11;16407:50;;5433:9075:45;;;;;;;;;;;;;;;;;;16597:62:11;16185:83;;;;;;;-1:-1:-1;16185:83:11;;;;;;:::i;:::-;;;;;;9485:302:47;;;;;;:::i;:::-;9593:12;5433:9075:45;;;;;;;;;;;:::i;:::-;9589:71:47;;5433:9075:45;;;;;;;;;;;;;;;;;;-1:-1:-1;9670:72:47;;9433:1:45;;9423:11;;;9433:1;;5433:9075;;;9478:31;5433:9075;;;;;;9488:13;;5433:9075;;;7296:12:47;5433:9075:45;;;7296:12:47;5433:9075:45;;9488:13;5433:9075;;:::i;:::-;9478:31;;:::i;9419:509::-;9577:21;;;;;;:::i;:::-;9639;;;;:::i;:::-;9680:9;-1:-1:-1;9691:10:45;;;;;;5433:9075;;;;9885:32;5433:9075;;;;;:::i;:::-;9885:32;;:::i;9680:9::-;5433:9075;;;;;;;;;;9764:13;;5433:9075;;;7296:12:47;5433:9075:45;;;7296:12:47;5433:9075:45;;9764:13;9755:22;;;;:::i;:::-;5433:9075;9799:14;;;;;:::i;:::-;5433:9075;;9680:9;;10137:791:11;;;;5433:9075:45;;;10301:62:11;10309:16;;;10301:62;:::i;:::-;10373:81;5433:9075:45;;;;10381:28:11;10373:81;:::i;:::-;10395:14;;;;;:::i;:::-;10323:1;10620:3;5433:9075:45;;10604:14:11;;;;;10664:10;;;;:::i;:::-;5433:9075:45;10649:6:11;10639:21;10649:6;10639:17;10649:6;;;;:::i;:::-;5433:9075:45;;;5849:9:11;5433:9075:45;;;;;;;10639:21:11;5433:9075:45;;;;;;;;;;;10620:3:11;5433:9075:45;;10620:3:11;:::i;:::-;10589:13;;10604:14;;;;;;;5433:9075:45;10323:1:11;5433:9075:45;;10700:53:11;929:10:27;10700:53:11;;;;;;;:::i;:::-;;;;1476:19:25;16924:580:11;;10584:101;10137:791;;;;:::o;16924:580::-;16963:90;5433:9075:45;16963:90:11;5433:9075:45;10323:1:11;5433:9075:45;;;;;;;;;16963:90:11;;;;929:10:27;16963:90:11;;;;:::i;:::-;;;;;10323:1;;16963:90;;;16924:580;-1:-1:-1;16959:535:11;;;;;;;:::i;:::-;;;;;;;;;16924:580;;;;;;16959:535;17311:81;;:::i;:::-;;;;16959:535;;;;5433:9075:45;;17128:168:11;16959:535;17128:168;5433:9075:45;;-1:-1:-1;;;17227:50:11;;5433:9075:45;16963:90:11;17227:50;;5433:9075:45;;;;;;;;;;;;;;;;;;16597:62:11;16963:90;;;;;;;;;;;;;;;:::i;:::-;;;;;11659:585:47;;;;:::i;:::-;11763:12;5433:9075:45;;11779:18:47;5433:9075:45;;;;;;;;:::i;:::-;11763:34:47;11759:67;;5433:9075:45;;;11840:22:47;5433:9075:45;;;;11840:22:47;:::i;:::-;5433:9075:45;;;;-1:-1:-1;11836:72:47;;12063:29;11984:12;12063:29;11984:12;11999:1;11984:12;5433:9075:45;11779:18:47;11943;;5433:9075:45;;;;12460:14:47;5433:9075:45;;;;;;;11943:18:47;:38;5433:9075:45;12014:18:47;;5433:9075:45;;;;12460:14:47;5433:9075:45;;;;;;;12014:18:47;5433:9075:45;;;;;;;;11763:12:47;5433:9075:45;;;;;;;;;;;12063:29:47;5433:9075:45;;;7296:12:47;5433:9075:45;;;7296:12:47;5433:9075:45;;13496:346:47;;;13600:10;;;13496:346;;;:::o;13593:243::-;13646:28;8689:31:45;13646:28:47;5433:9075:45;13646:28:47;;;:::i;:::-;5433:9075:45;;;;;;:::i;:::-;;;;8689:31;;:::i;:::-;5433:9075;;13593:243:47;;13496:346;;;;;;13600:10;;;13496:346;;;;:::o;13593:243::-;13646:28;;5433:9075:45;13646:28:47;;;:::i;:::-;5433:9075:45;;;;;;;;:::i;:::-;;8689:31;5433:9075;;;;;8689:31;;;:::i;:::-;13720:41:47;;13593:243;-1:-1:-1;;;5433:9075:45;;13593:243:47;;13720:41;5433:9075:45;;13735:10:47;5433:9075:45;;;13757:4:47;5433:9075:45;;;;;;;13720:41:47;;;;;5433:9075:45;;;;;;;;;;13848:352:47;;5433:9075:45;;13988:37:47;;;;5433:9075:45;;;;;;;;13988:37:47;;;;;:::i;:::-;5433:9075:45;13978:48:47;;5433:9075:45;;14030:15:47;5433:9075:45;;;;;;;;;;;;;14049:1:47;;5433:9075:45;;;;;;;;;13959:91:47;;14061:133;14049:1;;;13848:352;;;:::o;14061:133::-;8589:15:45;;;;-1:-1:-1;5433:9075:45;1033:12:14;5433:9075:45;;;-1:-1:-1;5433:9075:45;;1229:44:14;;1149:131;;8589:15:45;14068:16:47;;;5433:9075:45;;;;;;;;;14061:133:47;;;5433:9075:45;;:::i;14068:16:47:-;-1:-1:-1;14068:16:47;;-1:-1:-1;;13848:352:47:o;15453:328::-;;;;:::i;:::-;15581:12;5433:9075:45;15597:19:47;5433:9075:45;;;;;;;;:::i;:::-;15581:35:47;15577:68;;5433:9075:45;;;;;;;;;;;;;;;;;-1:-1:-1;15656:81:47;;15765:8;;;:::i;5433:9075:45:-;;;;;;;;;;;;;;;;;:::o;9940:619::-;5433:9075;;9940:619;;;5433:9075;;;10098:21;5433:9075;10098:21;;5433:9075;;;;;;;;;10098:21;:::i;:::-;5433:9075;10156:21;;;;:::i;:::-;10193:9;-1:-1:-1;10204:10:45;;;;;;5433:9075;;10515:37;5433:9075;;;;;:::i;10193:9::-;10250:11;;;;:::i;:::-;5433:9075;10288:1;;10275:14;;;;;;:::i;:::-;5433:9075;8589:15;;-1:-1:-1;5433:9075:45;1033:12:14;5433:9075:45;;;-1:-1:-1;5433:9075:45;;1229:44:14;;1149:131;;8589:15:45;10303:49;;10370:12;;;;;:41;;10193:9;10366:70;;;5433:9075;10193:9;;10366:70;10420:16;5433:9075;;10420:16;;;;10370:41;5433:9075;;10386:25;5433:9075;;;;;;;;;;10386:25;-1:-1:-1;10370:41:45;;;10303:49;10332:20;5433:9075;;10332:20;;;;5433:9075;;;;:::o;:::-;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;8477:287:44;5433:9075:45;;;;;8598:73:44;;8663:4;8598:73;;;5433:9075:45;8598:73:44;8615:8;5433:9075:45;8615:8:44;5433:9075:45;8615:8:44;5433:9075:45;8598:73:44;;5433:9075:45;;8598:73:44;;;8594:164;;;8477:287;:::o;6125:128:6:-;6180:66;6188:7;;:::i;5433:9075:45:-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;22000:20:47;5433:9075:45;;;;;;;:::o;:::-;;-1:-1:-1;5433:9075:45;;;:::o;21670:2206:47:-;;;;;;;;;;21954:11;;21950:39;;5433:9075:45;;;;:::i;:::-;22000:41:47;5433:9075:45;;;22000:41:47;:::i;:::-;5433:9075:45;;;;;;;:::i;:::-;;22055:43:47;22051:79;;22145:11;5433:9075:45;;;;22145:20:47;5433:9075:45;;;;22145:20:47;:::i;:::-;5433:9075:45;;;;;-1:-1:-1;22141:70:47;;5433:9075:45;;;;;;;:::i;:::-;22226:33:47;22222:62;;5433:9075:45;;;;22438:448:47;;;;5433:9075:45;22438:448:47;;22640:13;;;;22568:4;;22438:448;;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22438:448:47;;;;;;;;;;;;;;:::i;:::-;5433:9075:45;22407:497:47;;22350:568;;;:::i;:::-;5433:9075:45;;;;;:::i;:::-;22312:639:47;;;:::i;:::-;5433:9075:45;;6138:42:44;22966:28:47;;;:49;;;;21670:2206;22962:81;;;23054:222;;;23090:9;;23086:57;;23054:222;22145:11;5433:9075:45;;;;;;;;:::i;:::-;23306:19:47;23290:35;;23306:19;;5433:9075:45;;;;;;;23346:25:47;23342:66;;23449:9;;;;;:::i;23342:66::-;23380:28;5433:9075:45;;23380:28:47;;;;23286:584;5433:9075:45;;;;;;;;;;;;:::i;:::-;23496:18:47;23480:34;;23496:18;;5433:9075:45;;6130:51:44;23555:27:47;23597:29;5433:9075:45;23597:29:47;5433:9075:45;23670:9:47;5433:9075:45;;;23555:27:47;;;5433:9075:45;23555:27:47;;6130:51:44;;;;:::i;:::-;23555:27:47;;;;;;;;:::i;:::-;5433:9075:45;23545:38:47;;5433:9075:45;;;;22145:11:47;5433:9075:45;;;;;23597:29:47;23670:9;:::i;23476:394::-;5433:9075:45;;;;;;;;;;:::i;:::-;23701:38:47;;23783:9;;;;;:::i;23697:173::-;23832:27;5433:9075:45;;23832:27:47;;;;23086:57;23113:30;5433:9075:45;;23113:30:47;;;;23054:222;23179:14;;;23175:42;;23054:222;23258:6;;;:::i;:::-;23054:222;;23175:42;23207:10;5433:9075:45;;-1:-1:-1;23175:42:47;;22962:81;23024:19;5433:9075:45;;23024:19:47;;;;22966:49;23008:7;;22998:17;23008:7;;:::i;:::-;5433:9075:45;;;;22998:17:47;;;22966:49;;;22222:62;22268:16;5433:9075:45;;22268:16:47;;;;22051:79;22107:23;5433:9075:45;;22107:23:47;;;;21950:39;21974:15;5433:9075:45;;21974:15:47;;;;3683:227:30;3871:5;3683:227;3822:27;3683:227;3822:27;:::i;:::-;3871:5;;;5433:9075:45;;;:::i;:::-;660:29:30;;;705:7;:::o;656:441::-;5433:9075:45;;;:::i;:::-;765:29:30;756:38;;765:29;;5433:9075:45;;-1:-1:-1;;;810:34:30;;5433:9075:45;810:34:30;;;5433:9075:45;;;;;;;;;;;;;16597:62:11;752:345:30;5433:9075:45;;;:::i;:::-;874:35:30;865:44;;874:35;;5433:9075:45;;-1:-1:-1;;;925:41:30;;5433:9075:45;925:41:30;;;5433:9075:45;;;;;;;;;;;;;16597:62:11;861:236:30;5433:9075:45;;996:30:30;5433:9075:45;;:::i;:::-;987:39:30;983:114;;592:511::o;983:114::-;5433:9075:45;;-1:-1:-1;;;1042:44:30;;5433:9075:45;1042:44:30;;;5433:9075:45;;;;;;;;;;;;;;;;;;16597:62:11;2167:730:30;;2305:2;5433:9075:45;;2285:22:30;2281:610;2305:2;;;2768:25;2568:180;;;;;;;;;;;;;;-1:-1:-1;2568:180:30;2768:25;;:::i;:::-;2761:32;;:::o;2281:610::-;2824:56;;2840:1;2824:56;2844:35;2824:56;:::o;5091:1494::-;;;;6141:66;6128:79;;6124:161;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6396:24:30;;;;;;;;;;;;;;5433:9075:45;;;6434:20:30;6430:101;;6541:37;5091:1494;:::o;6430:101::-;6470:50;6396:24;6470:50;:::o;6124:161::-;6223:51;;;;6239:1;6223:51;6243:30;6223:51;:::o;7278:265::-;5433:9075:45;;7477:58:30;;;5433:9075:45;;;;;;;;;7477:58:30;;;;;:::i;:::-;5433:9075:45;7467:69:30;;7278:265;:::o;9793:332:47:-;-1:-1:-1;9885:9:47;;9896:10;;;;;;9793:332;;;;;:::o;9885:9::-;9962:13;5433:9075:45;;;;;;;8689:31;5433:9075;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8689:31;;:::i;:::-;10004:45:47;;9885:9;5433:9075:45;;;9885:9:47;;10004:45;10019:30;5433:9075:45;10019:23:47;5433:9075:45;;;;;;;18432:10:47;5433:9075:45;;;;;;;10019:30:47;10004:45;;;;15787:430;;15929:8;15787:430;15929:8;:::i;:::-;5433:9075:45;;16003:208:47;;;15787:430;;:::o;16003:208::-;-1:-1:-1;16037:9:47;;16048:15;;;;;;16003:208;;15787:430;;:::o;16037:9::-;16096:11;;;;:::i;:::-;5433:9075:45;;;16085:10:47;5433:9075:45;;;;;16111:4:47;;5433:9075:45;;;;;;;;;;16037:9:47;;5433:9075:45;;;;;;;;;;;;;:::o;25114:1062:47:-;;5433:9075:45;25302:26:47;;5433:9075:45;;;;25302:15:47;5433:9075:45;;;;;;;25302:26:47;5433:9075:45;;;;;25374:39:47;:26;;5433:9075:45;;;;25302:15:47;5433:9075:45;;;;;;;25374:26:47;5433:9075:45;;;;;;;25374:39:47;25456:26;25736:28;25456:46;:26;;5433:9075:45;;;;25302:15:47;5433:9075:45;;;;;;;25456:26:47;5433:9075:45;;;;;;;25456:46:47;25298:398;25736:28;:::i;:::-;5433:9075:45;25734:54:47;25735:43;25768:10;5433:9075:45;;;;;25735:43:47;:::i;:::-;25736:6;5433:9075:45;;;;25734:54:47;25833:6;;;;:::i;:::-;5433:9075:45;;;25854:23:47;;25850:320;;25114:1062;;;;;;:::o;25850:320::-;26062:54;5433:9075:45;25920:46:47;25919:66;5433:9075:45;25920:55:47;5433:9075:45;26062:35:47;5433:9075:45;;25920:46:47;:::i;:::-;:55;:::i;25919:66::-;5433:9075:45;25999:49:47;;5433:9075:45;25999:49:47;5433:9075:45;25999:49:47;:::i;:::-;;5433:9075:45;;25999:49:47;5433:9075:45;;;;26062:24:47;5433:9075:45;;;;;;;26062:54:47;5433:9075:45;;26135:24:47;-1:-1:-1;26135:24:47;;25850:320;;;;;;;;25298:398;5433:9075:45;;;25302:15:47;5433:9075:45;;;;;;;;;;;25736:28:47;;25638:47;;:27;5433:9075:45;26182:806:47;26228:13;5433:9075:45;;;;;;;;:::i;:::-;26245:16:47;26228:33;;26224:758;;26182:806;:::o;26224:758::-;5433:9075:45;;;:::i;:::-;26298:19:47;26281:36;;26298:19;;-1:-1:-1;26360:18:47;5433:9075:45;26341:15:47;:37;26360:18;;26402:32;5433:9075:45;;26228:13:47;5433:9075:45;;;26228:13:47;5433:9075:45;;26402:32:47;5433:9075:45;26456:26:47;26360:18;5433:9075:45;;26337:237:47;26536:19;5433:9075:45;;26536:19:47;;;;26277:695;5433:9075:45;;26615:27:47;5433:9075:45;;:::i;:::-;26598:44:47;26615:27;;26684:18;5433:9075:45;26666:15:47;:36;26662:109;;26811:17;5433:9075:45;26666:15:47;26792:36;26277:695;26788:104;26615:27;5433:9075:45;;26859:14:47;;;;26594:378;26615:27;5433:9075:45;;26938:19:47;;;;26994:534;27079:15;5433:9075:45;;;;;;;;;;7257:1:47;5433:9075:45;;;;;;;27124:9:47;:35;27120:64;;26994:534::o;27120:64::-;27168:16;5433:9075:45;;27168:16:47;;;;27075:447;27220:16;;27216:29;;5433:9075:45;;;7257:1:47;5433:9075:45;;;27486:11:47;5433:9075:45;;27388:20:47;5433:9075:45;;27463:4:47;27427:10;;27486:11;;:::i;27216:29::-;27238:7;:::o;26994:534::-;27079:15;5433:9075:45;;;;;;;27138:20:47;;;;:::i;:::-;27124:9;:35;27120:64;;26994:534::o;27075:447::-;27220:16;;27216:29;;27486:11;27280:20;;;;:::i;:::-;5433:9075:45;27388:20:47;5433:9075:45;;27463:4:47;27427:10;;27486:11;;:::i;27216:29::-;27238:7;;:::o;1040:252:18:-;;-1:-1:-1;1040:252:18;5341:69:25;1040:252:18;5433:9075:45;;1216:68:18;;;;;;;5433:9075:45;1216:68:18;;5433:9075:45;;;;;;1216:68:18;;;5433:9075:45;;;;;;;;;;;1216:68:18;;;;;:::i;:::-;5433:9075:45;;;;;;;;:::i;:::-;;;;;;;;;5293:31:25;;;;;;5433:9075:45;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;5433:9075:45;;;;5341:69:25;:::i;:::-;5433:9075:45;;4407:21:18;;4403:176;;1040:252;;;:::o;4403:176::-;4491:30;4483:85;4491:30;;;;;;;;;:::i;:::-;4483:85;:::i;5433:9075:45:-;;;5341:69:25;:::i;5433:9075:45:-;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;;;;;;6589:628:25;;;;6793:418;;;5433:9075:45;;;6824:22:25;6820:286;;7119:17;;:::o;6820:286::-;1476:19;:23;5433:9075:45;;7119:17:25;:::o;5433:9075:45:-;;;;-1:-1:-1;;;5433:9075:45;;;;;;;;;;;;;;;;;;6793:418:25;5433:9075:45;;;;-1:-1:-1;7898:21:25;:17;;8070:142;;;;;;;27751:720:47;27819:21;5433:9075:45;;;;;;;;:::i;:::-;27844:35:47;27819:60;;27844:35;;-1:-1:-1;5433:9075:45;;;27896:65:47;;27945:4;27896:65;;;5433:9075:45;;;;;;5688:51:44;;;5433:9075:45;27896:65:47;5433:9075:45;5688:51:44;5433:9075:45;6034:42:44;27896:65:47;;;;;;;;27815:648;27751:720::o;27896:65::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;27815:648;5433:9075:45;;;:::i;:::-;27983:69:47;27979:484;;27815:648;27751:720::o;27979:484::-;6034:42:44;28073:43:47;;28069:384;;27979:484;27238:7;:::o;28069:384::-;28144:80;;;;;5433:9075:45;;;28144:80:47;;28196:4;28144:80;;;5433:9075:45;5696:42:44;5688:51;;;5433:9075:45;-1:-1:-1;5433:9075:45;5688:51:44;5433:9075:45;-1:-1:-1;28144:80:47;;;;;;;28069:384;28140:299;;28069:384;28140:299;28329:65;28248:59;28329:65;28248:59;;5688:51:44;;27819:21:47;5688:51:44;;;27819:21:47;5688:51:44;;28248:59:47;5433:9075:45;;;28329:65:47;;28196:4;28144:80;28329:65;;5433:9075:45;;;;;5688:51:44;;;5433:9075:45;;;;;-1:-1:-1;5433:9075:45;;;;5688:51:44;;;;;28329:65:47;;;;;;;;;;;27238:7;:::o;28144:80::-;;;;;;:::i;:::-;;;:::i;:::-;;;;28477:604;28570:505;;;;;;;;28544:15;;28570:505;;;;;;;;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"4223200","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite","airdropRandom(address[],bool)":"infinite","airdropSequential(address[],bool)":"infinite","airdropSpecify(address[],uint256[],bool)":"infinite","balanceOf(address)":"7301","balanceOf(address,uint256)":"2528","balanceOfBatch(address[],uint256[])":"infinite","exists(uint256)":"2707","getSupplies(uint256,uint256)":"infinite","initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":"infinite","isApprovedForAll(address,address)":"infinite","isMetadataFixed()":"4555","maxPerAddress()":"2670","mint()":"infinite","mint(uint256)":"infinite","mint(uint256,address)":"infinite","mintCustomURITo(address,bytes32,bool)":"infinite","mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":"infinite","mintPrice()":"2680","mintRandomTo(address,uint256)":"infinite","mintRandomTo(address,uint256,address)":"infinite","mintSpecifyTo(address,uint256[])":"infinite","mintSpecifyTo(address,uint256[],address)":"infinite","mintTo(address,uint256)":"infinite","mintTo(address,uint256,address)":"infinite","n2mVersion()":"907","name()":"infinite","owner()":"infinite","redeemRandom()":"infinite","royaltyInfo(uint256,uint256)":"2583","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"infinite","safeTransferFrom(address,address,uint256,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"infinite","supportsInterface(bytes4)":"406","symbol()":"infinite","tokenURI(uint256)":"infinite","totalSupply()":"2400","totalSupply(uint256)":"3010","uri(uint256)":"infinite"},"internal":{"_beforeTokenTransfer(address,address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_exists(uint256)":"infinite","_mint(address,uint256)":"infinite","_mintSequential(address,uint256)":"infinite","_mintSpecify(address,uint256[] memory)":"infinite"}},"methodIdentifiers":{"airdropRandom(address[],bool)":"be172edf","airdropSequential(address[],bool)":"68fdda33","airdropSpecify(address[],uint256[],bool)":"71e6775f","balanceOf(address)":"70a08231","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","exists(uint256)":"4f558e79","getSupplies(uint256,uint256)":"798f4794","initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":"5066e5c2","isApprovedForAll(address,address)":"e985e9c5","isMetadataFixed()":"0de77eb8","maxPerAddress()":"639814e0","mint()":"1249c58b","mint(uint256)":"a0712d68","mint(uint256,address)":"94bf804d","mintCustomURITo(address,bytes32,bool)":"6ad54240","mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":"9d13a5ba","mintPrice()":"6817c76c","mintRandomTo(address,uint256)":"1d7df191","mintRandomTo(address,uint256,address)":"fefa5d72","mintSpecifyTo(address,uint256[])":"4402d254","mintSpecifyTo(address,uint256[],address)":"4a50aa85","mintTo(address,uint256)":"449a52f8","mintTo(address,uint256,address)":"438b1b4b","n2mVersion()":"cb93c48f","name()":"06fdde03","owner()":"8da5cb5b","redeemRandom()":"1ff4cc7d","royaltyInfo(uint256,uint256)":"2a55205a","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","totalSupply(uint256)":"bd85b039","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"libraryAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"factoryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filtered\",\"type\":\"address\"}],\"name\":\"AddressFiltered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantLowerCurrentPercentages\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantRevealYetWaitABitToBeAbleToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSetBaseURIAndPlaceholderAtTheSameTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CollectionSoldOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractMetadataURIAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputSizeMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDropDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputSizesDontMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFeeForFreeMinting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercentageOrDiscountValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPhaseWithoutDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevenuePercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerAddressExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetadataAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBaseURICantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPlaceholderCantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseURINorPlaceholderSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonTransferrableSoulboundNFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughAmountToMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAffiliateOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOwnerOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleInvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PublicSaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoyaltyFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaleFinished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyMinted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WaitUntilDropDate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"AffiliateSell\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSequential\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSpecify\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endId\",\"type\":\"uint256\"}],\"name\":\"getSupplies\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"supplies\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockTimestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"iMintPrice\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"baseURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"placeholderImageCIDHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"percentage\",\"type\":\"uint16\"}],\"internalType\":\"struct IN2M_ERCStorage.RevenueAddress[]\",\"name\":\"revenueAddresses\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"iErc20PaymentAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"iTotalSupply\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"iRoyaltyFee\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"soulboundCollection\",\"type\":\"bool\"},{\"internalType\":\"enum IN2M_ERCStorage.MintingType\",\"name\":\"iMintingType\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":[],\"name\":\"isMetadataFixed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPerAddress\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"customURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"mintCustomURITo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"freeMinting\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"customFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"mintPresale\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"collectionOwner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"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\":\"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\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"The NFTs2Me Team\",\"custom:security-contact\":\"security@nfts2me.com\",\"custom:terms-of-service\":\"https://nfts2me.com/terms-of-service/\",\"custom:website\":\"https://nfts2me.com/\",\"events\":{\"AffiliateSell(address)\":{\"params\":{\"affiliate\":\"The affiliate address\"}},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"airdropRandom(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSequential(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSpecify(address[],uint256[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"balanceOf(address)\":{\"params\":{\"owner\":\"to ask for the balance\"},\"returns\":{\"balance\":\"of the `owner`\"}},\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"isApprovedForAll(address,address)\":{\"params\":{\"operator\":\"Address of authorized operator\",\"owner\":\"The owner of the tokens\"},\"returns\":{\"_0\":\"True if the operator is approved, false if not\"}},\"maxPerAddress()\":{\"returns\":{\"_0\":\"Max per address allowed.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint\"}},\"mint(uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint\"}},\"mintCustomURITo(address,bytes32,bool)\":{\"params\":{\"customURICIDHash\":\"The CID of the given token.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The address of the NFTs receiver\"}},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"amount\":\"Amount to mint.\",\"customFee\":\"Zero is fee is different from `mintingPrice`.\",\"freeMinting\":\"True is minting is free\",\"maxAmount\":\"Max Amount to be minted with the given `signature`.\",\"signature\":\"Valid `signature` for the presale/whitelist.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\"}},\"mintPrice()\":{\"returns\":{\"_0\":\"Mint price for one NFT in native coin or ERC-20.\"}},\"mintRandomTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintRandomTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintSpecifyTo(address,uint256[])\":{\"params\":{\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintSpecifyTo(address,uint256[],address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"name()\":{\"returns\":{\"_0\":\"the collection name\"}},\"royaltyInfo(uint256,uint256)\":{\"params\":{\"salePrice\":\"The sale price\"},\"returns\":{\"receiver\":\"the receiver of the royalties.\",\"royaltyAmount\":\"the amount of the royalties for the given input.\"}},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"MUST emit the ApprovalForAll event on success.\",\"params\":{\"approved\":\"True if the operator is approved, false to revoke approval\",\"operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceId\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceId` and `interfaceId` is not 0xffffffff, `false` otherwise\"}},\"totalSupply()\":{\"returns\":{\"_0\":\"Current total supply.\"}},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"uri(uint256)\":{\"params\":{\"tokenId\":\"of the token to ask for\"},\"returns\":{\"_0\":\"tokenURI for `tokenId`\"}}},\"stateVariables\":{\"symbol\":{\"return\":\"the collection symbol\",\"returns\":{\"_0\":\"the collection symbol\"}}},\"title\":\"NFTs2Me.com Smart Contracts for ERC-1155.\",\"version\":1},\"userdoc\":{\"errors\":{\"AddressFiltered(address)\":[{\"notice\":\"Operator address is filtered\"}],\"CantLowerCurrentPercentages()\":[{\"notice\":\"Can't lower current percentages\"}],\"CantRevealYetWaitABitToBeAbleToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets too soon\"}],\"CantSetBaseURIAndPlaceholderAtTheSameTime()\":[{\"notice\":\"Can't set BaseURI and Placeholder at the same time\"}],\"CollectionSoldOut()\":[{\"notice\":\"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\"}],\"ContractMetadataURIAlreadyFixed()\":[{\"notice\":\"Contract MetadataURI already fixed\"}],\"InputSizeMismatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidAmount()\":[{\"notice\":\"Error thrown when the input amount is not valid\"}],\"InvalidDropDate()\":[{\"notice\":\"Invalid drop date\"}],\"InvalidInputSizesDontMatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidMintFee()\":[{\"notice\":\"Error thrown when the sent amount is not valid\"}],\"InvalidMintFeeForFreeMinting()\":[{\"notice\":\"Error thrown when sending funds to a free minting\"}],\"InvalidMintingType()\":[{\"notice\":\"Invalid collection minting type for the current minting function\"}],\"InvalidPercentageOrDiscountValues()\":[{\"notice\":\"Invalid percentage or discount values\"}],\"InvalidPhaseWithoutDate()\":[{\"notice\":\"Invalid phase can't be set without giving a date, use the proper functions\"}],\"InvalidRevenuePercentage()\":[{\"notice\":\"The input revenue percentages are not valid\"}],\"InvalidTokenId()\":[{\"notice\":\"Error thrown when trying to mint a token with a given invalid id\"}],\"MaxPerAddressExceeded()\":[{\"notice\":\"The address exceeded the max per address amount\"}],\"MetadataAlreadyFixed()\":[{\"notice\":\"Metadata is already fixed. Can't change metadata once fixed\"}],\"NewBaseURICantBeEmpty()\":[{\"notice\":\"New BaseURI can't be empty\"}],\"NewPlaceholderCantBeEmpty()\":[{\"notice\":\"New Placeholder can't be empty\"}],\"NoBaseURINorPlaceholderSet()\":[{\"notice\":\"No BaseURI nor Placeholder set\"}],\"NonTransferrableSoulboundNFT()\":[{\"notice\":\"Can't transfer a Soulbound Token (SBT)\"}],\"NotEnoughAmountToMint()\":[{\"notice\":\"Error thrown when trying to mint more than the allowance to mint\"}],\"NothingToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets with no amount to redeem\"}],\"OnlyAffiliateOrN2M()\":[{\"notice\":\"Only the given affiliate or N2M can call this function\"}],\"OnlyOwnerOrN2M()\":[{\"notice\":\"Only owner of N2M can call this function\"}],\"PresaleInvalidMintingType()\":[{\"notice\":\"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\"}],\"PresaleNotOpen()\":[{\"notice\":\"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\"}],\"PublicSaleNotOpen()\":[{\"notice\":\"Error thrown when trying to mint and the collection current phase is not `open`\"}],\"ReentrancyGuard()\":[{\"notice\":\"Reentrancy Guard protection\"}],\"RoyaltyFeeTooHigh()\":[{\"notice\":\"Royalty fee can't be higher than 10%\"}],\"SaleFinished()\":[{\"notice\":\"Error thrown when trying to mint but the sale has already finished\"}],\"SignatureExpired()\":[{\"notice\":\"The signature has expired\"}],\"SignatureMismatch()\":[{\"notice\":\"The given signature doesn't match the input values\"}],\"TokenAlreadyMinted()\":[{\"notice\":\"Error thrown when trying to mint a token with a given id which is already minted\"}],\"TotalSupplyMustBeGreaterThanZero()\":[{\"notice\":\"Invalid input. Total supply must be greater than zero\"}],\"WaitUntilDropDate()\":[{\"notice\":\"Can't mint until specified drop date\"}]},\"events\":{\"AffiliateSell(address)\":{\"notice\":\"This event is emitted when a token is minted using an affiliate\"}},\"kind\":\"user\",\"methods\":{\"airdropRandom(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\"},\"airdropSequential(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\"},\"airdropSpecify(address[],uint256[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\"},\"balanceOf(address)\":{\"notice\":\"Balance of a given address for ERC-1155 (non-standard).\"},\"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)\":{\"notice\":\"To be called to create the collection. Can only be called once.\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Queries the approval status of an operator for a given owner.\"},\"isMetadataFixed()\":{\"notice\":\"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\"},\"maxPerAddress()\":{\"notice\":\"Max amount of NFTs to be hold per address.\"},\"mint()\":{\"notice\":\"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256,address)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintCustomURITo(address,bytes32,bool)\":{\"notice\":\"Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\"},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\"},\"mintPrice()\":{\"notice\":\"Returns the minting price of one NFT.\"},\"mintRandomTo(address,uint256)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintRandomTo(address,uint256,address)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintSpecifyTo(address,uint256[])\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintSpecifyTo(address,uint256[],address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256)\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256,address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"n2mVersion()\":{\"notice\":\"Current version of the nfts2me.com contracts.\"},\"name()\":{\"notice\":\"Collection name\"},\"owner()\":{\"notice\":\"Returns the address of the current collection owner.\"},\"redeemRandom()\":{\"notice\":\"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\"},\"royaltyInfo(uint256,uint256)\":{\"notice\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of the caller's tokens.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenURI(uint256)\":{\"notice\":\"alias for `uri`\"},\"totalSupply()\":{\"notice\":\"Returns the current total supply.\"},\"uri(uint256)\":{\"notice\":\"tokenURI of the given token\"}},\"notice\":\"Read our terms of service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/N2MERC1155.sol\":\"N2MERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IN2MCrossFactory {\\n function getN2MTreasuryAddress() external pure returns (address);\\n function ownerOf(uint256 tokenId) external view returns (address);\\n function strictOwnerOf(uint256 tokenId) external view returns (address);\\n}\\n\",\"keccak256\":\"0xa82780a2da4848f8c0f93e1a2da64e9b7e90869803050e6921863fe5683af43d\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCBase is IERC2981Upgradeable, IN2M_ERCStorage {\\n /// @notice To be called to create the collection. Can only be called once.\\n function initialize\\n (\\n string memory tokenName,\\n string memory tokenSymbol,\\n uint256 iMintPrice,\\n bytes32 baseURICIDHash,\\n bytes32 placeholderImageCIDHash,\\n RevenueAddress[] calldata revenueAddresses,\\n address iErc20PaymentAddress,\\n uint32 iTotalSupply,\\n uint16 iRoyaltyFee,\\n bool soulboundCollection,\\n MintingType iMintingType\\n ) external payable;\\n\\n /// @notice A descriptive name for a collection of NFTs in this contract\\n function name() external view returns (string memory);\\n\\n /// @notice An abbreviated name for NFTs in this contract\\n /// @return the collection symbol\\n function symbol() external view returns (string memory);\\n\\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\\n /// 3986. The URI may point to a JSON file that conforms to the \\\"ERC721\\n /// Metadata JSON Schema\\\".\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable; \\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds) external payable; \\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) external payable; \\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(address[] memory to, uint256[] memory tokenIds, bool soulbound) external payable;\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale (\\n address to, \\n uint256[] memory tokenIds,\\n bool freeMinting, \\n uint256 customFee, \\n uint256 maxAmount,\\n uint256 amount, \\n bool soulbound,\\n bytes calldata signature) payable external;\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256);\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256);\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view returns (uint16);\\n\\n}\\n\\n\",\"keccak256\":\"0xfded09e330fd4f048b81b38352d7c4480b09f691dc1360a6857f1b5d9681b7f4\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"../important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0xfda5b953ecaa603de1c1b1c789767ea9aa2e1b9d5e12b7e1af68c581e35c225f\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IOperatorFilterRegistry {\\n function isOperatorAllowed(address registrant, address operator) external view returns (bool);\\n function register(address registrant) external;\\n function registerAndSubscribe(address registrant, address subscription) external;\\n function registerAndCopyEntries(address registrant, address registrantToCopy) external;\\n function updateOperator(address registrant, address operator, bool filtered) external;\\n function updateOperators(address registrant, address[] calldata operators, bool filtered) external;\\n function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;\\n function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;\\n function subscribe(address registrant, address registrantToSubscribe) external;\\n function unsubscribe(address registrant, bool copyExistingEntries) external;\\n function subscriptionOf(address addr) external returns (address registrant);\\n function subscribers(address registrant) external returns (address[] memory);\\n function subscriberAt(address registrant, uint256 index) external returns (address);\\n function copyEntriesOf(address registrant, address registrantToCopy) external;\\n function isOperatorFiltered(address registrant, address operator) external returns (bool);\\n function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);\\n function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);\\n function filteredOperators(address addr) external returns (address[] memory);\\n function filteredCodeHashes(address addr) external returns (bytes32[] memory);\\n function filteredOperatorAt(address registrant, uint256 index) external returns (address);\\n function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);\\n function isRegistered(address addr) external view returns (bool);\\n function codeHashOf(address addr) external view returns (bytes32);\\n}\",\"keccak256\":\"0x94297c604eea7c0dcac072ec8257d58f3927fc2c1f22b41c9f78d82e4a8cf5a5\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract NFTOwnableUpgradeable is Initializable, ContextUpgradeable {\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n modifier onlyStrictOwner() {\\n _checkStrictOwner();\\n _;\\n }\\n\\n modifier onlyOwnerOrN2M() {\\n _checkOwnerOrN2M();\\n _;\\n }\\n\\n modifier onlyN2M() {\\n _checkN2M();\\n _;\\n }\\n\\n /// @notice Returns the address of the current collection owner.\\n /// @return The address of the owner.\\n function owner() public view virtual returns (address);\\n function _strictOwner() internal view virtual returns (address);\\n function _getN2MFeeAddress() internal view virtual returns (address);\\n\\n function _checkOwner() internal view virtual {\\n require(owner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkStrictOwner() internal view virtual {\\n require(_strictOwner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkOwnerOrN2M() internal view virtual {\\n require(owner() == msg.sender || _getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkN2M() internal view virtual {\\n require(_getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n}\",\"keccak256\":\"0x0b3a2ca7a3f09ec6c3e387f9102e32bf755baf64986076d114f584fea0f17b38\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/IVotes.sol)\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\\n *\\n * _Available since v4.5._\\n */\\ninterface IVotesUpgradeable {\\n /**\\n * @dev Emitted when an account changes their delegate.\\n */\\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\\n\\n /**\\n * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\\n */\\n event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance);\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n */\\n function getPastVotes(address account, uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n */\\n function getPastTotalSupply(uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) external view returns (address);\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) external;\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n}\\n\",\"keccak256\":\"0xe8e2d2f70db1913260634f710cc057d669b06eccf4dca27e18b79c3bbb101da6\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (governance/utils/Votes.sol)\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/CountersUpgradeable.sol\\\";\\nimport \\\"../../utils/CheckpointsUpgradeable.sol\\\";\\nimport \\\"../../utils/cryptography/EIP712Upgradeable.sol\\\";\\nimport \\\"./IVotesUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This is a base abstract contract that tracks voting units, which are a measure of voting power that can be\\n * transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of\\n * \\\"representative\\\" that will pool delegated voting units from different accounts and can then use it to vote in\\n * decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to\\n * delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative.\\n *\\n * This contract is often combined with a token contract such that voting units correspond to token units. For an\\n * example, see {ERC721Votes}.\\n *\\n * The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed\\n * at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the\\n * cost of this history tracking optional.\\n *\\n * When using this module the derived contract must implement {_getVotingUnits} (for example, make it return\\n * {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the\\n * previous example, it would be included in {ERC721-_beforeTokenTransfer}).\\n *\\n * _Available since v4.5._\\n */\\nabstract contract VotesUpgradeable is Initializable, IVotesUpgradeable, ContextUpgradeable, EIP712Upgradeable {\\n function __Votes_init() internal onlyInitializing {\\n }\\n\\n function __Votes_init_unchained() internal onlyInitializing {\\n }\\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\\n using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n bytes32 private constant _DELEGATION_TYPEHASH =\\n keccak256(\\\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\\\");\\n\\n mapping(address => address) private _delegation;\\n mapping(address => CheckpointsUpgradeable.History) private _delegateCheckpoints;\\n CheckpointsUpgradeable.History private _totalCheckpoints;\\n\\n mapping(address => CountersUpgradeable.Counter) private _nonces;\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) public view virtual override returns (uint256) {\\n return _delegateCheckpoints[account].latest();\\n }\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n *\\n * Requirements:\\n *\\n * - `blockNumber` must have been already mined\\n */\\n function getPastVotes(address account, uint256 blockNumber) public view virtual override returns (uint256) {\\n return _delegateCheckpoints[account].getAtProbablyRecentBlock(blockNumber);\\n }\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n *\\n * Requirements:\\n *\\n * - `blockNumber` must have been already mined\\n */\\n function getPastTotalSupply(uint256 blockNumber) public view virtual override returns (uint256) {\\n require(blockNumber < block.number, \\\"Votes: block not yet mined\\\");\\n return _totalCheckpoints.getAtProbablyRecentBlock(blockNumber);\\n }\\n\\n /**\\n * @dev Returns the current total supply of votes.\\n */\\n function _getTotalSupply() internal view virtual returns (uint256) {\\n return _totalCheckpoints.latest();\\n }\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) public view virtual override returns (address) {\\n return _delegation[account];\\n }\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) public virtual override {\\n address account = _msgSender();\\n _delegate(account, delegatee);\\n }\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public virtual override {\\n require(block.timestamp <= expiry, \\\"Votes: signature expired\\\");\\n address signer = ECDSAUpgradeable.recover(\\n _hashTypedDataV4(keccak256(abi.encode(_DELEGATION_TYPEHASH, delegatee, nonce, expiry))),\\n v,\\n r,\\n s\\n );\\n require(nonce == _useNonce(signer), \\\"Votes: invalid nonce\\\");\\n _delegate(signer, delegatee);\\n }\\n\\n /**\\n * @dev Delegate all of `account`'s voting units to `delegatee`.\\n *\\n * Emits events {IVotes-DelegateChanged} and {IVotes-DelegateVotesChanged}.\\n */\\n function _delegate(address account, address delegatee) internal virtual {\\n address oldDelegate = delegates(account);\\n _delegation[account] = delegatee;\\n\\n emit DelegateChanged(account, oldDelegate, delegatee);\\n _moveDelegateVotes(oldDelegate, delegatee, _getVotingUnits(account));\\n }\\n\\n /**\\n * @dev Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to`\\n * should be zero. Total supply of voting units will be adjusted with mints and burns.\\n */\\n function _transferVotingUnits(\\n address from,\\n address to,\\n uint256 amount\\n ) internal virtual {\\n if (from == address(0)) {\\n _totalCheckpoints.push(_add, amount);\\n }\\n if (to == address(0)) {\\n _totalCheckpoints.push(_subtract, amount);\\n }\\n _moveDelegateVotes(delegates(from), delegates(to), amount);\\n }\\n\\n /**\\n * @dev Moves delegated votes from one delegate to another.\\n */\\n function _moveDelegateVotes(\\n address from,\\n address to,\\n uint256 amount\\n ) private {\\n if (from != to && amount > 0) {\\n if (from != address(0)) {\\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[from].push(_subtract, amount);\\n emit DelegateVotesChanged(from, oldValue, newValue);\\n }\\n if (to != address(0)) {\\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[to].push(_add, amount);\\n emit DelegateVotesChanged(to, oldValue, newValue);\\n }\\n }\\n }\\n\\n function _add(uint256 a, uint256 b) private pure returns (uint256) {\\n return a + b;\\n }\\n\\n function _subtract(uint256 a, uint256 b) private pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Consumes a nonce.\\n *\\n * Returns the current value and increments nonce.\\n */\\n function _useNonce(address owner) internal virtual returns (uint256 current) {\\n CountersUpgradeable.Counter storage nonce = _nonces[owner];\\n current = nonce.current();\\n nonce.increment();\\n }\\n\\n /**\\n * @dev Returns an address nonce.\\n */\\n function nonces(address owner) public view virtual returns (uint256) {\\n return _nonces[owner].current();\\n }\\n\\n /**\\n * @dev Returns the contract's {EIP712} domain separator.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32) {\\n return _domainSeparatorV4();\\n }\\n\\n /**\\n * @dev Must return the voting units held by an account.\\n */\\n function _getVotingUnits(address) internal view virtual returns (uint256);\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[46] private __gap;\\n}\\n\",\"keccak256\":\"0x03d4e5b8237229d370c92981f6642e67c075c3cc4f759a76ea4c73a2b27d36e5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n */\\n function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n external\\n view\\n returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC1155/ERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC1155Upgradeable.sol\\\";\\nimport \\\"./IERC1155ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC1155MetadataURIUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the basic standard multi-token.\\n * See https://eips.ethereum.org/EIPS/eip-1155\\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\\n *\\n * _Available since v3.1._\\n */\\ncontract ERC1155Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC1155Upgradeable, IERC1155MetadataURIUpgradeable {\\n using AddressUpgradeable for address;\\n\\n // Mapping from token ID to account balances\\n mapping(uint256 => mapping(address => uint256)) private _balances;\\n\\n // Mapping from account to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\\n string private _uri;\\n\\n /**\\n * @dev See {_setURI}.\\n */\\n function __ERC1155_init(string memory uri_) internal onlyInitializing {\\n __ERC1155_init_unchained(uri_);\\n }\\n\\n function __ERC1155_init_unchained(string memory uri_) internal onlyInitializing {\\n _setURI(uri_);\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n return\\n interfaceId == type(IERC1155Upgradeable).interfaceId ||\\n interfaceId == type(IERC1155MetadataURIUpgradeable).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC1155MetadataURI-uri}.\\n *\\n * This implementation returns the same URI for *all* token types. It relies\\n * on the token type ID substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * Clients calling this function must replace the `\\\\{id\\\\}` substring with the\\n * actual token type ID.\\n */\\n function uri(uint256) public view virtual override returns (string memory) {\\n return _uri;\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\\n require(account != address(0), \\\"ERC1155: address zero is not a valid owner\\\");\\n return _balances[id][account];\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOfBatch}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(address[] memory accounts, uint256[] memory ids)\\n public\\n view\\n virtual\\n override\\n returns (uint256[] memory)\\n {\\n require(accounts.length == ids.length, \\\"ERC1155: accounts and ids length mismatch\\\");\\n\\n uint256[] memory batchBalances = new uint256[](accounts.length);\\n\\n for (uint256 i = 0; i < accounts.length; ++i) {\\n batchBalances[i] = balanceOf(accounts[i], ids[i]);\\n }\\n\\n return batchBalances;\\n }\\n\\n /**\\n * @dev See {IERC1155-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC1155-isApprovedForAll}.\\n */\\n function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[account][operator];\\n }\\n\\n /**\\n * @dev See {IERC1155-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeTransferFrom(from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev See {IERC1155-safeBatchTransferFrom}.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeBatchTransferFrom(from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n\\n emit TransferSingle(operator, from, to, id, amount);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; ++i) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n }\\n\\n emit TransferBatch(operator, from, to, ids, amounts);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Sets a new URI for all token types, by relying on the token type ID\\n * substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * By this mechanism, any occurrence of the `\\\\{id\\\\}` substring in either the\\n * URI or any of the amounts in the JSON file at said URI will be replaced by\\n * clients with the token type ID.\\n *\\n * For example, the `https://token-cdn-domain/\\\\{id\\\\}.json` URI would be\\n * interpreted by clients as\\n * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\\n * for token type ID 0x4cce0.\\n *\\n * See {uri}.\\n *\\n * Because these URIs cannot be meaningfully represented by the {URI} event,\\n * this function emits no events.\\n */\\n function _setURI(string memory newuri) internal virtual {\\n _uri = newuri;\\n }\\n\\n /**\\n * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _mint(\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _balances[id][to] += amount;\\n emit TransferSingle(operator, address(0), to, id, amount);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _mintBatch(\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n _balances[ids[i]][to] += amounts[i];\\n }\\n\\n emit TransferBatch(operator, address(0), to, ids, amounts);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens of token type `id` from `from`\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `from` must have at least `amount` tokens of token type `id`.\\n */\\n function _burn(\\n address from,\\n uint256 id,\\n uint256 amount\\n ) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n\\n emit TransferSingle(operator, from, address(0), id, amount);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n */\\n function _burnBatch(\\n address from,\\n uint256[] memory ids,\\n uint256[] memory amounts\\n ) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n }\\n\\n emit TransferBatch(operator, from, address(0), ids, amounts);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC1155: setting approval status for self\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `ids` and `amounts` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `id` and `amount` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n function _doSafeTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155ReceiverUpgradeable(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\\n if (response != IERC1155ReceiverUpgradeable.onERC1155Received.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _doSafeBatchTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155ReceiverUpgradeable(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\\n bytes4 response\\n ) {\\n if (response != IERC1155ReceiverUpgradeable.onERC1155BatchReceived.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\\n uint256[] memory array = new uint256[](1);\\n array[0] = element;\\n\\n return array;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[47] private __gap;\\n}\\n\",\"keccak256\":\"0x6de308cde403f95519bf4b25123cbfe9126f2e0212564bb2ad3c23ac99f1a9cb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155ReceiverUpgradeable is IERC165Upgradeable {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n external\\n view\\n returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0x091a49ef99a2be002680781a10cc9dd74c0f348301ede5482c4ea625f79a8ffe\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC1155/extensions/ERC1155Supply.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC1155Upgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Extension of ERC1155 that adds tracking of total supply per id.\\n *\\n * Useful for scenarios where Fungible and Non-fungible tokens have to be\\n * clearly identified. Note: While a totalSupply of 1 might mean the\\n * corresponding is an NFT, there is no guarantees that no other token with the\\n * same id are not going to be minted.\\n */\\nabstract contract ERC1155SupplyUpgradeable is Initializable, ERC1155Upgradeable {\\n function __ERC1155Supply_init() internal onlyInitializing {\\n }\\n\\n function __ERC1155Supply_init_unchained() internal onlyInitializing {\\n }\\n mapping(uint256 => uint256) private _totalSupply;\\n\\n /**\\n * @dev Total amount of tokens in with a given id.\\n */\\n function totalSupply(uint256 id) public view virtual returns (uint256) {\\n return _totalSupply[id];\\n }\\n\\n /**\\n * @dev Indicates whether any token exist with a given id, or not.\\n */\\n function exists(uint256 id) public view virtual returns (bool) {\\n return ERC1155SupplyUpgradeable.totalSupply(id) > 0;\\n }\\n\\n /**\\n * @dev See {ERC1155-_beforeTokenTransfer}.\\n */\\n function _beforeTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual override {\\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n if (from == address(0)) {\\n for (uint256 i = 0; i < ids.length; ++i) {\\n _totalSupply[ids[i]] += amounts[i];\\n }\\n }\\n\\n if (to == address(0)) {\\n for (uint256 i = 0; i < ids.length; ++i) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n uint256 supply = _totalSupply[id];\\n require(supply >= amount, \\\"ERC1155: burn amount exceeds totalSupply\\\");\\n unchecked {\\n _totalSupply[id] = supply - amount;\\n }\\n }\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURIUpgradeable is IERC1155Upgradeable {\\n /**\\n * @dev Returns the URI for token type `id`.\\n *\\n * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n * clients with the actual token type ID.\\n */\\n function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xcc70d8e2281fb3ff69e8ab242500f10142cd0a7fa8dd9e45882be270d4d09024\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/draft-IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n function safeTransfer(\\n IERC20Upgradeable token,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n function safeTransferFrom(\\n IERC20Upgradeable token,\\n address from,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n function safeIncreaseAllowance(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n uint256 newAllowance = token.allowance(address(this), spender) + value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n function safeDecreaseAllowance(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n uint256 newAllowance = oldAllowance - value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n }\\n\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n if (returndata.length > 0) {\\n // Return data is optional\\n require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n }\\n}\\n\",\"keccak256\":\"0x220c4a5af915e656be2aaa85ca57505d102418e476b1e2ef6c62e0c6ac143871\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.2) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n using AddressUpgradeable for address;\\n using StringsUpgradeable for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n __ERC721_init_unchained(name_, symbol_);\\n }\\n\\n function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n return\\n interfaceId == type(IERC721Upgradeable).interfaceId ||\\n interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0xac29c453f4cf43afe4c9599374b6e1ed493c18644d814554e8a5969aaa6f3486\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/extensions/ERC721URIStorage.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC721Upgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev ERC721 token with storage based token URI management.\\n */\\nabstract contract ERC721URIStorageUpgradeable is Initializable, ERC721Upgradeable {\\n function __ERC721URIStorage_init() internal onlyInitializing {\\n }\\n\\n function __ERC721URIStorage_init_unchained() internal onlyInitializing {\\n }\\n using StringsUpgradeable for uint256;\\n\\n // Optional mapping for token URIs\\n mapping(uint256 => string) private _tokenURIs;\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory _tokenURI = _tokenURIs[tokenId];\\n string memory base = _baseURI();\\n\\n // If there is no base URI, return the token URI.\\n if (bytes(base).length == 0) {\\n return _tokenURI;\\n }\\n // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\\n if (bytes(_tokenURI).length > 0) {\\n return string(abi.encodePacked(base, _tokenURI));\\n }\\n\\n return super.tokenURI(tokenId);\\n }\\n\\n /**\\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\\n require(_exists(tokenId), \\\"ERC721URIStorage: URI set of nonexistent token\\\");\\n _tokenURIs[tokenId] = _tokenURI;\\n }\\n\\n /**\\n * @dev See {ERC721-_burn}. This override additionally checks to see if a\\n * token-specific URI was set for the token, and if so, it deletes the token URI from\\n * the storage mapping.\\n */\\n function _burn(uint256 tokenId) internal virtual override {\\n super._burn(tokenId);\\n\\n if (bytes(_tokenURIs[tokenId]).length != 0) {\\n delete _tokenURIs[tokenId];\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/extensions/ERC721Votes.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC721Upgradeable.sol\\\";\\nimport \\\"../../../governance/utils/VotesUpgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Extension of ERC721 to support voting and delegation as implemented by {Votes}, where each individual NFT counts\\n * as 1 vote unit.\\n *\\n * Tokens do not count as votes until they are delegated, because votes must be tracked which incurs an additional cost\\n * on every transfer. Token holders can either delegate to a trusted representative who will decide how to make use of\\n * the votes in governance decisions, or they can delegate to themselves to be their own representative.\\n *\\n * _Available since v4.5._\\n */\\nabstract contract ERC721VotesUpgradeable is Initializable, ERC721Upgradeable, VotesUpgradeable {\\n function __ERC721Votes_init() internal onlyInitializing {\\n }\\n\\n function __ERC721Votes_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {ERC721-_afterTokenTransfer}. Adjusts votes when tokens are transferred.\\n *\\n * Emits a {IVotes-DelegateVotesChanged} event.\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual override {\\n _transferVotingUnits(from, to, batchSize);\\n super._afterTokenTransfer(from, to, firstTokenId, batchSize);\\n }\\n\\n /**\\n * @dev Returns the balance of `account`.\\n */\\n function _getVotingUnits(address account) internal view virtual override returns (uint256) {\\n return balanceOf(account);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x63df902b937900c1a0ed022ff39a8e995f1fdf5cbdddbba92c4db3f47661dcda\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(History storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _blockNumber,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace224 storage self,\\n uint32 key,\\n uint224 value\\n ) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _key,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint224[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint224 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace160 storage self,\\n uint96 key,\\n uint160 value\\n ) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint96 _key,\\n uint160 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint160 value\\n ) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint160[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint160 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x92fe8e1836627ba1baa62a2d4bd76c52ccfe53fec6650b609af33918be967a82\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n}\\n\",\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x12f297cafe6e2847ae0378502f155654d0764b532a9873c8afe4350950fa7971\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/EIP712.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ECDSAUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * _Available since v3.4._\\n *\\n * @custom:storage-size 52\\n */\\nabstract contract EIP712Upgradeable is Initializable {\\n /* solhint-disable var-name-mixedcase */\\n bytes32 private _HASHED_NAME;\\n bytes32 private _HASHED_VERSION;\\n bytes32 private constant _TYPE_HASH = keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\");\\n\\n /* solhint-enable var-name-mixedcase */\\n\\n /**\\n * @dev Initializes the domain separator and parameter caches.\\n *\\n * The meaning of `name` and `version` is specified in\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n *\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n * - `version`: the current major version of the signing domain.\\n *\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n * contract upgrade].\\n */\\n function __EIP712_init(string memory name, string memory version) internal onlyInitializing {\\n __EIP712_init_unchained(name, version);\\n }\\n\\n function __EIP712_init_unchained(string memory name, string memory version) internal onlyInitializing {\\n bytes32 hashedName = keccak256(bytes(name));\\n bytes32 hashedVersion = keccak256(bytes(version));\\n _HASHED_NAME = hashedName;\\n _HASHED_VERSION = hashedVersion;\\n }\\n\\n /**\\n * @dev Returns the domain separator for the current chain.\\n */\\n function _domainSeparatorV4() internal view returns (bytes32) {\\n return _buildDomainSeparator(_TYPE_HASH, _EIP712NameHash(), _EIP712VersionHash());\\n }\\n\\n function _buildDomainSeparator(\\n bytes32 typeHash,\\n bytes32 nameHash,\\n bytes32 versionHash\\n ) private view returns (bytes32) {\\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\\n }\\n\\n /**\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\n *\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n *\\n * ```solidity\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n * keccak256(\\\"Mail(address to,string contents)\\\"),\\n * mailTo,\\n * keccak256(bytes(mailContents))\\n * )));\\n * address signer = ECDSA.recover(digest, signature);\\n * ```\\n */\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n return ECDSAUpgradeable.toTypedDataHash(_domainSeparatorV4(), structHash);\\n }\\n\\n /**\\n * @dev The hash of the name parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712NameHash() internal virtual view returns (bytes32) {\\n return _HASHED_NAME;\\n }\\n\\n /**\\n * @dev The hash of the version parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712VersionHash() internal virtual view returns (bytes32) {\\n return _HASHED_VERSION;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x3017aded62c4a2b9707f5f06f92934e592c1c9b6f384b91b51340a6d5f841931\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"contracts/N2MCommonStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\\\";\\nimport \\\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\\\";\\nimport \\\"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\\\";\\nimport {IOperatorFilterRegistry} from \\\"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\\\";\\nimport \\\"./N2MVersion.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MCommonStorage is\\n NFTOwnableUpgradeable,\\n IN2M_ERCStorage,\\n N2MVersion\\n{\\n /// CONSTANTS\\n address internal constant DEFAULT_SUBSCRIPTION = address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6);\\n address internal constant OPENSEA_CONDUIT = address(0x1E0049783F008A0085193E00003D00cd54003c71);\\n address internal constant N2M_CONDUIT = address(0x88899DC0B84C6E726840e00DFb94ABc6248825eC);\\n IOperatorFilterRegistry internal constant operatorFilterRegistry = IOperatorFilterRegistry(0x000000000000AAeB6D7670E522A718067333cd4E);\\n address internal constant N2M_PRESALE_SIGNER = address(0xC0ffee06CE3D6689305035601a055A96acd619c6);\\n address internal constant N2M_TREASURY = address(0x955aF4de9Ca03f84c9462457D075aCABf1A8AfC8);\\n uint256 internal constant N2M_FEE = 5_00;\\n uint256 internal constant MAX_AFFILIATE_DISCOUNT = 100_00;\\n uint256 internal constant MAX_AFFILIATE_PERCENTAGE = 100_00;\\n uint256 internal constant NOT_ENTERED = 0;\\n\\n /// IMMUTABLE \\n address payable internal immutable _factory;\\n\\n bytes32 internal _baseURICIDHash;\\n bytes32 internal _placeholderImageCIDHash;\\n bytes32 internal _contractURIMetadataCIDHash;\\n\\n mapping(address => uint256) internal _pendingAffiliateBalance;\\n uint256 internal _pendingTotalAffiliatesBalance;\\n\\n RevenueAddress[] internal _revenueInfo;\\n mapping(address => AffiliateInformation) internal _affiliatesInfo;\\n\\n uint256 internal _mintPrice;\\n uint256 internal _withdrawnAmount;\\n uint256 internal _reentrancyEntered;\\n uint256 internal _dropDateTimestamp;\\n uint256 internal _endDateTimestamp; \\n\\n mapping(address => uint256) internal _withdrawnERC20Amount;\\n address internal _erc20PaymentAddress;\\n\\n mapping(address => RandomTicket) internal _randomTickets;\\n mapping(bytes => uint256) internal _usedAmountSignature;\\n mapping(uint256 => bool) internal _soulbound;\\n mapping(uint256 => bytes32) internal _customURICIDHashes;\\n\\n uint32 internal _soldTokens;\\n SalePhase internal _currentPhase;\\n OperatorFilterStatus internal _operatorFilterStatus;\\n MintingType internal _mintingType; \\n uint16 internal _royaltyFee;\\n uint16 internal _maxPerAddress; \\n uint32 internal _collectionSize;\\n bool internal _isERC20Payment;\\n bool internal _soulboundCollection;\\n\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(address payable factoryAddress) {\\n _factory = factoryAddress;\\n _disableInitializers();\\n }\\n\\n /// @notice Returns the address of the current collection owner.\\n function owner() public view override(NFTOwnableUpgradeable) returns (address collectionOwner) {\\n try IN2MCrossFactory(_factory).ownerOf(uint256(uint160(address(this)))) returns (address ownerOf) {\\n return ownerOf;\\n } catch {}\\n }\\n\\n function _strictOwner() internal view override(NFTOwnableUpgradeable) returns (address ownerStrictAddress) {\\n try IN2MCrossFactory(_factory).strictOwnerOf(uint256(uint160(address(this)))) returns (address strictOwnerOf) {\\n return strictOwnerOf;\\n } catch {}\\n }\\n\\n function _getN2MFeeAddress() internal view override(NFTOwnableUpgradeable) returns (address) {\\n\\n try IN2MCrossFactory(_factory).getN2MTreasuryAddress() returns (address n2mTreasuryAddress) {\\n return n2mTreasuryAddress;\\n } catch {\\n return N2M_TREASURY;\\n }\\n } \\n\\n modifier nonReentrant() {\\n _nonReentrantBefore();\\n _;\\n _nonReentrantAfter();\\n }\\n\\n function _nonReentrantBefore() private {\\n if (_reentrancyEntered != 0) revert ReentrancyGuard();\\n _reentrancyEntered = 1;\\n }\\n\\n function _nonReentrantAfter() private {\\n delete(_reentrancyEntered);\\n } \\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() public view override returns (bool) {\\n return (_baseURICIDHash != 0 || (_mintingType == MintingType.CUSTOM_URI));\\n }\\n\\n}\\n\",\"keccak256\":\"0xa72fa45c4464fb3dc36a3c7385c79b0af244fb8f8c654f6c75f10035efdb2e88\",\"license\":\"UNLICENSED\"},\"contracts/N2MERC1155.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\\\";\\n\\nimport \\\"./N2MTokenCommon.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts for ERC-1155.\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ncontract N2MERC1155 is\\n N2MTokenCommon,\\n ERC1155Upgradeable,\\n ERC1155SupplyUpgradeable\\n{\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(address libraryAddress, address payable factoryAddress) N2MTokenCommon(libraryAddress, factoryAddress) {}\\n\\n string private _name;\\n string public override symbol;\\n\\n mapping(address => uint256) private _balances;\\n\\n /// @notice To be called to create the collection. Can only be called once.\\n function initialize(\\n string memory tokenName,\\n string memory tokenSymbol,\\n uint256 iMintPrice,\\n bytes32 baseURICIDHash,\\n bytes32 placeholderImageCIDHash,\\n RevenueAddress[] calldata revenueAddresses,\\n address iErc20PaymentAddress,\\n uint32 iTotalSupply,\\n uint16 iRoyaltyFee,\\n bool soulboundCollection,\\n MintingType iMintingType\\n ) public payable override initializer {\\n\\n _name = tokenName;\\n symbol = tokenSymbol;\\n\\n if (iTotalSupply == 0) revert TotalSupplyMustBeGreaterThanZero();\\n if (baseURICIDHash != 0 && placeholderImageCIDHash != 0) revert CantSetBaseURIAndPlaceholderAtTheSameTime();\\n if (iRoyaltyFee > 50_00) revert RoyaltyFeeTooHigh();\\n\\n _collectionSize = iTotalSupply;\\n if (baseURICIDHash == 0) {\\n if (placeholderImageCIDHash == 0) {\\n if (iMintingType != MintingType.CUSTOM_URI)\\n revert NoBaseURINorPlaceholderSet();\\n } else {\\n _placeholderImageCIDHash = placeholderImageCIDHash;\\n }\\n } else {\\n _baseURICIDHash = baseURICIDHash;\\n }\\n\\n _mintPrice = iMintPrice;\\n _royaltyFee = iRoyaltyFee;\\n if (iMintingType != MintingType.SEQUENTIAL) {\\n _mintingType = iMintingType;\\n }\\n if (iErc20PaymentAddress != address(0)) {\\n _isERC20Payment = true;\\n _erc20PaymentAddress = iErc20PaymentAddress;\\n }\\n if (soulboundCollection == true) {\\n _soulboundCollection = true;\\n }\\n\\n if (revenueAddresses.length > 0) {\\n uint256 revenuePercentageTotal;\\n for (uint256 i; i < revenueAddresses.length; ) {\\n revenuePercentageTotal += revenueAddresses[i].percentage;\\n unchecked {\\n ++i;\\n }\\n }\\n _revenueInfo = revenueAddresses;\\n if (revenuePercentageTotal > 100_00 - N2M_FEE) revert InvalidRevenuePercentage();\\n }\\n\\n }\\n\\n /// @notice alias for `uri`\\n function tokenURI(uint256 tokenId)\\n public\\n view\\n override\\n returns (string memory)\\n {\\n return uri(tokenId);\\n }\\n\\n /// @notice tokenURI of the given token\\n /// @param tokenId of the token to ask for\\n /// @return tokenURI for `tokenId`\\n function uri(uint256 tokenId)\\n public\\n view\\n override(ERC1155Upgradeable)\\n returns (string memory)\\n {\\n return IN2MLibrary(address(this)).tokenURIImpl(tokenId);\\n }\\n\\n function _exists(uint256 tokenId) internal view override returns (bool) {\\n return exists(tokenId);\\n }\\n\\n function _mint(address to, uint256 tokenId) internal override {\\n super._mint(to, tokenId, 1, \\\"\\\");\\n }\\n\\n /// @notice Collection name\\n /// @return the collection name\\n function name() public view override returns (string memory) {\\n return _name;\\n }\\n\\n /// @notice Balance of a given address for ERC-1155 (non-standard).\\n /// @param owner to ask for the balance\\n /// @return balance of the `owner`\\n function balanceOf(address owner) public view override returns (uint256 balance) {\\n if (owner == address(0)) revert();\\n balance = _balances[owner];\\n if (_mintingType == MintingType.RANDOM) {\\n balance += _randomTickets[owner].amount;\\n }\\n }\\n\\n function _mintSequential(address to, uint256 amount) internal override {\\n if (amount == 1) {\\n unchecked {\\n _mint(to, ++_soldTokens, 1, \\\"\\\");\\n }\\n } else {\\n uint256[] memory ids = new uint256[](amount);\\n uint256[] memory amounts = new uint256[](amount);\\n\\n for (uint256 i; i < amount; ) {\\n unchecked {\\n ids[i] = ++_soldTokens;\\n amounts[i] = 1;\\n ++i;\\n }\\n }\\n\\n _mintBatch(to, ids, amounts, \\\"\\\");\\n }\\n }\\n\\n function _mintSpecify(address to, uint256[] memory tokenIds)\\n internal\\n override\\n {\\n uint32 amount = uint32(tokenIds.length);\\n _soldTokens += amount;\\n uint256[] memory amounts = new uint256[](amount);\\n\\n for (uint256 i; i < amount; ) {\\n uint256 tokenId = tokenIds[i];\\n amounts[i] = 1;\\n if (_exists(tokenId)) revert TokenAlreadyMinted();\\n if (tokenId <= 0 || tokenId > _collectionSize) revert InvalidTokenId();\\n unchecked {\\n ++i;\\n }\\n }\\n _mintBatch(to, tokenIds, amounts, \\\"\\\");\\n }\\n\\n function _beforeTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal override(ERC1155Upgradeable, ERC1155SupplyUpgradeable) {\\n uint256 length = ids.length;\\n for (uint256 i; i < length; ) {\\n\\n if (from != address(0)) {\\n if (_soulbound[ids[i]] || _soulboundCollection) revert NonTransferrableSoulboundNFT();\\n\\n _balances[from] -= amounts[i];\\n }\\n\\n if (to != address(0)) {\\n\\n _balances[to] += amounts[i];\\n }\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n if (_maxPerAddress != 0) {\\n\\n if (balanceOf(to) > _maxPerAddress) revert MaxPerAddressExceeded();\\n } \\n }\\n\\n /// @notice Query if a contract implements an interface\\n /// @param interfaceId The interface identifier, as specified in ERC-165\\n /// @dev Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\\n /// @return `true` if the contract implements `interfaceId` and `interfaceId` is not 0xffffffff, `false` otherwise\\n function supportsInterface(bytes4 interfaceId)\\n public\\n view\\n override(ERC1155Upgradeable, IERC165Upgradeable)\\n returns (bool)\\n {\\n return (\\n\\n interfaceId == type(IERC2981Upgradeable).interfaceId || super.supportsInterface(interfaceId));\\n }\\n\\n /// @notice Enable or disable approval for a third party (\\\"operator\\\") to manage all of the caller's tokens.\\n /// @dev MUST emit the ApprovalForAll event on success.\\n /// @param operator Address to add to the set of authorized operators\\n /// @param approved True if the operator is approved, false to revoke approval\\n function setApprovalForAll(address operator, bool approved) public override onlyAllowedOperatorApproval(operator) {\\n super.setApprovalForAll(operator, approved);\\n } \\n\\n /// @notice Queries the approval status of an operator for a given owner.\\n /// @param owner The owner of the tokens\\n /// @param operator Address of authorized operator\\n /// @return True if the operator is approved, false if not\\n function isApprovedForAll(address owner, address operator)\\n public\\n view\\n virtual\\n override\\n returns (bool)\\n {\\n\\n if (operator == N2M_CONDUIT) return true;\\n if (operator == OPENSEA_CONDUIT) return true;\\n\\n return super.isApprovedForAll(owner, operator);\\n }\\n\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) public override onlyAllowedOperator() {\\n super.safeTransferFrom(from, to, id, amount, data);\\n }\\n\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) public override onlyAllowedOperator() {\\n super.safeBatchTransferFrom(from, to, ids, amounts, data);\\n }\\n\\n // ////////\\n\\n // ////////\\n\\n function getSupplies(uint256 startId, uint256 endId)\\n external\\n view\\n returns (\\n uint256[] memory supplies,\\n uint256 blockNumber,\\n uint256 blockTimestamp\\n )\\n {\\n blockNumber = block.number;\\n blockTimestamp = block.timestamp;\\n\\n if (endId >= startId) {\\n uint256 total = 1 + endId - startId;\\n unchecked {\\n supplies = new uint256[](total);\\n for (uint256 i; i < total; i++) {\\n supplies[i] = totalSupply(startId + i);\\n }\\n }\\n } else {\\n uint256[] memory emptyArray;\\n supplies = emptyArray;\\n }\\n } \\n\\n}\\n\",\"keccak256\":\"0x03e93dc84483dfeb9bc5f1d2a688b63c7e840b12e4a02a2c90b12bdca3177267\",\"license\":\"UNLICENSED\"},\"contracts/N2MTokenCommon.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\\\";\\n\\n/// Utils\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport \\\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\\\";\\nimport \\\"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol\\\";\\nimport \\\"./N2MCommonStorage.sol\\\";\\n\\ninterface IN2MLibrary {\\n function tokenURIImpl(uint256 tokenId) external view returns (string memory);\\n}\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MTokenCommon is N2MCommonStorage, IN2M_ERCBase {\\n /// IMMUTABLE\\n address internal immutable LIBRARY_ADDRESS;\\n\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(address libraryAddress, address payable factoryAddress) N2MCommonStorage(factoryAddress) {\\n LIBRARY_ADDRESS = libraryAddress;\\n }\\n\\n function _mint(address to, uint256 tokenId) internal virtual;\\n\\n function _exists(uint256 tokenId) internal view virtual returns (bool);\\n\\n function name() external view virtual override returns (string memory);\\n\\n function tokenURI(uint256 tokenId) external view virtual override returns (string memory);\\n\\n function balanceOf(address owner) public view virtual returns (uint256 balance); \\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable override {\\n _requirePayment(_mintPrice, 1);\\n _checkPhase();\\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\\n unchecked {\\n if ((++_soldTokens) > _collectionSize) revert CollectionSoldOut();\\n }\\n _mint(msg.sender, _soldTokens);\\n }\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable override {\\n _requirePayment(_mintPrice, amount);\\n _mintSequentialWithChecks(msg.sender, amount);\\n }\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable override {\\n _requirePaymentWithAffiliates(amount, affiliate);\\n _mintSequentialWithChecks(msg.sender, amount);\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable override {\\n _requirePayment(_mintPrice, amount);\\n _mintSequentialWithChecks(to, amount);\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable override {\\n _requirePaymentWithAffiliates(amount, affiliate);\\n _mintSequentialWithChecks(to, amount);\\n }\\n\\n function _mintSequentialWithChecks(address to, uint256 amount) private {\\n _checkPhase();\\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\\n if ((_soldTokens + amount) > _collectionSize) revert CollectionSoldOut();\\n\\n _mintSequential(to, amount);\\n }\\n\\n function _mintSequential(address to, uint256 amount, bool soulbound) private {\\n for (uint256 i; i < amount; ) {\\n unchecked {\\n _mint(to, ++_soldTokens);\\n }\\n if (soulbound) _soulbound[_soldTokens] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n function _mintSequential(address to, uint256 amount) internal virtual {\\n for (uint256 i; i < amount; ) {\\n unchecked {\\n _mint(to, ++_soldTokens);\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable override {\\n _requirePayment(_mintPrice, amount);\\n _mintRandomWithChecks(to, amount);\\n }\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable override {\\n _requirePaymentWithAffiliates(amount, affiliate);\\n _mintRandomWithChecks(to, amount);\\n }\\n\\n function _mintRandomWithChecks(address to, uint256 amount) private {\\n _checkPhase();\\n if (_mintingType != MintingType.RANDOM) revert InvalidMintingType();\\n if (_soldTokens + (amount) > _collectionSize) revert CollectionSoldOut();\\n\\n unchecked {\\n _randomTickets[to].blockNumberToReveal = block.number + 2;\\n _randomTickets[to].amount += amount;\\n _soldTokens += uint32(amount);\\n }\\n\\n if (_maxPerAddress != 0) {\\n\\n if (balanceOf(to) > _maxPerAddress) revert MaxPerAddressExceeded();\\n } \\n }\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable override {\\n uint256 blockNumberToReveal = _randomTickets[msg.sender].blockNumberToReveal;\\n uint256 amountToRedeem = _randomTickets[msg.sender].amount;\\n\\n if (amountToRedeem == 0) revert NothingToRedeem();\\n if (block.number <= _randomTickets[msg.sender].blockNumberToReveal) revert CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n bytes32 seedFromBlockNumber = blockhash(blockNumberToReveal);\\n\\n if (seedFromBlockNumber == 0) {\\n\\n uint256 newBlockNumber = ((block.number & uint256(int256(-0x100))) + (blockNumberToReveal & 0xff));\\n\\n if ((newBlockNumber >= block.number)) {\\n newBlockNumber -= 256;\\n\\n }\\n seedFromBlockNumber = blockhash(newBlockNumber);\\n\\n }\\n\\n delete(_randomTickets[msg.sender].blockNumberToReveal);\\n delete(_randomTickets[msg.sender].amount);\\n\\n uint16 maxPerAddressTemp = _maxPerAddress;\\n delete(_maxPerAddress);\\n _mintRandom(msg.sender, amountToRedeem, seedFromBlockNumber, false);\\n _maxPerAddress = maxPerAddressTemp;\\n }\\n\\n function _mintRandom(address to, uint256 amount, bytes32 seed, bool soulbound) private {\\n for (; amount > 0; ) {\\n uint256 tokenId = _randomTokenId(seed, amount);\\n _mint(to, tokenId);\\n if (soulbound) _soulbound[tokenId] = true;\\n unchecked {\\n --amount;\\n }\\n }\\n }\\n\\n function _randomTokenId(bytes32 seed, uint256 extraModifier) private view returns (uint256 tokenId) {\\n\\n tokenId = (uint256(keccak256(abi.encodePacked(seed, extraModifier))) % _collectionSize) + 1;\\n\\n while (_exists(tokenId)) {\\n unchecked {\\n tokenId = (tokenId % _collectionSize) + 1;\\n }\\n }\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds)\\n external\\n payable\\n override\\n {\\n _requirePayment(_mintPrice, tokenIds.length);\\n _mintSpecifyWithChecks(to, tokenIds);\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) \\n external\\n payable\\n override\\n {\\n _requirePaymentWithAffiliates(tokenIds.length, affiliate);\\n _mintSpecifyWithChecks(to, tokenIds);\\n }\\n\\n function _mintSpecifyWithChecks(address to, uint256[] memory tokenIds)\\n private\\n {\\n _checkPhase();\\n if (_mintingType != MintingType.SPECIFY) revert InvalidMintingType();\\n\\n if (_soldTokens + (tokenIds.length) > _collectionSize) revert CollectionSoldOut();\\n\\n _mintSpecify(to, tokenIds);\\n }\\n\\n function _mintSpecify(\\n address to,\\n uint256[] memory tokenIds,\\n bool soulbound\\n ) private {\\n _mintSpecify(to, tokenIds);\\n uint256 inputLength = tokenIds.length; \\n if (soulbound) {\\n for (uint256 i; i < inputLength; ) {\\n _soulbound[tokenIds[i]] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n }\\n\\n function _mintSpecify(address to, uint256[] memory tokenIds)\\n internal\\n virtual\\n {\\n\\n uint256 inputLength = tokenIds.length;\\n unchecked {\\n _soldTokens += uint32(inputLength);\\n }\\n for (uint256 i; i < inputLength; ) {\\n uint256 tokenId = tokenIds[i];\\n\\n if (tokenId == 0 || tokenId > _collectionSize) revert InvalidTokenId();\\n _mint(to, tokenId);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound)\\n external\\n payable\\n override\\n {\\n _requirePayment(_mintPrice, 1);\\n _checkPhase();\\n if (_mintingType != MintingType.CUSTOM_URI) revert InvalidMintingType();\\n unchecked {\\n if ((++_soldTokens) > _collectionSize) revert CollectionSoldOut();\\n }\\n _mint(to, _soldTokens);\\n\\n unchecked {\\n if (soulbound) _soulbound[_soldTokens] = true;\\n }\\n _customURICIDHashes[_soldTokens] = customURICIDHash;\\n }\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound)\\n external\\n payable\\n override\\n onlyStrictOwner\\n {\\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\\n if (_soldTokens + (to.length) > _collectionSize) revert CollectionSoldOut();\\n\\n uint256 toLength = to.length;\\n for (uint256 i; i < toLength; ) {\\n\\n unchecked {\\n _mint(to[i], ++_soldTokens); \\n if (soulbound) _soulbound[_soldTokens] = true;\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound)\\n external\\n payable\\n override\\n onlyOwner\\n {\\n uint256 toLength = to.length;\\n if (_mintingType != MintingType.RANDOM) revert InvalidMintingType();\\n\\n if ((_soldTokens + toLength) > _collectionSize) revert CollectionSoldOut();\\n\\n unchecked {\\n _soldTokens += uint32(toLength);\\n }\\n\\n bytes32 randomSeed = blockhash(block.number - 1);\\n\\n for (uint256 i; i < toLength; ) {\\n uint256 newTokenId = _randomTokenId(randomSeed, i);\\n _mint(to[i], newTokenId);\\n if (soulbound) _soulbound[newTokenId] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(\\n address[] memory to,\\n uint256[] memory tokenIds,\\n bool soulbound\\n ) external payable override onlyOwner {\\n uint256 toLength = to.length;\\n if (_mintingType != MintingType.SPECIFY) revert InvalidMintingType();\\n\\n if (_soldTokens + (tokenIds.length) > _collectionSize) revert CollectionSoldOut();\\n if (toLength != tokenIds.length) revert InvalidInputSizesDontMatch();\\n\\n unchecked {\\n _soldTokens += uint32(toLength);\\n }\\n\\n for (uint256 i; i < toLength; ) {\\n\\n if (tokenIds[i] == 0 || tokenIds[i] > _collectionSize) revert InvalidTokenId();\\n _mint(to[i], tokenIds[i]);\\n if (soulbound) _soulbound[tokenIds[i]] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale(\\n address to,\\n uint256[] memory tokenIds,\\n bool freeMinting,\\n uint256 customFee,\\n uint256 maxAmount,\\n uint256 amount,\\n bool soulbound,\\n bytes calldata signature\\n ) external payable override {\\n if (amount == 0) revert InvalidAmount();\\n\\n _usedAmountSignature[signature] += amount;\\n if (_usedAmountSignature[signature] > maxAmount) revert NotEnoughAmountToMint();\\n\\n if (_soldTokens + amount > _collectionSize) revert CollectionSoldOut();\\n\\n if (_currentPhase == SalePhase.CLOSED) revert PresaleNotOpen();\\n\\n address signer = ECDSAUpgradeable.recover(\\n ECDSAUpgradeable.toEthSignedMessageHash(\\n keccak256(\\n abi.encodePacked(\\n this.mintPresale.selector, \\n address(this), \\n block.chainid, \\n to,\\n freeMinting,\\n customFee,\\n maxAmount,\\n soulbound\\n )\\n )\\n ),\\n signature\\n );\\n\\n if (signer != N2M_PRESALE_SIGNER && signer != owner()) revert SignatureMismatch();\\n\\n if (freeMinting) {\\n\\n if (msg.value != 0) revert InvalidMintFeeForFreeMinting();\\n } else {\\n\\n if (customFee == 0) customFee = _mintPrice;\\n _requirePayment(customFee, amount);\\n }\\n\\n if (_mintingType == MintingType.SPECIFY) {\\n\\n if (tokenIds.length != amount) revert InvalidInputSizesDontMatch();\\n _mintSpecify(to, tokenIds, soulbound);\\n } else if (_mintingType == MintingType.RANDOM) {\\n bytes32 seed = keccak256(abi.encodePacked(signature));\\n _soldTokens += uint32(amount);\\n _mintRandom(to, amount, seed, soulbound);\\n } else if (_mintingType == MintingType.SEQUENTIAL) {\\n _mintSequential(to, amount, soulbound);\\n } else {\\n\\n revert PresaleInvalidMintingType();\\n }\\n }\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256) {\\n return _mintPrice;\\n }\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256) {\\n return _soldTokens;\\n }\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view override returns (uint16) {\\n return _maxPerAddress;\\n }\\n\\n /// @notice Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n /// @param salePrice The sale price\\n /// @return receiver the receiver of the royalties.\\n /// @return royaltyAmount the amount of the royalties for the given input.\\n function royaltyInfo(\\n uint256, \\n uint256 salePrice\\n ) external view virtual returns (address receiver, uint256 royaltyAmount) {\\n\\n return (address(this), uint256((salePrice * _royaltyFee) / 100_00));\\n }\\n\\n function _requirePaymentWithAffiliates(uint256 amount, address affiliate)\\n internal\\n {\\n uint16 currentUserDiscount;\\n uint16 currentAffiliatePercentage;\\n if (_affiliatesInfo[affiliate].enabled) {\\n currentUserDiscount = _affiliatesInfo[affiliate].userDiscount;\\n currentAffiliatePercentage = _affiliatesInfo[affiliate].affiliatePercentage;\\n } else {\\n currentUserDiscount = _affiliatesInfo[address(0)].userDiscount;\\n currentAffiliatePercentage = _affiliatesInfo[address(0)].affiliatePercentage;\\n }\\n\\n uint256 discountMintPrice = ((100_00 - currentUserDiscount) * _mintPrice) / 100_00;\\n _requirePayment(discountMintPrice, amount);\\n if (affiliate != address(0)) {\\n uint256 affiliateAmount = (currentAffiliatePercentage * discountMintPrice * amount) / 100_00;\\n _pendingTotalAffiliatesBalance += affiliateAmount;\\n _pendingAffiliateBalance[affiliate] += affiliateAmount;\\n emit AffiliateSell(affiliate);\\n }\\n }\\n\\n function _checkPhase() private {\\n\\n if (_currentPhase != SalePhase.PUBLIC) {\\n if (_currentPhase == SalePhase.DROP_DATE) {\\n if (block.timestamp >= _dropDateTimestamp) {\\n _currentPhase = SalePhase.PUBLIC;\\n delete(_dropDateTimestamp);\\n } else {\\n revert WaitUntilDropDate();\\n }\\n } else if (_currentPhase == SalePhase.DROP_AND_END_DATE) {\\n if (block.timestamp < _dropDateTimestamp) {\\n revert WaitUntilDropDate();\\n }\\n if (block.timestamp >= _endDateTimestamp) {\\n revert SaleFinished();\\n }\\n } else {\\n\\n revert PublicSaleNotOpen();\\n }\\n }\\n }\\n\\n function _requirePayment(uint256 p_mintPrice, uint256 amount) internal {\\n if (_isERC20Payment == false) {\\n\\n if (msg.value != (p_mintPrice * amount)) revert InvalidMintFee();\\n } else {\\n\\n if (p_mintPrice == 0) return;\\n uint256 totalAmount = p_mintPrice * amount;\\n\\n SafeERC20Upgradeable.safeTransferFrom(\\n IERC20Upgradeable(_erc20PaymentAddress),\\n msg.sender,\\n address(this),\\n totalAmount\\n );\\n }\\n }\\n\\n modifier onlyAllowedOperator() {\\n\\n _isOperatorAllowed(msg.sender);\\n _;\\n }\\n\\n modifier onlyAllowedOperatorApproval(address operator) {\\n _isOperatorAllowed(operator);\\n _;\\n } \\n\\n function _isOperatorAllowed(address operator) private {\\n if (_operatorFilterStatus == OperatorFilterStatus.ENABLED_EXISTS) {\\n\\n operatorFilterRegistry.isOperatorAllowed(address(this), operator);\\n\\n } else if (_operatorFilterStatus == OperatorFilterStatus.ENABLED_NOT_INITIALIZED) {\\n\\n if (address(operatorFilterRegistry).code.length > 0) {\\n try operatorFilterRegistry.registerAndSubscribe(address(this), DEFAULT_SUBSCRIPTION) {\\n\\n _operatorFilterStatus = OperatorFilterStatus.ENABLED_EXISTS;\\n operatorFilterRegistry.isOperatorAllowed(address(this), operator);\\n } catch {\\n }\\n }\\n } \\n\\n }\\n\\n fallback() external payable\\n {\\n address libraryAddress = LIBRARY_ADDRESS;\\n\\n assembly {\\n\\n calldatacopy(0, 0, calldatasize())\\n\\n let result := delegatecall(\\n gas(),\\n libraryAddress,\\n 0,\\n calldatasize(),\\n 0,\\n 0\\n )\\n\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n receive() external payable {} \\n}\\n\",\"keccak256\":\"0x09ef4519412ea229a36b4bb34068dabe9e31633840d134197271c5de99e6c3c2\",\"license\":\"UNLICENSED\"},\"contracts/N2MVersion.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts Version\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MVersion is Readme {\\n /// @notice Current version of the nfts2me.com contracts.\\n function n2mVersion() virtual external pure returns (uint256) {\\n return 1000;\\n }\\n\\n}\\n\",\"keccak256\":\"0x2e406a5b00c59cdc4000c829e039e6eb23af09e50e9176dd5a3f68b5a2fb734b\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10280,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_baseURICIDHash","offset":0,"slot":"51","type":"t_bytes32"},{"astId":10282,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_placeholderImageCIDHash","offset":0,"slot":"52","type":"t_bytes32"},{"astId":10284,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_contractURIMetadataCIDHash","offset":0,"slot":"53","type":"t_bytes32"},{"astId":10288,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_pendingAffiliateBalance","offset":0,"slot":"54","type":"t_mapping(t_address,t_uint256)"},{"astId":10290,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_pendingTotalAffiliatesBalance","offset":0,"slot":"55","type":"t_uint256"},{"astId":10294,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_revenueInfo","offset":0,"slot":"56","type":"t_array(t_struct(RevenueAddress)394_storage)dyn_storage"},{"astId":10299,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_affiliatesInfo","offset":0,"slot":"57","type":"t_mapping(t_address,t_struct(AffiliateInformation)401_storage)"},{"astId":10301,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_mintPrice","offset":0,"slot":"58","type":"t_uint256"},{"astId":10303,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_withdrawnAmount","offset":0,"slot":"59","type":"t_uint256"},{"astId":10305,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_reentrancyEntered","offset":0,"slot":"60","type":"t_uint256"},{"astId":10307,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_dropDateTimestamp","offset":0,"slot":"61","type":"t_uint256"},{"astId":10309,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_endDateTimestamp","offset":0,"slot":"62","type":"t_uint256"},{"astId":10313,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_withdrawnERC20Amount","offset":0,"slot":"63","type":"t_mapping(t_address,t_uint256)"},{"astId":10315,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_erc20PaymentAddress","offset":0,"slot":"64","type":"t_address"},{"astId":10320,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_randomTickets","offset":0,"slot":"65","type":"t_mapping(t_address,t_struct(RandomTicket)389_storage)"},{"astId":10324,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_usedAmountSignature","offset":0,"slot":"66","type":"t_mapping(t_bytes_memory_ptr,t_uint256)"},{"astId":10328,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_soulbound","offset":0,"slot":"67","type":"t_mapping(t_uint256,t_bool)"},{"astId":10332,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_customURICIDHashes","offset":0,"slot":"68","type":"t_mapping(t_uint256,t_bytes32)"},{"astId":10334,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_soldTokens","offset":0,"slot":"69","type":"t_uint32"},{"astId":10337,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_currentPhase","offset":4,"slot":"69","type":"t_enum(SalePhase)407"},{"astId":10340,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_operatorFilterStatus","offset":5,"slot":"69","type":"t_enum(OperatorFilterStatus)417"},{"astId":10343,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_mintingType","offset":6,"slot":"69","type":"t_enum(MintingType)412"},{"astId":10345,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_royaltyFee","offset":7,"slot":"69","type":"t_uint16"},{"astId":10347,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_maxPerAddress","offset":9,"slot":"69","type":"t_uint16"},{"astId":10349,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_collectionSize","offset":11,"slot":"69","type":"t_uint32"},{"astId":10351,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_isERC20Payment","offset":15,"slot":"69","type":"t_bool"},{"astId":10353,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_soulboundCollection","offset":16,"slot":"69","type":"t_bool"},{"astId":7292,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"__gap","offset":0,"slot":"70","type":"t_array(t_uint256)50_storage"},{"astId":1495,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_balances","offset":0,"slot":"120","type":"t_mapping(t_uint256,t_mapping(t_address,t_uint256))"},{"astId":1501,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_operatorApprovals","offset":0,"slot":"121","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":1503,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_uri","offset":0,"slot":"122","type":"t_string_storage"},{"astId":2710,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"__gap","offset":0,"slot":"123","type":"t_array(t_uint256)47_storage"},{"astId":2899,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_totalSupply","offset":0,"slot":"170","type":"t_mapping(t_uint256,t_uint256)"},{"astId":3050,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"__gap","offset":0,"slot":"171","type":"t_array(t_uint256)49_storage"},{"astId":10539,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_name","offset":0,"slot":"220","type":"t_string_storage"},{"astId":10542,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"symbol","offset":0,"slot":"221","type":"t_string_storage"},{"astId":10546,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"_balances","offset":0,"slot":"222","type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(RevenueAddress)394_storage)dyn_storage":{"base":"t_struct(RevenueAddress)394_storage","encoding":"dynamic_array","label":"struct IN2M_ERCStorage.RevenueAddress[]","numberOfBytes":"32"},"t_array(t_uint256)47_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[47]","numberOfBytes":"1504"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_memory_ptr":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_enum(MintingType)412":{"encoding":"inplace","label":"enum IN2M_ERCStorage.MintingType","numberOfBytes":"1"},"t_enum(OperatorFilterStatus)417":{"encoding":"inplace","label":"enum IN2M_ERCStorage.OperatorFilterStatus","numberOfBytes":"1"},"t_enum(SalePhase)407":{"encoding":"inplace","label":"enum IN2M_ERCStorage.SalePhase","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_struct(AffiliateInformation)401_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct IN2M_ERCStorage.AffiliateInformation)","numberOfBytes":"32","value":"t_struct(AffiliateInformation)401_storage"},"t_mapping(t_address,t_struct(RandomTicket)389_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct IN2M_ERCStorage.RandomTicket)","numberOfBytes":"32","value":"t_struct(RandomTicket)389_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes_memory_ptr,t_uint256)":{"encoding":"mapping","key":"t_bytes_memory_ptr","label":"mapping(bytes => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_bool)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_uint256,t_bytes32)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_mapping(t_uint256,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_struct(AffiliateInformation)401_storage":{"encoding":"inplace","label":"struct IN2M_ERCStorage.AffiliateInformation","members":[{"astId":396,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"enabled","offset":0,"slot":"0","type":"t_bool"},{"astId":398,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"affiliatePercentage","offset":1,"slot":"0","type":"t_uint16"},{"astId":400,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"userDiscount","offset":3,"slot":"0","type":"t_uint16"}],"numberOfBytes":"32"},"t_struct(RandomTicket)389_storage":{"encoding":"inplace","label":"struct IN2M_ERCStorage.RandomTicket","members":[{"astId":386,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"amount","offset":0,"slot":"0","type":"t_uint256"},{"astId":388,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"blockNumberToReveal","offset":0,"slot":"1","type":"t_uint256"}],"numberOfBytes":"64"},"t_struct(RevenueAddress)394_storage":{"encoding":"inplace","label":"struct IN2M_ERCStorage.RevenueAddress","members":[{"astId":391,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"to","offset":0,"slot":"0","type":"t_address"},{"astId":393,"contract":"contracts/N2MERC1155.sol:N2MERC1155","label":"percentage","offset":20,"slot":"0","type":"t_uint16"}],"numberOfBytes":"32"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"AddressFiltered(address)":[{"notice":"Operator address is filtered"}],"CantLowerCurrentPercentages()":[{"notice":"Can't lower current percentages"}],"CantRevealYetWaitABitToBeAbleToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets too soon"}],"CantSetBaseURIAndPlaceholderAtTheSameTime()":[{"notice":"Can't set BaseURI and Placeholder at the same time"}],"CollectionSoldOut()":[{"notice":"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"}],"ContractMetadataURIAlreadyFixed()":[{"notice":"Contract MetadataURI already fixed"}],"InputSizeMismatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidAmount()":[{"notice":"Error thrown when the input amount is not valid"}],"InvalidDropDate()":[{"notice":"Invalid drop date"}],"InvalidInputSizesDontMatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidMintFee()":[{"notice":"Error thrown when the sent amount is not valid"}],"InvalidMintFeeForFreeMinting()":[{"notice":"Error thrown when sending funds to a free minting"}],"InvalidMintingType()":[{"notice":"Invalid collection minting type for the current minting function"}],"InvalidPercentageOrDiscountValues()":[{"notice":"Invalid percentage or discount values"}],"InvalidPhaseWithoutDate()":[{"notice":"Invalid phase can't be set without giving a date, use the proper functions"}],"InvalidRevenuePercentage()":[{"notice":"The input revenue percentages are not valid"}],"InvalidTokenId()":[{"notice":"Error thrown when trying to mint a token with a given invalid id"}],"MaxPerAddressExceeded()":[{"notice":"The address exceeded the max per address amount"}],"MetadataAlreadyFixed()":[{"notice":"Metadata is already fixed. Can't change metadata once fixed"}],"NewBaseURICantBeEmpty()":[{"notice":"New BaseURI can't be empty"}],"NewPlaceholderCantBeEmpty()":[{"notice":"New Placeholder can't be empty"}],"NoBaseURINorPlaceholderSet()":[{"notice":"No BaseURI nor Placeholder set"}],"NonTransferrableSoulboundNFT()":[{"notice":"Can't transfer a Soulbound Token (SBT)"}],"NotEnoughAmountToMint()":[{"notice":"Error thrown when trying to mint more than the allowance to mint"}],"NothingToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets with no amount to redeem"}],"OnlyAffiliateOrN2M()":[{"notice":"Only the given affiliate or N2M can call this function"}],"OnlyOwnerOrN2M()":[{"notice":"Only owner of N2M can call this function"}],"PresaleInvalidMintingType()":[{"notice":"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"}],"PresaleNotOpen()":[{"notice":"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"}],"PublicSaleNotOpen()":[{"notice":"Error thrown when trying to mint and the collection current phase is not `open`"}],"ReentrancyGuard()":[{"notice":"Reentrancy Guard protection"}],"RoyaltyFeeTooHigh()":[{"notice":"Royalty fee can't be higher than 10%"}],"SaleFinished()":[{"notice":"Error thrown when trying to mint but the sale has already finished"}],"SignatureExpired()":[{"notice":"The signature has expired"}],"SignatureMismatch()":[{"notice":"The given signature doesn't match the input values"}],"TokenAlreadyMinted()":[{"notice":"Error thrown when trying to mint a token with a given id which is already minted"}],"TotalSupplyMustBeGreaterThanZero()":[{"notice":"Invalid input. Total supply must be greater than zero"}],"WaitUntilDropDate()":[{"notice":"Can't mint until specified drop date"}]},"events":{"AffiliateSell(address)":{"notice":"This event is emitted when a token is minted using an affiliate"}},"kind":"user","methods":{"airdropRandom(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`."},"airdropSequential(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`."},"airdropSpecify(address[],uint256[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`."},"balanceOf(address)":{"notice":"Balance of a given address for ERC-1155 (non-standard)."},"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":{"notice":"To be called to create the collection. Can only be called once."},"isApprovedForAll(address,address)":{"notice":"Queries the approval status of an operator for a given owner."},"isMetadataFixed()":{"notice":"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."},"maxPerAddress()":{"notice":"Max amount of NFTs to be hold per address."},"mint()":{"notice":"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256)":{"notice":"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256,address)":{"notice":"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintCustomURITo(address,bytes32,bool)":{"notice":"Mints one NFT to `to` address. Requires `minting type` to be `customURI`."},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"notice":"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale."},"mintPrice()":{"notice":"Returns the minting price of one NFT."},"mintRandomTo(address,uint256)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintRandomTo(address,uint256,address)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintSpecifyTo(address,uint256[])":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintSpecifyTo(address,uint256[],address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256)":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256,address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"n2mVersion()":{"notice":"Current version of the nfts2me.com contracts."},"name()":{"notice":"Collection name"},"owner()":{"notice":"Returns the address of the current collection owner."},"redeemRandom()":{"notice":"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs."},"royaltyInfo(uint256,uint256)":{"notice":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of the caller's tokens."},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"},"tokenURI(uint256)":{"notice":"alias for `uri`"},"totalSupply()":{"notice":"Returns the current total supply."},"uri(uint256)":{"notice":"tokenURI of the given token"}},"notice":"Read our terms of service","version":1}}},"contracts/N2MERC721.sol":{"N2MERC721":{"abi":[{"inputs":[{"internalType":"address","name":"libraryAddress","type":"address"},{"internalType":"address payable","name":"factoryAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"filtered","type":"address"}],"name":"AddressFiltered","type":"error"},{"inputs":[],"name":"CantLowerCurrentPercentages","type":"error"},{"inputs":[],"name":"CantRevealYetWaitABitToBeAbleToRedeem","type":"error"},{"inputs":[],"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","type":"error"},{"inputs":[],"name":"CollectionSoldOut","type":"error"},{"inputs":[],"name":"ContractMetadataURIAlreadyFixed","type":"error"},{"inputs":[],"name":"InputSizeMismatch","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidDropDate","type":"error"},{"inputs":[],"name":"InvalidInputSizesDontMatch","type":"error"},{"inputs":[],"name":"InvalidMintFee","type":"error"},{"inputs":[],"name":"InvalidMintFeeForFreeMinting","type":"error"},{"inputs":[],"name":"InvalidMintingType","type":"error"},{"inputs":[],"name":"InvalidPercentageOrDiscountValues","type":"error"},{"inputs":[],"name":"InvalidPhaseWithoutDate","type":"error"},{"inputs":[],"name":"InvalidRevenuePercentage","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MaxPerAddressExceeded","type":"error"},{"inputs":[],"name":"MetadataAlreadyFixed","type":"error"},{"inputs":[],"name":"NewBaseURICantBeEmpty","type":"error"},{"inputs":[],"name":"NewPlaceholderCantBeEmpty","type":"error"},{"inputs":[],"name":"NoBaseURINorPlaceholderSet","type":"error"},{"inputs":[],"name":"NonTransferrableSoulboundNFT","type":"error"},{"inputs":[],"name":"NotEnoughAmountToMint","type":"error"},{"inputs":[],"name":"NothingToRedeem","type":"error"},{"inputs":[],"name":"OnlyAffiliateOrN2M","type":"error"},{"inputs":[],"name":"OnlyOwnerOrN2M","type":"error"},{"inputs":[],"name":"PresaleInvalidMintingType","type":"error"},{"inputs":[],"name":"PresaleNotOpen","type":"error"},{"inputs":[],"name":"PublicSaleNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"RoyaltyFeeTooHigh","type":"error"},{"inputs":[],"name":"SaleFinished","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[],"name":"SignatureMismatch","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TotalSupplyMustBeGreaterThanZero","type":"error"},{"inputs":[],"name":"WaitUntilDropDate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"affiliate","type":"address"}],"name":"AffiliateSell","type":"event"},{"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":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSequential","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSpecify","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"iMintPrice","type":"uint256"},{"internalType":"bytes32","name":"baseURICIDHash","type":"bytes32"},{"internalType":"bytes32","name":"placeholderImageCIDHash","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint16","name":"percentage","type":"uint16"}],"internalType":"struct IN2M_ERCStorage.RevenueAddress[]","name":"revenueAddresses","type":"tuple[]"},{"internalType":"address","name":"iErc20PaymentAddress","type":"address"},{"internalType":"uint32","name":"iTotalSupply","type":"uint32"},{"internalType":"uint16","name":"iRoyaltyFee","type":"uint16"},{"internalType":"bool","name":"soulboundCollection","type":"bool"},{"internalType":"enum IN2M_ERCStorage.MintingType","name":"iMintingType","type":"uint8"}],"name":"initialize","outputs":[],"stateMutability":"payable","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":[],"name":"isMetadataFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"customURICIDHash","type":"bytes32"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"mintCustomURITo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"freeMinting","type":"bool"},{"internalType":"uint256","name":"customFee","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"soulbound","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mintPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"collectionOwner","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":[],"name":"redeemRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","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":"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":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","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":"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"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"author":"The NFTs2Me Team","custom:security-contact":"security@nfts2me.com","custom:terms-of-service":"https://nfts2me.com/terms-of-service/","custom:website":"https://nfts2me.com/","events":{"AffiliateSell(address)":{"params":{"affiliate":"The affiliate address"}},"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"DelegateChanged(address,address,address)":{"details":"Emitted when an account changes their delegate."},"DelegateVotesChanged(address,uint256,uint256)":{"details":"Emitted when a token transfer or delegate change results in changes to a delegate's number of votes."},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the contract's {EIP712} domain separator."},"airdropRandom(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSequential(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSpecify(address[],uint256[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"operator":"The new approved NFT controller","tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"owner":"An address for whom to query the balance"},"returns":{"balance":"The number of NFTs owned by `owner`, possibly zero"}},"delegate(address)":{"details":"Delegates votes from the sender to `delegatee`."},"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Delegates votes from signer to `delegatee`."},"delegates(address)":{"details":"Returns the delegate that `account` has chosen."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"getPastTotalSupply(uint256)":{"details":"Returns the total supply of votes available at the end of a past block (`blockNumber`). NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `blockNumber` must have been already mined"},"getPastVotes(address,uint256)":{"details":"Returns the amount of votes that `account` had at the end of a past block (`blockNumber`). Requirements: - `blockNumber` must have been already mined"},"getVotes(address)":{"details":"Returns the current amount of votes that `account` has."},"isApprovedForAll(address,address)":{"params":{"operator":"The address that acts on behalf of the owner","owner":"The address that owns the NFTs"},"returns":{"_0":"True if `operator` is an approved operator for `owner`, false otherwise"}},"maxPerAddress()":{"returns":{"_0":"Max per address allowed."}},"mint(uint256)":{"params":{"amount":"The number of NFTs to mint"}},"mint(uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint"}},"mintCustomURITo(address,bytes32,bool)":{"params":{"customURICIDHash":"The CID of the given token.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The address of the NFTs receiver"}},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"params":{"amount":"Amount to mint.","customFee":"Zero is fee is different from `mintingPrice`.","freeMinting":"True is minting is free","maxAmount":"Max Amount to be minted with the given `signature`.","signature":"Valid `signature` for the presale/whitelist.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`."}},"mintPrice()":{"returns":{"_0":"Mint price for one NFT in native coin or ERC-20."}},"mintRandomTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintRandomTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintSpecifyTo(address,uint256[])":{"params":{"to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintSpecifyTo(address,uint256[],address)":{"params":{"affiliate":"The affiliate address","to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"nonces(address)":{"details":"Returns an address nonce."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"royaltyInfo(uint256,uint256)":{"params":{"salePrice":"The sale price"},"returns":{"receiver":"the receiver of the royalties.","royaltyAmount":"the amount of the royalties for the given input."}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"from":"The current owner of the NFT","to":"The new owner","tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `from` is not the current owner. Throws if `to` is the zero address. Throws if `tokenId` is not a valid NFT. When transfer is complete, this function checks if `to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"data":"Additional data with no specified format, sent in call to `to`","from":"The current owner of the NFT","to":"The new owner","tokenId":"The NFT to transfer"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"approved":"True if the operator is approved, false to revoke approval","operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceId":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceId` and `interfaceId` is not 0xffffffff, `false` otherwise"}},"symbol()":{"returns":{"_0":"the collection symbol"}},"tokenURI(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\"."},"totalSupply()":{"returns":{"_0":"Current total supply."}},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `from` is not the current owner. Throws if `to` is the zero address. Throws if `tokenId` is not a valid NFT.","params":{"from":"The current owner of the NFT","to":"The new owner","tokenId":"The NFT to transfer"}}},"title":"NFTs2Me.com Smart Contracts for ERC-721.","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60c0346200014157601f62005aa438819003918201601f19168301916001600160401b038311848410176200014657808492604094855283398101031262000141578051906001600160a01b039081831683036200014157602001519081168103620001415760805260005460ff8160081c16620000ec5760ff80821610620000b0575b5060a05260405161594790816200015d82396080518181816130b60152614b64015260a051816158df0152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000083565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040526004361015610015575b366158d357005b60003560e01c806301ffc9a7146102d557806306fdde03146102d0578063081812fc146102cb578063095ea7b3146102c65780630de77eb8146102c15780631249c58b146102bc57806318160ddd146102b75780631d7df191146102b25780631ff4cc7d146102ad57806323b872dd146102a85780632a55205a146102a35780633644e5151461029e5780633a46b1a81461029957806342842e0e14610294578063438b1b4b1461028f5780634402d2541461028a578063449a52f8146102855780634a50aa85146102805780635066e5c21461027b578063587cde1e146102765780635c19a95c146102715780636352211e1461026c578063639814e0146102675780636817c76c1461026257806368fdda331461025d5780636ad542401461025857806370a082311461025357806371e6775f1461024e5780637ecebe00146102495780638da5cb5b146102445780638e539e8c1461023f57806394bf804d1461023a57806395d89b41146102355780639ab24eb0146102305780639d13a5ba1461022b578063a0712d6814610226578063a22cb46514610221578063b88d4fde1461021c578063be172edf14610217578063c3cda52014610212578063c87b56dd1461020d578063cb93c48f14610208578063e985e9c5146102035763fefa5d720361000e57612013565b611fd5565b611fb8565b611e9d565b611d48565b611c76565b611c0a565b611af2565b611ad4565b611a39565b6119d6565b61192f565b611902565b611786565b61176b565b61172d565b61152a565b611503565b61142a565b6112f8565b61123a565b611215565b6111f7565b6111d1565b611191565b6110f2565b610f8d565b610f62565b610f12565b610d9b565b610c93565b610b25565b610b02565b610ac9565b610a97565b61088c565b61085c565b610838565b610775565b61072c565b6105e5565b610596565b610493565b610309565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361030457565b600080fd5b346103045760206003193601126103045760207fffffffff00000000000000000000000000000000000000000000000000000000600435610349816102da565b167f2a55205a000000000000000000000000000000000000000000000000000000008114908115610380575b506040519015158152f35b7f80ac58cd000000000000000000000000000000000000000000000000000000008114915081156103e4575b81156103ba575b5038610375565b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386103b3565b7f5b5e139f00000000000000000000000000000000000000000000000000000000811491506103ac565b600091031261030457565b60005b83811061042c5750506000910152565b818101518382015260200161041c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361047881518092818752878088019101610419565b0116010190565b90602061049092818152019061043c565b90565b34610304576000806003193601126105935760405190806078546104b68161396e565b8085529160019180831690811561054b57506001146104f0575b6104ec856104e081870382610e4e565b6040519182918261047f565b0390f35b9250607883527f8dc6fb69531d98d70dc0420e638d2dfd04e09e1ec783ede9aac77da9c5a0dac45b8284106105335750505081016020016104e0826104ec6104d0565b80546020858701810191909152909301928101610518565b8695506104ec969350602092506104e09491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010192936104d0565b80fd5b346103045760206003193601126103045760206105b46004356124c1565b6001600160a01b0360405191168152f35b6001600160a01b0381160361030457565b60c435906105e3826105c5565b565b3461030457604060031936011261030457600435610602816105c5565b60243561060e826156f0565b6106178161249f565b6001600160a01b0380821680918516146106c25733149081156106b0575b50156106465761064491613c79565b005b608460405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152fd5b6106bc91503390613cfb565b38610635565b608460405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152fd5b346103045760006003193601126103045760335415801590610756575b6020906040519015158152f35b506020600360ff60455460301c1661076d8161311d565b149050610749565b60006003193601126103045761078c603a54615455565b61079461533e565b60455460ff8160301c166107a78161311d565b61080e576045805463ffffffff191663ffffffff92831660010183169081179091559060455491818360581c16106107e457610644911633614406565b60046040517f5fd48f91000000000000000000000000000000000000000000000000000000008152fd5b60046040517f64151c75000000000000000000000000000000000000000000000000000000008152fd5b3461030457600060031936011261030457602063ffffffff60455416604051908152f35b604060031936011261030457610644600435610877816105c5565b6024359061088782603a546154ce565b614697565b6000806003193601126105935760016108b8336001600160a01b03166000526041602052604060002090565b0154336000908152604160205260409020548015610a415760016108ef336001600160a01b03166000526041602052604060002090565b0154431115610a1757610989826109c693409081156109c9575b5084600161092a336001600160a01b03166000526041602052604060002090565b01558461094a336001600160a01b03166000526041602052604060002090565b5560455460481c61ffff16926109837fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff60455416604555565b3361476c565b7fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff6affff0000000000000000006045549260481b16911617604555565b80f35b6109f9915060ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0043166123fe565b43811015610a09575b4038610909565b610a129061240b565b610a02565b60046040517f93c4a003000000000000000000000000000000000000000000000000000000008152fd5b60046040517f9890af60000000000000000000000000000000000000000000000000000000008152fd5b600319606091011261030457600435610a83816105c5565b90602435610a90816105c5565b9060443590565b3461030457610644610aa836610a6b565b91610ab2336156f0565b610ac4610abf8433613df0565b613d7f565b613ebd565b34610304576040600319360112610304576040612710610af461ffff60455460381c1660243561331f565b048151903082526020820152f35b34610304576000600319360112610304576020610b1d612d4d565b604051908152f35b3461030457604060031936011261030457600435610b42816105c5565b6001600160a01b03602435911660005260df60205260406000209043811015610c4f57610b71610b8891612fe7565b8254906000908260058111610be6575b5084612ac8565b9081610bbb575050602060005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405191168152f35b610bda610be191610bcd602094612438565b9060005260206000200190565b5460201c90565b610b95565b80610bf6610bfc92959395612e95565b90612447565b90610c27610c1e610c14848960005260206000200190565b5463ffffffff1690565b63ffffffff1690565b63ffffffff85161015610c3d5750915b38610b81565b929150610c49906123f0565b90610c37565b606460405162461bcd60e51b815260206004820152602060248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e65646044820152fd5b3461030457610ca136610a6b565b610caa336156f0565b60405191602083019383851067ffffffffffffffff861117610d6d57610cf79460405260008452610cda336156f0565b610ce7610abf8433613df0565b610cf2838383613ebd565b61427e565b15610cfe57005b60405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b0390fd5b610db7565b600319606091011261030457600435610d8a816105c5565b9060243590604435610490816105c5565b610644610db2610daa36610d72565b8193916151af565b614512565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111610d6d57604052565b6040810190811067ffffffffffffffff821117610d6d57604052565b6060810190811067ffffffffffffffff821117610d6d57604052565b60a0810190811067ffffffffffffffff821117610d6d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610d6d57604052565b604051906105e382610dfa565b67ffffffffffffffff8111610d6d5760051b60200190565b81601f8201121561030457803591610ecb83610e9c565b92610ed96040519485610e4e565b808452602092838086019260051b820101928311610304578301905b828210610f03575050505090565b81358152908301908301610ef5565b604060031936011261030457600435610f2a816105c5565b6024359067ffffffffffffffff821161030457610f4e610644923690600401610eb4565b90610f5d603a548351906154ce565b6149e4565b604060031936011261030457610644600435610f7d816105c5565b60243590610db282603a546154ce565b606060031936011261030457600435610fa5816105c5565b6024359067ffffffffffffffff821161030457610fc9610644923690600401610eb4565b90610f5d604435610fd9816105c5565b83516151af565b67ffffffffffffffff8111610d6d57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261102682610fe0565b916110346040519384610e4e565b829481845281830111610304578281602093846000960137010152565b9080601f83011215610304578160206104909335910161101a565b9181601f840112156103045782359167ffffffffffffffff8311610304576020808501948460061b01011161030457565b60e4359063ffffffff8216820361030457565b61ffff81160361030457565b61010435906105e3826110b0565b8015150361030457565b61012435906105e3826110ca565b6101443590600482101561030457565b6101606003193601126103045767ffffffffffffffff60043581811161030457611120903690600401611051565b60243582811161030457611138903690600401611051565b9060a4359283116103045761115461064493369060040161106c565b61115c6105d6565b61116461109d565b9161116d6110bc565b936111766110d4565b9561117f6110e2565b97608435916064359160443591613127565b346103045760206003193601126103045760206004356111b0816105c5565b6001600160a01b0380911660005260de825260406000205416604051908152f35b34610304576020600319360112610304576106446004356111f1816105c5565b3361206d565b346103045760206003193601126103045760206105b460043561249f565b3461030457600060031936011261030457602061ffff60455460481c16604051908152f35b34610304576000600319360112610304576020603a54604051908152f35b81601f820112156103045780359161126f83610e9c565b9261127d6040519485610e4e565b808452602092838086019260051b820101928311610304578301905b8282106112a7575050505090565b83809183356112b5816105c5565b815201910190611299565b6040600319820112610304576004359067ffffffffffffffff8211610304576112eb91600401611258565b90602435610490816110ca565b611301366112c0565b9061131d61130d614b25565b6001600160a01b03163314614ada565b604580549260ff8460301c166113328161311d565b61080e5761134c93835163ffffffff9586918284166123fe565b9160581c16106107e45782519260005b84811061136557005b80836113c561138661137960019587614a2d565b516001600160a01b031690565b896113a46113988a5463ffffffff1690565b60010163ffffffff1690565b6113be8163ffffffff1663ffffffff196045541617604555565b1690614406565b6113d0575b0161135c565b6114256113fa6113e4875463ffffffff1690565b63ffffffff166000526043602052604060002090565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b6113ca565b606060031936011261030457600435611442816105c5565b6044359061144f826110ca565b61145a603a54615455565b61146261533e565b60455490600360ff8360301c166114788161311d565b0361080e576045805463ffffffff191663ffffffff93841660010184169081179091559160455492818460581c16106107e4576114b6921690614406565b6114e9575b6024356114e66114d060455463ffffffff1690565b63ffffffff166000526044602052604060002090565b55005b6114fe6113fa6113e460455463ffffffff1690565b6114bb565b34610304576020600319360112610304576020610b1d600435611525816105c5565b613baa565b60606003193601126103045767ffffffffffffffff60048035828111610304576115579036908301611258565b916024359081116103045761156f9036908301610eb4565b6044359261157c846110ca565b611584614b96565b80519260458054600260ff8260301c1661159d8161311d565b036117045763ffffffff9081811690826115b88851846123fe565b9160581c16106116db57855187036116b257906115ea91818816011663ffffffff1663ffffffff196045541617604555565b60005b8581106115f657005b6116008186614a2d565b5115801561168c575b61166357808761163261162161137960019589614a2d565b61162b848a614a2d565b5190614406565b61163d575b016115ed565b61165e6113fa61164d8389614a2d565b516000526043602052604060002090565b611637565b826040517f3f6cc768000000000000000000000000000000000000000000000000000000008152fd5b506116978186614a2d565b5182546116ac9060581c63ffffffff16610c1e565b10611609565b836040517f991f339f000000000000000000000000000000000000000000000000000000008152fd5b836040517f5fd48f91000000000000000000000000000000000000000000000000000000008152fd5b826040517f64151c75000000000000000000000000000000000000000000000000000000008152fd5b34610304576020600319360112610304576001600160a01b03600435611752816105c5565b1660005260e16020526020604060002054604051908152f35b346103045760006003193601126103045760206105b4613077565b3461030457602060031936011261030457600435438110156118be576117ae6117c591612fe7565b60e054906000908260058111611852575b50612a4c565b806117f757507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005b60405191168152602090f35b61184d610bda6118237bffffffffffffffffffffffffffffffffffffffffffffffffffffffff93612438565b60e06000527f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f0190565b6117eb565b80610bf661186292959395612e95565b60e060005290611896610c1e7f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f8401610c14565b63ffffffff851610156118ac5750915b386117bf565b9291506118b8906123f0565b906118a6565b606460405162461bcd60e51b815260206004820152601a60248201527f566f7465733a20626c6f636b206e6f7420796574206d696e65640000000000006044820152fd5b604060031936011261030457610644600435611929602435611923816105c5565b826151af565b33614512565b34610304576000806003193601126105935760405190806079546119528161396e565b8085529160019180831690811561054b575060011461197b576104ec856104e081870382610e4e565b9250607983527f957bbdc7fad0dec56e7c96af4a3ab63aa9daf934a52ffce891945b7fb622d7915b8284106119be5750505081016020016104e0826104ec6104d0565b805460208587018101919091529093019281016119a3565b34610304576020600319360112610304576001600160a01b036004356119fb816105c5565b1660005260df60205260207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff611a30604060002061266f565b16604051908152f35b61010060031936011261030457600435611a52816105c5565b67ffffffffffffffff60243581811161030457611a73903690600401610eb4565b91604435611a80816110ca565b60c43590611a8d826110ca565b60e43594848611610304573660238701121561030457856004013594851161030457366024868801011161030457602461064496019360a435926084359260643592614be0565b60206003193601126103045761064460043561192981603a546154ce565b3461030457604060031936011261030457600435611b0f816105c5565b602435611b1b816110ca565b611b24826156f0565b6001600160a01b03821691823314611bc65781611b64611b949233600052607d6020526040600020906001600160a01b0316600052602052604060002090565b9060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051901515815233907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3005b606460405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b3461030457608060031936011261030457600435611c27816105c5565b60243590611c34826105c5565b6044356064359267ffffffffffffffff8411610304573660238501121561030457611c6c610cf794369060248160040135910161101a565b92610cda336156f0565b611c7f366112c0565b90611c88614b96565b8051906045549260ff8460301c1693611ca08561311d565b600180950361080e5763ffffffff8082169181611cbd87856123fe565b9160581c16106107e457611ce691818616011663ffffffff1663ffffffff196045541617604555565b611cef43612438565b4060005b848110611cfc57005b80611d08879284614968565b84611d1f82611d1a611379868b614a2d565b614406565b611d2b575b5001611cf3565b6113fa611d42916000526043602052604060002090565b38611d24565b346103045760c060031936011261030457600435611d65816105c5565b6064359060243560443560ff8416840361030457804211611e5957611e27611e54916106449560405190611e0f82611de36020820195898b886060919493926001600160a01b0360808301967fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845216602083015260408201520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283610e4e565b611e2260a4359360843593519020612df4565b612b2f565b91611e4e836001600160a01b031660005260e1602052604060002090815491600183019055565b14612022565b61206d565b606460405162461bcd60e51b815260206004820152601860248201527f566f7465733a207369676e6174757265206578706972656400000000000000006044820152fd5b3461030457602060031936011261030457600435611ed9611ed482600052607a6020526001600160a01b0360406000205416151590565b612454565b604051907f01284a4600000000000000000000000000000000000000000000000000000000825260048201526000908181602481305afa908115611fb3578291611f2c575b604051806104ec848261047f565b90503d8083833e611f3d8183610e4e565b810190602081830312611fab5780519067ffffffffffffffff8211611faf570181601f82011215611fab57805192611f7484610fe0565b92611f826040519485610e4e565b8484526020858401011161059357506104ec92611fa59160208085019101610419565b38611f1e565b8280fd5b8380fd5b612cbf565b346103045760006003193601126103045760206040516103e88152f35b34610304576040600319360112610304576020612009600435611ff7816105c5565b60243590612004826105c5565b613cfb565b6040519015158152f35b610644610887610daa36610d72565b1561202957565b606460405162461bcd60e51b815260206004820152601460248201527f566f7465733a20696e76616c6964206e6f6e63650000000000000000000000006044820152fd5b816001600160a01b036120f88184169360009480865260de60205260408620936120ca81865416988996906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b85169687917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f8880a4613baa565b928482141580612297575b61210f575b5050505050565b81612184575b505082612124575b8080612108565b7fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249161216661216b926001600160a01b031660005260df602052604060002090565b612559565b60408051928352602083019190915290a238808061211d565b80826040925260df602052207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff806121b78361266f565b16858103908111612292576121cb43612fe7565b90828111612228577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249361221e9284612205931691612949565b6040805192851683529316602082015291829190820190565b0390a23880612115565b608460405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152fd5b6123c1565b50831515612103565b906001600160a01b03808216921682811415806123b9575b6122c157505050565b8061232b575b50816122d2575b5050565b6123186123137fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724926001600160a01b031660005260df602052604060002090565b6124fe565b60408051928352602083019190915290a2565b8060005260df60205260406000207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff806123608361266f565b1660001981019081116122925761237643612fe7565b90828111612228577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724936123b09284612205931691612949565b0390a2386122c7565b5060016122b8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906001820180921161229257565b9190820180921161229257565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00820191821161229257565b90600019820191821161229257565b9190820391821161229257565b1561245b57565b606460405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152fd5b600052607a6020526001600160a01b0360406000205416610490811515612454565b6124e4611ed482600052607a6020526001600160a01b0360406000205416151590565b600052607c6020526001600160a01b036040600020541690565b907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff91826125278261266f565b16600181018091116122925761253c43612fe7565b9184821161222857849283612552931691612949565b9316921690565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9291836125828361266f565b169081018091116122925761253c43612fe7565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90816125bd612625565b1660018101809111612292576125d243612fe7565b908381116122285783918261255292169061280a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff908161260f612625565b166000198101908111612292576125d243612fe7565b60e05460009080612637575050600090565b806000198101116122925760e07f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4e9252015460201c90565b80546000918161268157505050600090565b6000199282848101116122925760209181522001015460201c90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60e0549068010000000000000000821015610d6d57600182018060e0558210156127385760e0600052805160209182015190911b63ffffffff191663ffffffff91909116177f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f90910155565b61269d565b90815468010000000000000000811015610d6d576001810180845581101561273857600092835260209283902082519284015190931b63ffffffff191663ffffffff9290921691909117910155565b906040516040810181811067ffffffffffffffff821117610d6d57604052602081935463ffffffff81168352811c910152565b156127c657565b606460405162461bcd60e51b815260206004820152601760248201527f436865636b706f696e743a20696e76616c6964206b65790000000000000000006044820152fd5b60e054919291801561290a576128bb91818561283261282d611823602096612438565b61278c565b92612841845163ffffffff1690565b61285863ffffffff918284169283911611156127bf565b612869610c1e865163ffffffff1690565b036128bf575061287e61182361289893612438565b9063ffffffff63ffffffff1983549260201b169116179055565b01517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9190565b905061290591506128dd6128d1610e8f565b63ffffffff9092168252565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8716818501526126cc565b612898565b506129439061291a6128d1610e8f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660208201526126cc565b60009190565b90929192838254801515600014612a125792602092918461297f61282d6129726128bb98612438565b8560005260206000200190565b9361298e855163ffffffff1690565b6129a563ffffffff918284169283911611156127bf565b6129b6610c1e875163ffffffff1690565b036129cc575061289892610bcd61287e92612438565b915050612905916129ea6129de610e8f565b63ffffffff9093168352565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff88168286015261273d565b505061294391612a236129de610e8f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8516602083015261273d565b905b828110612a5a57505090565b9091808216906001818418811c83018093116122925760e060005263ffffffff80847f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f01541690861610600014612ab5575050915b90612a4e565b9093925081018091116122925790612aaf565b91905b838210612ad85750505090565b909192808316906001818518811c83018093116122925760008681526020902083015463ffffffff9081169085161015612b17575050925b9190612acb565b9094935081018091116122925791612b10565b603a55565b916104909391612b3e93612ccb565b919091612b84565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60051115612b7f57565b612b46565b612b8d81612b75565b80612b955750565b612b9e81612b75565b60018103612beb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b612bf481612b75565b60028103612c415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80612c4d600392612b75565b14612c5457565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608490fd5b6040513d6000823e3d90fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311612d415791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15611fb35781516001600160a01b03811615612d3b579190565b50600190565b50505050600090600390565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527ff63dd8159b098696ebb81a400cea3c4ffba1938921072285df391c19c71dce6160408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117610d6d5760405251902090565b612dfc612d4d565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526080810181811067ffffffffffffffff821117610d6d5760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8115612e90570490565b612e57565b8015612fcf5780612f68612f61612f57612f4d612f43612f39612f2f612f2560016104909a6000908b60801c80612fc3575b508060401c80612fb6575b508060201c80612fa9575b508060101c80612f9c575b508060081c80612f8f575b508060041c80612f82575b508060021c80612f75575b50821c612f6e575b811c1b612f1e818b612e86565b0160011c90565b612f1e818a612e86565b612f1e8189612e86565b612f1e8188612e86565b612f1e8187612e86565b612f1e8186612e86565b612f1e8185612e86565b8092612e86565b90612fd5565b8101612f11565b6002915091019038612f09565b6004915091019038612efe565b6008915091019038612ef3565b6010915091019038612ee8565b6020915091019038612edd565b6040915091019038612ed2565b91505060809038612ec7565b50600090565b9080821015612fe2575090565b905090565b63ffffffff90818111612ff8571690565b608460405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152fd5b908160209103126103045751610490816105c5565b6000906040517f6352211e0000000000000000000000000000000000000000000000000000000081523060048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa600091816130ed575b506130e95750565b9150565b61310f91925060203d8111613116575b6131078183610e4e565b810190613062565b90386130e1565b503d6130fd565b60041115612b7f57565b99979593919a98969492909a6000549b60ff8d60081c1615809d819e6132b5575b8115613295575b501561322b576131939b8d61318a60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055565b6131f557613483565b61319957565b6131c67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff60005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b6132266101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff6000541617600055565b613483565b608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b303b159150816132a7575b503861314f565b6001915060ff1614386132a0565b600160ff8216109150613148565b6132cc8161311d565b7fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff66ff0000000000006045549260301b16911617604555565b91908110156127385760061b0190565b35610490816110b0565b8181029291811591840414171561229257565b906020906133788135613344816105c5565b84906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b0135613383816110b0565b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b680100000000000000008211610d6d576038548260385580831061343c575b5060386000527f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f4561996000915b8383106134205750505050565b6001604082613430839486613332565b01920192019190613413565b600060388152837f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619992830192015b8281106134785750506133e8565b81815560010161346a565b90613497919c9b979892969c99959961383c565b63ffffffff8116156137a157811590811580613798575b61376e5761138861ffff86161161374457613504907fffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff6effffffff00000000000000000000006045549260581b16911617604555565b1561373357508061372357506135198361311d565b600383036136f95761352d61356892603a55565b7fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff68ffff000000000000006045549260381b16911617604555565b6135718161311d565b806136ea575b506001600160a01b03811661366d575b5060018092151514613628575b836135a0575b50509050565b60009182905b8582106135f457505061251c92936135bd916133c9565b116135ca5780388061359a565b60046040517ffe0c06b7000000000000000000000000000000000000000000000000000000008152fd5b613620829461361a613613602061360d86978c8a613305565b01613315565b61ffff1690565b906123fe565b9301906135a6565b6136687001000000000000000000000000000000007fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff6045541617604555565b613594565b6136e4906136b06f010000000000000000000000000000007fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff6045541617604555565b6001600160a01b03167fffffffffffffffffffffffff00000000000000000000000000000000000000006040541617604055565b38613587565b6136f3906132c3565b38613577565b60046040517f27bfeafe000000000000000000000000000000000000000000000000000000008152fd5b61356892612b2a61352d92603455565b603355506135689161352d90603a55565b60046040517f44b93ba4000000000000000000000000000000000000000000000000000000008152fd5b60046040517f04cff63b000000000000000000000000000000000000000000000000000000008152fd5b508315156134ae565b60046040517fb8a9effe000000000000000000000000000000000000000000000000000000008152fd5b156137d257565b608460405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b9061385760ff60005460081c16613852816137cb565b6137cb565b815167ffffffffffffffff8111610d6d5761387c8161387760785461396e565b6139c1565b602080601f83116001146138bd575081906105e3946000926138b2575b50506000198260011b9260031b1c191617607855613aa3565b015190503880613899565b9192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0841661390f60786000527f8dc6fb69531d98d70dc0420e638d2dfd04e09e1ec783ede9aac77da9c5a0dac490565b936000905b8282106139565750509160019391856105e39796941061393d575b505050811b01607855613aa3565b015160001960f88460031b161c1916905538808061392f565b80600186978294978701518155019601940190613914565b90600182811c921680156139b7575b602083101461398857565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f169161397d565b601f81116139cd575050565b600090607882527f8dc6fb69531d98d70dc0420e638d2dfd04e09e1ec783ede9aac77da9c5a0dac4906020601f850160051c83019410613a28575b601f0160051c01915b828110613a1d57505050565b818155600101613a11565b9092508290613a08565b601f8111613a3e575050565b600090607982527f957bbdc7fad0dec56e7c96af4a3ab63aa9daf934a52ffce891945b7fb622d791906020601f850160051c83019410613a99575b601f0160051c01915b828110613a8e57505050565b818155600101613a82565b9092508290613a79565b90815167ffffffffffffffff8111610d6d57613ac981613ac460795461396e565b613a32565b602080601f8311600114613b045750819293600092613af9575b50506000198260011b9260031b1c191617607955565b015190503880613ae3565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831694613b5560796000527f957bbdc7fad0dec56e7c96af4a3ab63aa9daf934a52ffce891945b7fb622d79190565b926000905b878210613b92575050836001959610613b79575b505050811b01607955565b015160001960f88460031b161c19169055388080613b6e565b80600185968294968601518155019501930190613b5a565b906001600160a01b0382168015613c0f57600052607b60205260406000205491600160ff60455460301c16613bde8161311d565b14613be65750565b91613c0861049092936001600160a01b03166000526041602052604060002090565b54906123fe565b608460405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152fd5b81600052607c602052613cbe816040600020906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6001600160a01b0380613cd08461249f565b169116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4565b6001600160a01b03918281167388899dc0b84c6e726840e00dfb94abc6248825ec8114613d7657731e0049783f008a0085193e00003d00cd54003c7114613d6e5760ff92613d699216600052607d6020526040600020906001600160a01b0316600052602052604060002090565b541690565b505050600190565b50505050600190565b15613d8657565b608460405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152fd5b613df98261249f565b916001600160a01b0390818316928285168414948515613e39575b50508315613e23575b50505090565b613e2f919293506124c1565b1614388080613e1d565b613e44929550613cfb565b923880613e14565b15613e5357565b608460405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152fd5b613ee192613eca8161249f565b6001600160a01b0383811695909182168614613e4c565b83168015614016576105e394613ef7838561407f565b613f1981613f13613f078661249f565b6001600160a01b031690565b14613e4c565b613f58613f3084600052607c602052604060002090565b7fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b613f75846001600160a01b0316600052607b602052604060002090565b6000198154019055613f9a856001600160a01b0316600052607b602052604060002090565b60018154019055613fec85613fb985600052607a602052604060002090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46140f1565b608460405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b0316151590816140c2575b5061409857565b60046040517f765c862b000000000000000000000000000000000000000000000000000000008152fd5b9050600052604360205260ff6040600020541680156140e2575b38614091565b5060ff60455460801c166140dc565b614134906001600160a01b03809116908115614191575b808416918215614182575b60005260de60205280604060002054169160005260406000205416906122a0565b61ffff60455460481c169081614148575050565b61415190613baa565b1161415857565b60046040517f550ffa9c000000000000000000000000000000000000000000000000000000008152fd5b61418a6125e8565b5050614113565b614199612596565b5050614108565b6141a8612596565b50506141346001600160a01b038083169081156141fb575b60de6020527f7feac6ef4894db443b6046f934d8dffe8af4812f9f4b307224f533cf30c9fb62546000928352604090922054811691166122a0565b6142036125e8565b50506141c0565b908160209103126103045751610490816102da565b909261049094936080936001600160a01b0380921684521660208301526040820152816060820152019061043c565b3d15614279573d9061425f82610fe0565b9161426d6040519384610e4e565b82523d6000602084013e565b606090565b92909190823b15613d76576142d29260209260006001600160a01b036040518097819682957f150b7a02000000000000000000000000000000000000000000000000000000009b8c8552336004860161421f565b0393165af16000918161438b575b50614365576142ed61424e565b805190816143605760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000161490565b6143ad91925060203d81116143b4575b6143a58183610e4e565b81019061420a565b90386142e0565b503d61439b565b156143c257565b606460405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152fd5b6001600160a01b0381169182156144ce576105e39261444461443e83600052607a6020526001600160a01b0360406000205416151590565b156143bb565b61446761443e83600052607a6020526001600160a01b0360406000205416151590565b614484836001600160a01b0316600052607b602052604060002090565b600181540190556144a383613fb984600052607a602052604060002090565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a46141a0565b606460405162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b9061451b61533e565b604580549260ff8460301c166145308161311d565b61080e5763ffffffff93848116908482018092116122925760581c8516106107e457600091825b84811061456657505050505050565b81549063ffffffff1960019288848183160116918291161784556001600160a01b0385168015614654576145bf6145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b1590565b6143bb565b6145e56145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b614602866001600160a01b0316600052607b602052604060002090565b84815401905561462086613fb984600052607a602052604060002090565b867fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a461464e846141a0565b01614557565b606460405162461bcd60e51b8152602080600483015260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b906146a061533e565b60455490600160ff8360301c166146b68161311d565b0361080e5763ffffffff91826146ce838284166123fe565b9160581c16106107e4576147589161474291600243016001614703876001600160a01b03166000526041602052604060002090565b0155614722856001600160a01b03166000526041602052604060002090565b8181540190551661473860455463ffffffff1690565b0163ffffffff1690565b63ffffffff1663ffffffff196045541617604555565b60455460481c61ffff169081614148575050565b9190805b61477957505050565b6147838183614968565b906001600160a01b03841691821561465457600019926147bf6145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b6147e56145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b614802866001600160a01b0316600052607b602052604060002090565b6001815401905561482186613fb984600052607a602052604060002090565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4614850846141a0565b0180614770565b9290805b6148655750505050565b61486f8184614968565b906001600160a01b0385169182156146545780600019936148ac6145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b6148d26145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b6148ef886001600160a01b0316600052607b602052604060002090565b6001815401905561490e88613fb984600052607a602052604060002090565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a48361493e876141a0565b61494b575b50018061485b565b6113fa614962916000526043602052604060002090565b38614943565b90604051906020820192835260408201526040815261498681610e16565b51902063ffffffff60455460581c169081159081612e9057826149a991066123f0565b6149c981600052607a6020526001600160a01b0360406000205416151590565b156149de5781612e90578260019106016149a9565b92915050565b906149ed61533e565b604554600260ff8260301c16614a028161311d565b0361080e5763ffffffff80821691835183018093116122925760581c16106107e4576105e391614a41565b80518210156127385760209160051b010190565b81516045805463ffffffff19811663ffffffff9182168285160182161782559391929160005b848110614a7657505050505050565b614a808183614a2d565b519081158015614acb575b614aa157614a9b60019286614406565b01614a67565b60046040517f3f6cc768000000000000000000000000000000000000000000000000000000008152fd5b5086845460581c168211614a8b565b15614ae157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6000906040517f713562fe0000000000000000000000000000000000000000000000000000000081523060048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa600091816130ed57506130e95750565b6105e361130d613077565b908092918237016000815290565b6020908260405193849283378101604281520301902090565b91909163ffffffff8080941691160191821161229257565b9493909596989791988415614f6057614bf98382614baf565b614c048682546123fe565b905581614c118483614baf565b5411614f36576045549363ffffffff94614c2d878783166123fe565b868260581c16106107e45760201c60ff16614c4781612b75565b15614f0c5760409a8b519384898c6020830193868646943095614ced968995939192608e9795937f9d13a5ba0000000000000000000000000000000000000000000000000000000088527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000809360601b166004890152601888015260601b166038860152151560f81b604c850152604d840152606d830152151560f81b608d8201520190565b03947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0958681018252614d209082610e4e565b519020614d2c90614fc7565b614d3736878661101a565b614d4091614f8a565b6001600160a01b031673c0ffee06ce3d6689305035601a055a96acd619c68114159081614ef7575b50614ece5715614eae575034614e85575b60455460301c60ff16614d8b8161311d565b60028103614dd3575050505050825103614daa576105e393945061512c565b600485517f991f339f000000000000000000000000000000000000000000000000000000008152fd5b909192939650614de58196959661311d565b60018103614e3d575091614e12614e1e61474293614e38956105e39b9c5193849160208301968791614ba1565b03908101835282610e4e565b519020948416614e3360455463ffffffff1690565b614bc8565b614857565b93949550505050614e4d8161311d565b614e5c576105e393945061500a565b600485517f3f886819000000000000000000000000000000000000000000000000000000008152fd5b60048a517f122d34a8000000000000000000000000000000000000000000000000000000008152fd5b858115614ec4575b614ebf916154ce565b614d79565b603a549150614eb6565b60048c517f73a8ee18000000000000000000000000000000000000000000000000000000008152fd5b9050614f04613f07613077565b141538614d68565b60046040517f7963e2b5000000000000000000000000000000000000000000000000000000008152fd5b60046040517f9a89c66a000000000000000000000000000000000000000000000000000000008152fd5b60046040517f2c5211c6000000000000000000000000000000000000000000000000000000008152fd5b815161049092612b3e9291604103614fbd57614fb9916020820151906060604084015193015160001a90612ccb565b9091565b5050600090600290565b60405160208101917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008352603c820152603c815261500481610e16565b51902090565b91600090815b83811061501e575050505050565b60459081549163ffffffff1963ffffffff93600194858183160116918291161782556001600160a01b0388168015614654576150766145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b61509c6145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b6150b9896001600160a01b0316600052607b602052604060002090565b8581540190556150d789613fb984600052607a602052604060002090565b867fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a483615106886141a0565b615112575b5001615010565b6113fa6113e4615126925463ffffffff1690565b3861510b565b8161513691614a41565b805191615141575050565b600090815b8381106151535750505050565b61515d8183614a2d565b51835260436020526040832090600191827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905501615146565b9061ffff8092166127100391821161229257565b9060ff6151cf826001600160a01b03166000526039602052604060002090565b5416156152fc576152016151f6826001600160a01b03166000526039602052604060002090565b5460181c61ffff1690565b91615236615230615225846001600160a01b03166000526039602052604060002090565b5460081c61ffff1690565b9361519b565b9261525361524b603a5461ffff80971661331f565b612710900490565b61525d83826154ce565b6001600160a01b0384169485615276575b505050505050565b6152ca9361528f6152949361524b936152c2961661331f565b61331f565b926152a96152a4856037546123fe565b603755565b6001600160a01b03166000526036602052604060002090565b9182546123fe565b90557ff2f90295cdb5dafd392bfc62d7868bcc79e8c6164c820c7cc195d6c8cda8e674600080a238808080808061526e565b6000805260396020527f619fcd35f40c77da8aa64d5f98c1fed669135ecc4f245ce6667721b157f7098f805460181c61ffff1692906152369061523090615225565b60455460201c60ff1661535081612b75565b6002810361535b5750565b61536481612b75565b600381036153de5750603d5442106153b4576153aa6402000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff6045541617604555565b6105e36000603d55565b60046040517fb3c03577000000000000000000000000000000000000000000000000000000008152fd5b806153ea600492612b75565b0361542b57603d5442106153b457603e5442106105e35760046040517f0734f1ad000000000000000000000000000000000000000000000000000000008152fd5b60046040517f63a2de0f000000000000000000000000000000000000000000000000000000008152fd5b60455460781c60ff166154a2578080046001148115171561229257340361547857565b60046040517fc288bf8f000000000000000000000000000000000000000000000000000000008152fd5b80156154cb57808004600103612292576105e3906001600160a01b036040541630903390615511565b50565b60455460781c60ff166154ed57906154e59161331f565b340361547857565b80156122ce576105e3916155009161331f565b6001600160a01b0360405416309033905b906000806155bc9460405194602097888701957f23b872dd0000000000000000000000000000000000000000000000000000000087526001600160a01b03938480921660248a015216604488015260648701526064865261557186610e32565b16926040519461558086610dfa565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16155b661424e565b91615660565b805190816155c957505050565b82806155d993830101910161564b565b156155e15750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b908160209103126103045751610490816110ca565b919290156156c15750815115615674575090565b3b1561567d5790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156156d45750805190602001fd5b610d699060405191829162461bcd60e51b83526004830161047f565b60455460281c60ff166157028161311d565b6001810361579357506040517fc61711340000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039190911660248201526020816044816daaeb6d7670e522a718067333cd4e5afa8015611fb35761576c5750565b6154cb9060203d811161578c575b6157848183610e4e565b81019061564b565b503d61577a565b61579c8161311d565b156157a45750565b6daaeb6d7670e522a718067333cd4e803b6157bd575050565b803b15610304576040517f7d3e3dbe000000000000000000000000000000000000000000000000000000008152306004820152733cc6cdda760b79bafa08df41ecfa224f810dceb6602482015260008160448183865af190816158ba575b50156122ce576158a99160209161585d650100000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff6045541617604555565b6040517fc61711340000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0390921660248301529092839190829081906044820190565b03915afa8015611fb35761576c5750565b806158c76158cd92610de6565b8061040e565b3861581b565b600036818037808036817f00000000000000000000000000000000000000000000000000000000000000005af43d82803e1561590d573d90f35b3d90fdfea264697066735822122051e188912b279e2d0277f8541b78b77d258b9598f307032bcdc150b6bccb404764736f6c63430008130033","opcodes":"PUSH1 0xC0 CALLVALUE PUSH3 0x141 JUMPI PUSH1 0x1F PUSH3 0x5AA4 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH3 0x146 JUMPI DUP1 DUP5 SWAP3 PUSH1 0x40 SWAP5 DUP6 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH3 0x141 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP4 AND DUP4 SUB PUSH3 0x141 JUMPI PUSH1 0x20 ADD MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH3 0x141 JUMPI PUSH1 0x80 MSTORE PUSH1 0x0 SLOAD PUSH1 0xFF DUP2 PUSH1 0x8 SHR AND PUSH3 0xEC JUMPI PUSH1 0xFF DUP1 DUP3 AND LT PUSH3 0xB0 JUMPI JUMPDEST POP PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD PUSH2 0x5947 SWAP1 DUP2 PUSH3 0x15D DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x30B6 ADD MSTORE PUSH2 0x4B64 ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH2 0x58DF ADD MSTORE RETURN JUMPDEST PUSH1 0xFF SWAP1 DUP2 NOT AND OR PUSH1 0x0 SSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0xFF DUP2 MSTORE LOG1 CODESIZE PUSH3 0x83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x58D3 JUMPI STOP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2CB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0xDE77EB8 EQ PUSH2 0x2C1 JUMPI DUP1 PUSH4 0x1249C58B EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x1D7DF191 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x1FF4CC7D EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x3A46B1A8 EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x438B1B4B EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x4402D254 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x449A52F8 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x4A50AA85 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x5066E5C2 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x587CDE1E EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x639814E0 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0x6817C76C EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x68FDDA33 EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0x6AD54240 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x71E6775F EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x8E539E8C EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0x9AB24EB0 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0x9D13A5BA EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xBE172EDF EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0xC3CDA520 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0xCB93C48F EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x203 JUMPI PUSH4 0xFEFA5D72 SUB PUSH2 0xE JUMPI PUSH2 0x2013 JUMP JUMPDEST PUSH2 0x1FD5 JUMP JUMPDEST PUSH2 0x1FB8 JUMP JUMPDEST PUSH2 0x1E9D JUMP JUMPDEST PUSH2 0x1D48 JUMP JUMPDEST PUSH2 0x1C76 JUMP JUMPDEST PUSH2 0x1C0A JUMP JUMPDEST PUSH2 0x1AF2 JUMP JUMPDEST PUSH2 0x1AD4 JUMP JUMPDEST PUSH2 0x1A39 JUMP JUMPDEST PUSH2 0x19D6 JUMP JUMPDEST PUSH2 0x192F JUMP JUMPDEST PUSH2 0x1902 JUMP JUMPDEST PUSH2 0x1786 JUMP JUMPDEST PUSH2 0x176B JUMP JUMPDEST PUSH2 0x172D JUMP JUMPDEST PUSH2 0x152A JUMP JUMPDEST PUSH2 0x1503 JUMP JUMPDEST PUSH2 0x142A JUMP JUMPDEST PUSH2 0x12F8 JUMP JUMPDEST PUSH2 0x123A JUMP JUMPDEST PUSH2 0x1215 JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH2 0x11D1 JUMP JUMPDEST PUSH2 0x1191 JUMP JUMPDEST PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0xF8D JUMP JUMPDEST PUSH2 0xF62 JUMP JUMPDEST PUSH2 0xF12 JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH2 0xC93 JUMP JUMPDEST PUSH2 0xB25 JUMP JUMPDEST PUSH2 0xB02 JUMP JUMPDEST PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0xA97 JUMP JUMPDEST PUSH2 0x88C JUMP JUMPDEST PUSH2 0x85C JUMP JUMPDEST PUSH2 0x838 JUMP JUMPDEST PUSH2 0x775 JUMP JUMPDEST PUSH2 0x72C JUMP JUMPDEST PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x596 JUMP JUMPDEST PUSH2 0x493 JUMP JUMPDEST PUSH2 0x309 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND SUB PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 CALLDATALOAD PUSH2 0x349 DUP2 PUSH2 0x2DA JUMP JUMPDEST AND PUSH32 0x2A55205A00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x380 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x3E4 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x3BA JUMPI JUMPDEST POP CODESIZE PUSH2 0x375 JUMP JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ CODESIZE PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP PUSH2 0x3AC JUMP JUMPDEST PUSH1 0x0 SWAP2 SUB SLT PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x42C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x41C JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 SWAP4 PUSH2 0x478 DUP2 MLOAD DUP1 SWAP3 DUP2 DUP8 MSTORE DUP8 DUP1 DUP9 ADD SWAP2 ADD PUSH2 0x419 JUMP JUMPDEST ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x490 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x43C JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x593 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP1 PUSH1 0x78 SLOAD PUSH2 0x4B6 DUP2 PUSH2 0x396E JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0x54B JUMPI POP PUSH1 0x1 EQ PUSH2 0x4F0 JUMPI JUMPDEST PUSH2 0x4EC DUP6 PUSH2 0x4E0 DUP2 DUP8 SUB DUP3 PUSH2 0xE4E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x47F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP3 POP PUSH1 0x78 DUP4 MSTORE PUSH32 0x8DC6FB69531D98D70DC0420E638D2DFD04E09E1EC783EDE9AAC77DA9C5A0DAC4 JUMPDEST DUP3 DUP5 LT PUSH2 0x533 JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x4E0 DUP3 PUSH2 0x4EC PUSH2 0x4D0 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x518 JUMP JUMPDEST DUP7 SWAP6 POP PUSH2 0x4EC SWAP7 SWAP4 POP PUSH1 0x20 SWAP3 POP PUSH2 0x4E0 SWAP5 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 SWAP4 PUSH2 0x4D0 JUMP JUMPDEST DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0x5B4 PUSH1 0x4 CALLDATALOAD PUSH2 0x24C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH2 0x5E3 DUP3 PUSH2 0x5C5 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x602 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x60E DUP3 PUSH2 0x56F0 JUMP JUMPDEST PUSH2 0x617 DUP2 PUSH2 0x249F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND DUP1 SWAP2 DUP6 AND EQ PUSH2 0x6C2 JUMPI CALLER EQ SWAP1 DUP2 ISZERO PUSH2 0x6B0 JUMPI JUMPDEST POP ISZERO PUSH2 0x646 JUMPI PUSH2 0x644 SWAP2 PUSH2 0x3C79 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH2 0x6BC SWAP2 POP CALLER SWAP1 PUSH2 0x3CFB JUMP JUMPDEST CODESIZE PUSH2 0x635 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x33 SLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x756 JUMPI JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 PUSH1 0x3 PUSH1 0xFF PUSH1 0x45 SLOAD PUSH1 0x30 SHR AND PUSH2 0x76D DUP2 PUSH2 0x311D JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x749 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH2 0x78C PUSH1 0x3A SLOAD PUSH2 0x5455 JUMP JUMPDEST PUSH2 0x794 PUSH2 0x533E JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0xFF DUP2 PUSH1 0x30 SHR AND PUSH2 0x7A7 DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH2 0x80E JUMPI PUSH1 0x45 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x1 ADD DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 PUSH1 0x45 SLOAD SWAP2 DUP2 DUP4 PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI PUSH2 0x644 SWAP2 AND CALLER PUSH2 0x4406 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x5FD48F9100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x64151C7500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH4 0xFFFFFFFF PUSH1 0x45 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH2 0x644 PUSH1 0x4 CALLDATALOAD PUSH2 0x877 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x887 DUP3 PUSH1 0x3A SLOAD PUSH2 0x54CE JUMP JUMPDEST PUSH2 0x4697 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x593 JUMPI PUSH1 0x1 PUSH2 0x8B8 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xA41 JUMPI PUSH1 0x1 PUSH2 0x8EF CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SLOAD NUMBER GT ISZERO PUSH2 0xA17 JUMPI PUSH2 0x989 DUP3 PUSH2 0x9C6 SWAP4 BLOCKHASH SWAP1 DUP2 ISZERO PUSH2 0x9C9 JUMPI JUMPDEST POP DUP5 PUSH1 0x1 PUSH2 0x92A CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SSTORE DUP5 PUSH2 0x94A CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x45 SLOAD PUSH1 0x48 SHR PUSH2 0xFFFF AND SWAP3 PUSH2 0x983 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF PUSH1 0x45 SLOAD AND PUSH1 0x45 SSTORE JUMP JUMPDEST CALLER PUSH2 0x476C JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF PUSH11 0xFFFF000000000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x48 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST DUP1 RETURN JUMPDEST PUSH2 0x9F9 SWAP2 POP PUSH1 0xFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 NUMBER AND PUSH2 0x23FE JUMP JUMPDEST NUMBER DUP2 LT ISZERO PUSH2 0xA09 JUMPI JUMPDEST BLOCKHASH CODESIZE PUSH2 0x909 JUMP JUMPDEST PUSH2 0xA12 SWAP1 PUSH2 0x240B JUMP JUMPDEST PUSH2 0xA02 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x93C4A00300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x9890AF6000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xA83 DUP2 PUSH2 0x5C5 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0xA90 DUP2 PUSH2 0x5C5 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH2 0x644 PUSH2 0xAA8 CALLDATASIZE PUSH2 0xA6B JUMP JUMPDEST SWAP2 PUSH2 0xAB2 CALLER PUSH2 0x56F0 JUMP JUMPDEST PUSH2 0xAC4 PUSH2 0xABF DUP5 CALLER PUSH2 0x3DF0 JUMP JUMPDEST PUSH2 0x3D7F JUMP JUMPDEST PUSH2 0x3EBD JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x40 PUSH2 0x2710 PUSH2 0xAF4 PUSH2 0xFFFF PUSH1 0x45 SLOAD PUSH1 0x38 SHR AND PUSH1 0x24 CALLDATALOAD PUSH2 0x331F JUMP JUMPDEST DIV DUP2 MLOAD SWAP1 ADDRESS DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0xB1D PUSH2 0x2D4D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xB42 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0xDF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 NUMBER DUP2 LT ISZERO PUSH2 0xC4F JUMPI PUSH2 0xB71 PUSH2 0xB88 SWAP2 PUSH2 0x2FE7 JUMP JUMPDEST DUP3 SLOAD SWAP1 PUSH1 0x0 SWAP1 DUP3 PUSH1 0x5 DUP2 GT PUSH2 0xBE6 JUMPI JUMPDEST POP DUP5 PUSH2 0x2AC8 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0xBBB JUMPI POP POP PUSH1 0x20 PUSH1 0x0 JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST PUSH2 0xBDA PUSH2 0xBE1 SWAP2 PUSH2 0xBCD PUSH1 0x20 SWAP5 PUSH2 0x2438 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x20 SHR SWAP1 JUMP JUMPDEST PUSH2 0xB95 JUMP JUMPDEST DUP1 PUSH2 0xBF6 PUSH2 0xBFC SWAP3 SWAP6 SWAP4 SWAP6 PUSH2 0x2E95 JUMP JUMPDEST SWAP1 PUSH2 0x2447 JUMP JUMPDEST SWAP1 PUSH2 0xC27 PUSH2 0xC1E PUSH2 0xC14 DUP5 DUP10 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 JUMP JUMPDEST SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP6 AND LT ISZERO PUSH2 0xC3D JUMPI POP SWAP2 JUMPDEST CODESIZE PUSH2 0xB81 JUMP JUMPDEST SWAP3 SWAP2 POP PUSH2 0xC49 SWAP1 PUSH2 0x23F0 JUMP JUMPDEST SWAP1 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436865636B706F696E74733A20626C6F636B206E6F7420796574206D696E6564 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH2 0xCA1 CALLDATASIZE PUSH2 0xA6B JUMP JUMPDEST PUSH2 0xCAA CALLER PUSH2 0x56F0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 ADD SWAP4 DUP4 DUP6 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP7 GT OR PUSH2 0xD6D JUMPI PUSH2 0xCF7 SWAP5 PUSH1 0x40 MSTORE PUSH1 0x0 DUP5 MSTORE PUSH2 0xCDA CALLER PUSH2 0x56F0 JUMP JUMPDEST PUSH2 0xCE7 PUSH2 0xABF DUP5 CALLER PUSH2 0x3DF0 JUMP JUMPDEST PUSH2 0xCF2 DUP4 DUP4 DUP4 PUSH2 0x3EBD JUMP JUMPDEST PUSH2 0x427E JUMP JUMPDEST ISZERO PUSH2 0xCFE JUMPI STOP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xD8A DUP2 PUSH2 0x5C5 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD PUSH2 0x490 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x644 PUSH2 0xDB2 PUSH2 0xDAA CALLDATASIZE PUSH2 0xD72 JUMP JUMPDEST DUP2 SWAP4 SWAP2 PUSH2 0x51AF JUMP JUMPDEST PUSH2 0x4512 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x5E3 DUP3 PUSH2 0xDFA JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD6D JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x304 JUMPI DUP1 CALLDATALOAD SWAP2 PUSH2 0xECB DUP4 PUSH2 0xE9C JUMP JUMPDEST SWAP3 PUSH2 0xED9 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xE4E JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP3 DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x304 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xF03 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xF2A DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x304 JUMPI PUSH2 0xF4E PUSH2 0x644 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xEB4 JUMP JUMPDEST SWAP1 PUSH2 0xF5D PUSH1 0x3A SLOAD DUP4 MLOAD SWAP1 PUSH2 0x54CE JUMP JUMPDEST PUSH2 0x49E4 JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH2 0x644 PUSH1 0x4 CALLDATALOAD PUSH2 0xF7D DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xDB2 DUP3 PUSH1 0x3A SLOAD PUSH2 0x54CE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xFA5 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x304 JUMPI PUSH2 0xFC9 PUSH2 0x644 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xEB4 JUMP JUMPDEST SWAP1 PUSH2 0xF5D PUSH1 0x44 CALLDATALOAD PUSH2 0xFD9 DUP2 PUSH2 0x5C5 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x51AF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD6D JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x1026 DUP3 PUSH2 0xFE0 JUMP JUMPDEST SWAP2 PUSH2 0x1034 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0xE4E JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x304 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x304 JUMPI DUP2 PUSH1 0x20 PUSH2 0x490 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x101A JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x304 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x304 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x6 SHL ADD ADD GT PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH1 0xE4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH2 0xFFFF DUP2 AND SUB PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH2 0x104 CALLDATALOAD SWAP1 PUSH2 0x5E3 DUP3 PUSH2 0x10B0 JUMP JUMPDEST DUP1 ISZERO ISZERO SUB PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH2 0x124 CALLDATALOAD SWAP1 PUSH2 0x5E3 DUP3 PUSH2 0x10CA JUMP JUMPDEST PUSH2 0x144 CALLDATALOAD SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH2 0x160 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x304 JUMPI PUSH2 0x1120 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1051 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x304 JUMPI PUSH2 0x1138 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1051 JUMP JUMPDEST SWAP1 PUSH1 0xA4 CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x304 JUMPI PUSH2 0x1154 PUSH2 0x644 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x106C JUMP JUMPDEST PUSH2 0x115C PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x1164 PUSH2 0x109D JUMP JUMPDEST SWAP2 PUSH2 0x116D PUSH2 0x10BC JUMP JUMPDEST SWAP4 PUSH2 0x1176 PUSH2 0x10D4 JUMP JUMPDEST SWAP6 PUSH2 0x117F PUSH2 0x10E2 JUMP JUMPDEST SWAP8 PUSH1 0x84 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x3127 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH2 0x11B0 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0xDE DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH2 0x644 PUSH1 0x4 CALLDATALOAD PUSH2 0x11F1 DUP2 PUSH2 0x5C5 JUMP JUMPDEST CALLER PUSH2 0x206D JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0x5B4 PUSH1 0x4 CALLDATALOAD PUSH2 0x249F JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0xFFFF PUSH1 0x45 SLOAD PUSH1 0x48 SHR AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3A SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x304 JUMPI DUP1 CALLDATALOAD SWAP2 PUSH2 0x126F DUP4 PUSH2 0xE9C JUMP JUMPDEST SWAP3 PUSH2 0x127D PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xE4E JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP3 DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x304 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x12A7 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0x12B5 DUP2 PUSH2 0x5C5 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x304 JUMPI PUSH2 0x12EB SWAP2 PUSH1 0x4 ADD PUSH2 0x1258 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0x490 DUP2 PUSH2 0x10CA JUMP JUMPDEST PUSH2 0x1301 CALLDATASIZE PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH2 0x131D PUSH2 0x130D PUSH2 0x4B25 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x4ADA JUMP JUMPDEST PUSH1 0x45 DUP1 SLOAD SWAP3 PUSH1 0xFF DUP5 PUSH1 0x30 SHR AND PUSH2 0x1332 DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH2 0x80E JUMPI PUSH2 0x134C SWAP4 DUP4 MLOAD PUSH4 0xFFFFFFFF SWAP6 DUP7 SWAP2 DUP3 DUP5 AND PUSH2 0x23FE JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI DUP3 MLOAD SWAP3 PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1365 JUMPI STOP JUMPDEST DUP1 DUP4 PUSH2 0x13C5 PUSH2 0x1386 PUSH2 0x1379 PUSH1 0x1 SWAP6 DUP8 PUSH2 0x4A2D JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP10 PUSH2 0x13A4 PUSH2 0x1398 DUP11 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x13BE DUP2 PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF NOT PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST AND SWAP1 PUSH2 0x4406 JUMP JUMPDEST PUSH2 0x13D0 JUMPI JUMPDEST ADD PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1425 PUSH2 0x13FA PUSH2 0x13E4 DUP8 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x13CA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1442 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH2 0x144F DUP3 PUSH2 0x10CA JUMP JUMPDEST PUSH2 0x145A PUSH1 0x3A SLOAD PUSH2 0x5455 JUMP JUMPDEST PUSH2 0x1462 PUSH2 0x533E JUMP JUMPDEST PUSH1 0x45 SLOAD SWAP1 PUSH1 0x3 PUSH1 0xFF DUP4 PUSH1 0x30 SHR AND PUSH2 0x1478 DUP2 PUSH2 0x311D JUMP JUMPDEST SUB PUSH2 0x80E JUMPI PUSH1 0x45 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP4 DUP5 AND PUSH1 0x1 ADD DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 PUSH1 0x45 SLOAD SWAP3 DUP2 DUP5 PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI PUSH2 0x14B6 SWAP3 AND SWAP1 PUSH2 0x4406 JUMP JUMPDEST PUSH2 0x14E9 JUMPI JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x14E6 PUSH2 0x14D0 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x44 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE STOP JUMPDEST PUSH2 0x14FE PUSH2 0x13FA PUSH2 0x13E4 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x14BB JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0xB1D PUSH1 0x4 CALLDATALOAD PUSH2 0x1525 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x3BAA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP1 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x304 JUMPI PUSH2 0x1557 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x1258 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x304 JUMPI PUSH2 0x156F SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xEB4 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 PUSH2 0x157C DUP5 PUSH2 0x10CA JUMP JUMPDEST PUSH2 0x1584 PUSH2 0x4B96 JUMP JUMPDEST DUP1 MLOAD SWAP3 PUSH1 0x45 DUP1 SLOAD PUSH1 0x2 PUSH1 0xFF DUP3 PUSH1 0x30 SHR AND PUSH2 0x159D DUP2 PUSH2 0x311D JUMP JUMPDEST SUB PUSH2 0x1704 JUMPI PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP2 AND SWAP1 DUP3 PUSH2 0x15B8 DUP9 MLOAD DUP5 PUSH2 0x23FE JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x16DB JUMPI DUP6 MLOAD DUP8 SUB PUSH2 0x16B2 JUMPI SWAP1 PUSH2 0x15EA SWAP2 DUP2 DUP9 AND ADD AND PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF NOT PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP6 DUP2 LT PUSH2 0x15F6 JUMPI STOP JUMPDEST PUSH2 0x1600 DUP2 DUP7 PUSH2 0x4A2D JUMP JUMPDEST MLOAD ISZERO DUP1 ISZERO PUSH2 0x168C JUMPI JUMPDEST PUSH2 0x1663 JUMPI DUP1 DUP8 PUSH2 0x1632 PUSH2 0x1621 PUSH2 0x1379 PUSH1 0x1 SWAP6 DUP10 PUSH2 0x4A2D JUMP JUMPDEST PUSH2 0x162B DUP5 DUP11 PUSH2 0x4A2D JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x4406 JUMP JUMPDEST PUSH2 0x163D JUMPI JUMPDEST ADD PUSH2 0x15ED JUMP JUMPDEST PUSH2 0x165E PUSH2 0x13FA PUSH2 0x164D DUP4 DUP10 PUSH2 0x4A2D JUMP JUMPDEST MLOAD PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1637 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH32 0x3F6CC76800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP PUSH2 0x1697 DUP2 DUP7 PUSH2 0x4A2D JUMP JUMPDEST MLOAD DUP3 SLOAD PUSH2 0x16AC SWAP1 PUSH1 0x58 SHR PUSH4 0xFFFFFFFF AND PUSH2 0xC1E JUMP JUMPDEST LT PUSH2 0x1609 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x991F339F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x5FD48F9100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH32 0x64151C7500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1752 DUP2 PUSH2 0x5C5 JUMP JUMPDEST AND PUSH1 0x0 MSTORE PUSH1 0xE1 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0x5B4 PUSH2 0x3077 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD NUMBER DUP2 LT ISZERO PUSH2 0x18BE JUMPI PUSH2 0x17AE PUSH2 0x17C5 SWAP2 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0xE0 SLOAD SWAP1 PUSH1 0x0 SWAP1 DUP3 PUSH1 0x5 DUP2 GT PUSH2 0x1852 JUMPI JUMPDEST POP PUSH2 0x2A4C JUMP JUMPDEST DUP1 PUSH2 0x17F7 JUMPI POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x0 JUMPDEST PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST PUSH2 0x184D PUSH2 0xBDA PUSH2 0x1823 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 PUSH2 0x2438 JUMP JUMPDEST PUSH1 0xE0 PUSH1 0x0 MSTORE PUSH32 0x8B43726243EEAF8325404568ABECE3264B546CF9D88671F09C24C87045FCCB4F ADD SWAP1 JUMP JUMPDEST PUSH2 0x17EB JUMP JUMPDEST DUP1 PUSH2 0xBF6 PUSH2 0x1862 SWAP3 SWAP6 SWAP4 SWAP6 PUSH2 0x2E95 JUMP JUMPDEST PUSH1 0xE0 PUSH1 0x0 MSTORE SWAP1 PUSH2 0x1896 PUSH2 0xC1E PUSH32 0x8B43726243EEAF8325404568ABECE3264B546CF9D88671F09C24C87045FCCB4F DUP5 ADD PUSH2 0xC14 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP6 AND LT ISZERO PUSH2 0x18AC JUMPI POP SWAP2 JUMPDEST CODESIZE PUSH2 0x17BF JUMP JUMPDEST SWAP3 SWAP2 POP PUSH2 0x18B8 SWAP1 PUSH2 0x23F0 JUMP JUMPDEST SWAP1 PUSH2 0x18A6 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x566F7465733A20626C6F636B206E6F7420796574206D696E6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH2 0x644 PUSH1 0x4 CALLDATALOAD PUSH2 0x1929 PUSH1 0x24 CALLDATALOAD PUSH2 0x1923 DUP2 PUSH2 0x5C5 JUMP JUMPDEST DUP3 PUSH2 0x51AF JUMP JUMPDEST CALLER PUSH2 0x4512 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x593 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP1 PUSH1 0x79 SLOAD PUSH2 0x1952 DUP2 PUSH2 0x396E JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0x54B JUMPI POP PUSH1 0x1 EQ PUSH2 0x197B JUMPI PUSH2 0x4EC DUP6 PUSH2 0x4E0 DUP2 DUP8 SUB DUP3 PUSH2 0xE4E JUMP JUMPDEST SWAP3 POP PUSH1 0x79 DUP4 MSTORE PUSH32 0x957BBDC7FAD0DEC56E7C96AF4A3AB63AA9DAF934A52FFCE891945B7FB622D791 JUMPDEST DUP3 DUP5 LT PUSH2 0x19BE JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x4E0 DUP3 PUSH2 0x4EC PUSH2 0x4D0 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x19A3 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x19FB DUP2 PUSH2 0x5C5 JUMP JUMPDEST AND PUSH1 0x0 MSTORE PUSH1 0xDF PUSH1 0x20 MSTORE PUSH1 0x20 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1A30 PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x266F JUMP JUMPDEST AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x100 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1A52 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x304 JUMPI PUSH2 0x1A73 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xEB4 JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH2 0x1A80 DUP2 PUSH2 0x10CA JUMP JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH2 0x1A8D DUP3 PUSH2 0x10CA JUMP JUMPDEST PUSH1 0xE4 CALLDATALOAD SWAP5 DUP5 DUP7 GT PUSH2 0x304 JUMPI CALLDATASIZE PUSH1 0x23 DUP8 ADD SLT ISZERO PUSH2 0x304 JUMPI DUP6 PUSH1 0x4 ADD CALLDATALOAD SWAP5 DUP6 GT PUSH2 0x304 JUMPI CALLDATASIZE PUSH1 0x24 DUP7 DUP9 ADD ADD GT PUSH2 0x304 JUMPI PUSH1 0x24 PUSH2 0x644 SWAP7 ADD SWAP4 PUSH1 0xA4 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD SWAP3 PUSH2 0x4BE0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH2 0x644 PUSH1 0x4 CALLDATALOAD PUSH2 0x1929 DUP2 PUSH1 0x3A SLOAD PUSH2 0x54CE JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1B0F DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x1B1B DUP2 PUSH2 0x10CA JUMP JUMPDEST PUSH2 0x1B24 DUP3 PUSH2 0x56F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP2 DUP3 CALLER EQ PUSH2 0x1BC6 JUMPI DUP2 PUSH2 0x1B64 PUSH2 0x1B94 SWAP3 CALLER PUSH1 0x0 MSTORE PUSH1 0x7D PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0xFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP4 SLOAD AND SWAP2 ISZERO ISZERO AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE CALLER SWAP1 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP1 PUSH1 0x20 SWAP1 LOG3 STOP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1C27 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1C34 DUP3 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH1 0x64 CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x304 JUMPI CALLDATASIZE PUSH1 0x23 DUP6 ADD SLT ISZERO PUSH2 0x304 JUMPI PUSH2 0x1C6C PUSH2 0xCF7 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x24 DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x101A JUMP JUMPDEST SWAP3 PUSH2 0xCDA CALLER PUSH2 0x56F0 JUMP JUMPDEST PUSH2 0x1C7F CALLDATASIZE PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH2 0x1C88 PUSH2 0x4B96 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x45 SLOAD SWAP3 PUSH1 0xFF DUP5 PUSH1 0x30 SHR AND SWAP4 PUSH2 0x1CA0 DUP6 PUSH2 0x311D JUMP JUMPDEST PUSH1 0x1 DUP1 SWAP6 SUB PUSH2 0x80E JUMPI PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 DUP2 PUSH2 0x1CBD DUP8 DUP6 PUSH2 0x23FE JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI PUSH2 0x1CE6 SWAP2 DUP2 DUP7 AND ADD AND PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF NOT PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x1CEF NUMBER PUSH2 0x2438 JUMP JUMPDEST BLOCKHASH PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1CFC JUMPI STOP JUMPDEST DUP1 PUSH2 0x1D08 DUP8 SWAP3 DUP5 PUSH2 0x4968 JUMP JUMPDEST DUP5 PUSH2 0x1D1F DUP3 PUSH2 0x1D1A PUSH2 0x1379 DUP7 DUP12 PUSH2 0x4A2D JUMP JUMPDEST PUSH2 0x4406 JUMP JUMPDEST PUSH2 0x1D2B JUMPI JUMPDEST POP ADD PUSH2 0x1CF3 JUMP JUMPDEST PUSH2 0x13FA PUSH2 0x1D42 SWAP2 PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST CODESIZE PUSH2 0x1D24 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1D65 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH1 0xFF DUP5 AND DUP5 SUB PUSH2 0x304 JUMPI DUP1 TIMESTAMP GT PUSH2 0x1E59 JUMPI PUSH2 0x1E27 PUSH2 0x1E54 SWAP2 PUSH2 0x644 SWAP6 PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1E0F DUP3 PUSH2 0x1DE3 PUSH1 0x20 DUP3 ADD SWAP6 DUP10 DUP12 DUP9 PUSH1 0x60 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x80 DUP4 ADD SWAP7 PUSH32 0xE48329057BFD03D55E49B547132E39CFFD9C1820AD7B9D4C5307691425D15ADF DUP5 MSTORE AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP5 MSTORE DUP4 PUSH2 0xE4E JUMP JUMPDEST PUSH2 0x1E22 PUSH1 0xA4 CALLDATALOAD SWAP4 PUSH1 0x84 CALLDATALOAD SWAP4 MLOAD SWAP1 KECCAK256 PUSH2 0x2DF4 JUMP JUMPDEST PUSH2 0x2B2F JUMP JUMPDEST SWAP2 PUSH2 0x1E4E DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0xE1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD SWAP2 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMP JUMPDEST EQ PUSH2 0x2022 JUMP JUMPDEST PUSH2 0x206D JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x566F7465733A207369676E617475726520657870697265640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1ED9 PUSH2 0x1ED4 DUP3 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH32 0x1284A4600000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 DUP2 PUSH1 0x24 DUP2 ADDRESS GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1FB3 JUMPI DUP3 SWAP2 PUSH2 0x1F2C JUMPI JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x4EC DUP5 DUP3 PUSH2 0x47F JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 DUP4 DUP4 RETURNDATACOPY PUSH2 0x1F3D DUP2 DUP4 PUSH2 0xE4E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x1FAB JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x1FAF JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1FAB JUMPI DUP1 MLOAD SWAP3 PUSH2 0x1F74 DUP5 PUSH2 0xFE0 JUMP JUMPDEST SWAP3 PUSH2 0x1F82 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xE4E JUMP JUMPDEST DUP5 DUP5 MSTORE PUSH1 0x20 DUP6 DUP5 ADD ADD GT PUSH2 0x593 JUMPI POP PUSH2 0x4EC SWAP3 PUSH2 0x1FA5 SWAP2 PUSH1 0x20 DUP1 DUP6 ADD SWAP2 ADD PUSH2 0x419 JUMP JUMPDEST CODESIZE PUSH2 0x1F1E JUMP JUMPDEST DUP3 DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH2 0x2CBF JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x3E8 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0x2009 PUSH1 0x4 CALLDATALOAD PUSH2 0x1FF7 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x2004 DUP3 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x3CFB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH2 0x644 PUSH2 0x887 PUSH2 0xDAA CALLDATASIZE PUSH2 0xD72 JUMP JUMPDEST ISZERO PUSH2 0x2029 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x566F7465733A20696E76616C6964206E6F6E6365000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x20F8 DUP2 DUP5 AND SWAP4 PUSH1 0x0 SWAP5 DUP1 DUP7 MSTORE PUSH1 0xDE PUSH1 0x20 MSTORE PUSH1 0x40 DUP7 KECCAK256 SWAP4 PUSH2 0x20CA DUP2 DUP7 SLOAD AND SWAP9 DUP10 SWAP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST DUP6 AND SWAP7 DUP8 SWAP2 PUSH32 0x3134E8A2E6D97E929A7E54011EA5485D7D196DD5F0BA4D4EF95803E8E3FC257F DUP9 DUP1 LOG4 PUSH2 0x3BAA JUMP JUMPDEST SWAP3 DUP5 DUP3 EQ ISZERO DUP1 PUSH2 0x2297 JUMPI JUMPDEST PUSH2 0x210F JUMPI JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x2184 JUMPI JUMPDEST POP POP DUP3 PUSH2 0x2124 JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x2108 JUMP JUMPDEST PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 SWAP2 PUSH2 0x2166 PUSH2 0x216B SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0xDF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x2559 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 LOG2 CODESIZE DUP1 DUP1 PUSH2 0x211D JUMP JUMPDEST DUP1 DUP3 PUSH1 0x40 SWAP3 MSTORE PUSH1 0xDF PUSH1 0x20 MSTORE KECCAK256 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH2 0x21B7 DUP4 PUSH2 0x266F JUMP JUMPDEST AND DUP6 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x2292 JUMPI PUSH2 0x21CB NUMBER PUSH2 0x2FE7 JUMP JUMPDEST SWAP1 DUP3 DUP2 GT PUSH2 0x2228 JUMPI PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 SWAP4 PUSH2 0x221E SWAP3 DUP5 PUSH2 0x2205 SWAP4 AND SWAP2 PUSH2 0x2949 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP6 AND DUP4 MSTORE SWAP4 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP2 DUP3 SWAP2 SWAP1 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG2 CODESIZE DUP1 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2032 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x3234206269747300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH2 0x23C1 JUMP JUMPDEST POP DUP4 ISZERO ISZERO PUSH2 0x2103 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND SWAP3 AND DUP3 DUP2 EQ ISZERO DUP1 PUSH2 0x23B9 JUMPI JUMPDEST PUSH2 0x22C1 JUMPI POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x232B JUMPI JUMPDEST POP DUP2 PUSH2 0x22D2 JUMPI JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2318 PUSH2 0x2313 PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0xDF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x24FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 LOG2 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0xDF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH2 0x2360 DUP4 PUSH2 0x266F JUMP JUMPDEST AND PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x2292 JUMPI PUSH2 0x2376 NUMBER PUSH2 0x2FE7 JUMP JUMPDEST SWAP1 DUP3 DUP2 GT PUSH2 0x2228 JUMPI PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 SWAP4 PUSH2 0x23B0 SWAP3 DUP5 PUSH2 0x2205 SWAP4 AND SWAP2 PUSH2 0x2949 JUMP JUMPDEST SUB SWAP1 LOG2 CODESIZE PUSH2 0x22C7 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x22B8 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 ADD SWAP2 DUP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x0 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST ISZERO PUSH2 0x245B JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x490 DUP2 ISZERO ISZERO PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x24E4 PUSH2 0x1ED4 DUP3 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x7C PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH2 0x2527 DUP3 PUSH2 0x266F JUMP JUMPDEST AND PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2292 JUMPI PUSH2 0x253C NUMBER PUSH2 0x2FE7 JUMP JUMPDEST SWAP2 DUP5 DUP3 GT PUSH2 0x2228 JUMPI DUP5 SWAP3 DUP4 PUSH2 0x2552 SWAP4 AND SWAP2 PUSH2 0x2949 JUMP JUMPDEST SWAP4 AND SWAP3 AND SWAP1 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP2 DUP4 PUSH2 0x2582 DUP4 PUSH2 0x266F JUMP JUMPDEST AND SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2292 JUMPI PUSH2 0x253C NUMBER PUSH2 0x2FE7 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 PUSH2 0x25BD PUSH2 0x2625 JUMP JUMPDEST AND PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2292 JUMPI PUSH2 0x25D2 NUMBER PUSH2 0x2FE7 JUMP JUMPDEST SWAP1 DUP4 DUP2 GT PUSH2 0x2228 JUMPI DUP4 SWAP2 DUP3 PUSH2 0x2552 SWAP3 AND SWAP1 PUSH2 0x280A JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 PUSH2 0x260F PUSH2 0x2625 JUMP JUMPDEST AND PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x2292 JUMPI PUSH2 0x25D2 NUMBER PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0xE0 SLOAD PUSH1 0x0 SWAP1 DUP1 PUSH2 0x2637 JUMPI POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x2292 JUMPI PUSH1 0xE0 PUSH32 0x8B43726243EEAF8325404568ABECE3264B546CF9D88671F09C24C87045FCCB4E SWAP3 MSTORE ADD SLOAD PUSH1 0x20 SHR SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP2 DUP2 PUSH2 0x2681 JUMPI POP POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT SWAP3 DUP3 DUP5 DUP2 ADD GT PUSH2 0x2292 JUMPI PUSH1 0x20 SWAP2 DUP2 MSTORE KECCAK256 ADD ADD SLOAD PUSH1 0x20 SHR SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xE0 SLOAD SWAP1 PUSH9 0x10000000000000000 DUP3 LT ISZERO PUSH2 0xD6D JUMPI PUSH1 0x1 DUP3 ADD DUP1 PUSH1 0xE0 SSTORE DUP3 LT ISZERO PUSH2 0x2738 JUMPI PUSH1 0xE0 PUSH1 0x0 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD SWAP1 SWAP2 SHL PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR PUSH32 0x8B43726243EEAF8325404568ABECE3264B546CF9D88671F09C24C87045FCCB4F SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH2 0x269D JUMP JUMPDEST SWAP1 DUP2 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0xD6D JUMPI PUSH1 0x1 DUP2 ADD DUP1 DUP5 SSTORE DUP2 LT ISZERO PUSH2 0x2738 JUMPI PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 SWAP1 KECCAK256 DUP3 MLOAD SWAP3 DUP5 ADD MLOAD SWAP1 SWAP4 SHL PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ADD SSTORE JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 SWAP4 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE DUP2 SHR SWAP2 ADD MSTORE JUMP JUMPDEST ISZERO PUSH2 0x27C6 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436865636B706F696E743A20696E76616C6964206B6579000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0xE0 SLOAD SWAP2 SWAP3 SWAP2 DUP1 ISZERO PUSH2 0x290A JUMPI PUSH2 0x28BB SWAP2 DUP2 DUP6 PUSH2 0x2832 PUSH2 0x282D PUSH2 0x1823 PUSH1 0x20 SWAP7 PUSH2 0x2438 JUMP JUMPDEST PUSH2 0x278C JUMP JUMPDEST SWAP3 PUSH2 0x2841 DUP5 MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2858 PUSH4 0xFFFFFFFF SWAP2 DUP3 DUP5 AND SWAP3 DUP4 SWAP2 AND GT ISZERO PUSH2 0x27BF JUMP JUMPDEST PUSH2 0x2869 PUSH2 0xC1E DUP7 MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST SUB PUSH2 0x28BF JUMPI POP PUSH2 0x287E PUSH2 0x1823 PUSH2 0x2898 SWAP4 PUSH2 0x2438 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH4 0xFFFFFFFF NOT DUP4 SLOAD SWAP3 PUSH1 0x20 SHL AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST SWAP2 SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2905 SWAP2 POP PUSH2 0x28DD PUSH2 0x28D1 PUSH2 0xE8F JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP2 DUP6 ADD MSTORE PUSH2 0x26CC JUMP JUMPDEST PUSH2 0x2898 JUMP JUMPDEST POP PUSH2 0x2943 SWAP1 PUSH2 0x291A PUSH2 0x28D1 PUSH2 0xE8F JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x26CC JUMP JUMPDEST PUSH1 0x0 SWAP2 SWAP1 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 DUP4 DUP3 SLOAD DUP1 ISZERO ISZERO PUSH1 0x0 EQ PUSH2 0x2A12 JUMPI SWAP3 PUSH1 0x20 SWAP3 SWAP2 DUP5 PUSH2 0x297F PUSH2 0x282D PUSH2 0x2972 PUSH2 0x28BB SWAP9 PUSH2 0x2438 JUMP JUMPDEST DUP6 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0x298E DUP6 MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x29A5 PUSH4 0xFFFFFFFF SWAP2 DUP3 DUP5 AND SWAP3 DUP4 SWAP2 AND GT ISZERO PUSH2 0x27BF JUMP JUMPDEST PUSH2 0x29B6 PUSH2 0xC1E DUP8 MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST SUB PUSH2 0x29CC JUMPI POP PUSH2 0x2898 SWAP3 PUSH2 0xBCD PUSH2 0x287E SWAP3 PUSH2 0x2438 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2905 SWAP2 PUSH2 0x29EA PUSH2 0x29DE PUSH2 0xE8F JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP3 DUP7 ADD MSTORE PUSH2 0x273D JUMP JUMPDEST POP POP PUSH2 0x2943 SWAP2 PUSH2 0x2A23 PUSH2 0x29DE PUSH2 0xE8F JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x273D JUMP JUMPDEST SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x2A5A JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 DUP1 DUP3 AND SWAP1 PUSH1 0x1 DUP2 DUP5 XOR DUP2 SHR DUP4 ADD DUP1 SWAP4 GT PUSH2 0x2292 JUMPI PUSH1 0xE0 PUSH1 0x0 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP5 PUSH32 0x8B43726243EEAF8325404568ABECE3264B546CF9D88671F09C24C87045FCCB4F ADD SLOAD AND SWAP1 DUP7 AND LT PUSH1 0x0 EQ PUSH2 0x2AB5 JUMPI POP POP SWAP2 JUMPDEST SWAP1 PUSH2 0x2A4E JUMP JUMPDEST SWAP1 SWAP4 SWAP3 POP DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2292 JUMPI SWAP1 PUSH2 0x2AAF JUMP JUMPDEST SWAP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x2AD8 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 DUP1 DUP4 AND SWAP1 PUSH1 0x1 DUP2 DUP6 XOR DUP2 SHR DUP4 ADD DUP1 SWAP4 GT PUSH2 0x2292 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP4 ADD SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP6 AND LT ISZERO PUSH2 0x2B17 JUMPI POP POP SWAP3 JUMPDEST SWAP2 SWAP1 PUSH2 0x2ACB JUMP JUMPDEST SWAP1 SWAP5 SWAP4 POP DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2292 JUMPI SWAP2 PUSH2 0x2B10 JUMP JUMPDEST PUSH1 0x3A SSTORE JUMP JUMPDEST SWAP2 PUSH2 0x490 SWAP4 SWAP2 PUSH2 0x2B3E SWAP4 PUSH2 0x2CCB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x2B84 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x5 GT ISZERO PUSH2 0x2B7F JUMPI JUMP JUMPDEST PUSH2 0x2B46 JUMP JUMPDEST PUSH2 0x2B8D DUP2 PUSH2 0x2B75 JUMP JUMPDEST DUP1 PUSH2 0x2B95 JUMPI POP JUMP JUMPDEST PUSH2 0x2B9E DUP2 PUSH2 0x2B75 JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2BEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0x2BF4 DUP2 PUSH2 0x2B75 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x2C41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2C4D PUSH1 0x3 SWAP3 PUSH2 0x2B75 JUMP JUMPDEST EQ PUSH2 0x2C54 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP3 SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT PUSH2 0x2D41 JUMPI SWAP2 PUSH1 0x80 SWAP5 SWAP4 SWAP2 PUSH1 0xFF PUSH1 0x20 SWAP5 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP5 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP2 DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x1FB3 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2D3B JUMPI SWAP2 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP POP PUSH1 0x0 SWAP1 PUSH1 0x3 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0xF63DD8159B098696EBB81A400CEA3C4FFBA1938921072285DF391C19C71DCE61 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x2DFC PUSH2 0x2D4D JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x2E90 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x2E57 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2FCF JUMPI DUP1 PUSH2 0x2F68 PUSH2 0x2F61 PUSH2 0x2F57 PUSH2 0x2F4D PUSH2 0x2F43 PUSH2 0x2F39 PUSH2 0x2F2F PUSH2 0x2F25 PUSH1 0x1 PUSH2 0x490 SWAP11 PUSH1 0x0 SWAP1 DUP12 PUSH1 0x80 SHR DUP1 PUSH2 0x2FC3 JUMPI JUMPDEST POP DUP1 PUSH1 0x40 SHR DUP1 PUSH2 0x2FB6 JUMPI JUMPDEST POP DUP1 PUSH1 0x20 SHR DUP1 PUSH2 0x2FA9 JUMPI JUMPDEST POP DUP1 PUSH1 0x10 SHR DUP1 PUSH2 0x2F9C JUMPI JUMPDEST POP DUP1 PUSH1 0x8 SHR DUP1 PUSH2 0x2F8F JUMPI JUMPDEST POP DUP1 PUSH1 0x4 SHR DUP1 PUSH2 0x2F82 JUMPI JUMPDEST POP DUP1 PUSH1 0x2 SHR DUP1 PUSH2 0x2F75 JUMPI JUMPDEST POP DUP3 SHR PUSH2 0x2F6E JUMPI JUMPDEST DUP2 SHR SHL PUSH2 0x2F1E DUP2 DUP12 PUSH2 0x2E86 JUMP JUMPDEST ADD PUSH1 0x1 SHR SWAP1 JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP11 PUSH2 0x2E86 JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP10 PUSH2 0x2E86 JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP9 PUSH2 0x2E86 JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP8 PUSH2 0x2E86 JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP7 PUSH2 0x2E86 JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP6 PUSH2 0x2E86 JUMP JUMPDEST DUP1 SWAP3 PUSH2 0x2E86 JUMP JUMPDEST SWAP1 PUSH2 0x2FD5 JUMP JUMPDEST DUP2 ADD PUSH2 0x2F11 JUMP JUMPDEST PUSH1 0x2 SWAP2 POP SWAP2 ADD SWAP1 CODESIZE PUSH2 0x2F09 JUMP JUMPDEST PUSH1 0x4 SWAP2 POP SWAP2 ADD SWAP1 CODESIZE PUSH2 0x2EFE JUMP JUMPDEST PUSH1 0x8 SWAP2 POP SWAP2 ADD SWAP1 CODESIZE PUSH2 0x2EF3 JUMP JUMPDEST PUSH1 0x10 SWAP2 POP SWAP2 ADD SWAP1 CODESIZE PUSH2 0x2EE8 JUMP JUMPDEST PUSH1 0x20 SWAP2 POP SWAP2 ADD SWAP1 CODESIZE PUSH2 0x2EDD JUMP JUMPDEST PUSH1 0x40 SWAP2 POP SWAP2 ADD SWAP1 CODESIZE PUSH2 0x2ED2 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x80 SWAP1 CODESIZE PUSH2 0x2EC7 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST SWAP1 DUP1 DUP3 LT ISZERO PUSH2 0x2FE2 JUMPI POP SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP2 GT PUSH2 0x2FF8 JUMPI AND SWAP1 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2033 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x3220626974730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x304 JUMPI MLOAD PUSH2 0x490 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x40 MLOAD PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS STATICCALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x30ED JUMPI JUMPDEST POP PUSH2 0x30E9 JUMPI POP JUMP JUMPDEST SWAP2 POP JUMP JUMPDEST PUSH2 0x310F SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3116 JUMPI JUMPDEST PUSH2 0x3107 DUP2 DUP4 PUSH2 0xE4E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3062 JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x30E1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30FD JUMP JUMPDEST PUSH1 0x4 GT ISZERO PUSH2 0x2B7F JUMPI JUMP JUMPDEST SWAP10 SWAP8 SWAP6 SWAP4 SWAP2 SWAP11 SWAP9 SWAP7 SWAP5 SWAP3 SWAP1 SWAP11 PUSH1 0x0 SLOAD SWAP12 PUSH1 0xFF DUP14 PUSH1 0x8 SHR AND ISZERO DUP1 SWAP14 DUP2 SWAP15 PUSH2 0x32B5 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x3295 JUMPI JUMPDEST POP ISZERO PUSH2 0x322B JUMPI PUSH2 0x3193 SWAP12 DUP14 PUSH2 0x318A PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x0 SLOAD AND OR PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x31F5 JUMPI PUSH2 0x3483 JUMP JUMPDEST PUSH2 0x3199 JUMPI JUMP JUMPDEST PUSH2 0x31C6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF PUSH1 0x0 SLOAD AND PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x3226 PUSH2 0x100 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF PUSH1 0x0 SLOAD AND OR PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x3483 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP2 POP DUP2 PUSH2 0x32A7 JUMPI JUMPDEST POP CODESIZE PUSH2 0x314F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH1 0xFF AND EQ CODESIZE PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF DUP3 AND LT SWAP2 POP PUSH2 0x3148 JUMP JUMPDEST PUSH2 0x32CC DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF PUSH7 0xFF000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x30 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x2738 JUMPI PUSH1 0x6 SHL ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH2 0x490 DUP2 PUSH2 0x10B0 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP1 PUSH2 0x3378 DUP2 CALLDATALOAD PUSH2 0x3344 DUP2 PUSH2 0x5C5 JUMP JUMPDEST DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST ADD CALLDATALOAD PUSH2 0x3383 DUP2 PUSH2 0x10B0 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH22 0xFFFF0000000000000000000000000000000000000000 DUP4 SLOAD SWAP3 PUSH1 0xA0 SHL AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH9 0x10000000000000000 DUP3 GT PUSH2 0xD6D JUMPI PUSH1 0x38 SLOAD DUP3 PUSH1 0x38 SSTORE DUP1 DUP4 LT PUSH2 0x343C JUMPI JUMPDEST POP PUSH1 0x38 PUSH1 0x0 MSTORE PUSH32 0x38395C5DCEADE9603479B177B68959049485DF8AA97B39F3533039AF5F456199 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x3420 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 DUP3 PUSH2 0x3430 DUP4 SWAP5 DUP7 PUSH2 0x3332 JUMP JUMPDEST ADD SWAP3 ADD SWAP3 ADD SWAP2 SWAP1 PUSH2 0x3413 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x38 DUP2 MSTORE DUP4 PUSH32 0x38395C5DCEADE9603479B177B68959049485DF8AA97B39F3533039AF5F456199 SWAP3 DUP4 ADD SWAP3 ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x3478 JUMPI POP POP PUSH2 0x33E8 JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x346A JUMP JUMPDEST SWAP1 PUSH2 0x3497 SWAP2 SWAP13 SWAP12 SWAP8 SWAP9 SWAP3 SWAP7 SWAP13 SWAP10 SWAP6 SWAP10 PUSH2 0x383C JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND ISZERO PUSH2 0x37A1 JUMPI DUP2 ISZERO SWAP1 DUP2 ISZERO DUP1 PUSH2 0x3798 JUMPI JUMPDEST PUSH2 0x376E JUMPI PUSH2 0x1388 PUSH2 0xFFFF DUP7 AND GT PUSH2 0x3744 JUMPI PUSH2 0x3504 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF PUSH15 0xFFFFFFFF0000000000000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x58 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST ISZERO PUSH2 0x3733 JUMPI POP DUP1 PUSH2 0x3723 JUMPI POP PUSH2 0x3519 DUP4 PUSH2 0x311D JUMP JUMPDEST PUSH1 0x3 DUP4 SUB PUSH2 0x36F9 JUMPI PUSH2 0x352D PUSH2 0x3568 SWAP3 PUSH1 0x3A SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF PUSH9 0xFFFF00000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x38 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x3571 DUP2 PUSH2 0x311D JUMP JUMPDEST DUP1 PUSH2 0x36EA JUMPI JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x366D JUMPI JUMPDEST POP PUSH1 0x1 DUP1 SWAP3 ISZERO ISZERO EQ PUSH2 0x3628 JUMPI JUMPDEST DUP4 PUSH2 0x35A0 JUMPI JUMPDEST POP POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 SWAP1 JUMPDEST DUP6 DUP3 LT PUSH2 0x35F4 JUMPI POP POP PUSH2 0x251C SWAP3 SWAP4 PUSH2 0x35BD SWAP2 PUSH2 0x33C9 JUMP JUMPDEST GT PUSH2 0x35CA JUMPI DUP1 CODESIZE DUP1 PUSH2 0x359A JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xFE0C06B700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x3620 DUP3 SWAP5 PUSH2 0x361A PUSH2 0x3613 PUSH1 0x20 PUSH2 0x360D DUP7 SWAP8 DUP13 DUP11 PUSH2 0x3305 JUMP JUMPDEST ADD PUSH2 0x3315 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x23FE JUMP JUMPDEST SWAP4 ADD SWAP1 PUSH2 0x35A6 JUMP JUMPDEST PUSH2 0x3668 PUSH17 0x100000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x3594 JUMP JUMPDEST PUSH2 0x36E4 SWAP1 PUSH2 0x36B0 PUSH16 0x1000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0x40 SLOAD AND OR PUSH1 0x40 SSTORE JUMP JUMPDEST CODESIZE PUSH2 0x3587 JUMP JUMPDEST PUSH2 0x36F3 SWAP1 PUSH2 0x32C3 JUMP JUMPDEST CODESIZE PUSH2 0x3577 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x27BFEAFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x3568 SWAP3 PUSH2 0x2B2A PUSH2 0x352D SWAP3 PUSH1 0x34 SSTORE JUMP JUMPDEST PUSH1 0x33 SSTORE POP PUSH2 0x3568 SWAP2 PUSH2 0x352D SWAP1 PUSH1 0x3A SSTORE JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x44B93BA400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x4CFF63B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP4 ISZERO ISZERO PUSH2 0x34AE JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB8A9EFFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST ISZERO PUSH2 0x37D2 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH2 0x3857 PUSH1 0xFF PUSH1 0x0 SLOAD PUSH1 0x8 SHR AND PUSH2 0x3852 DUP2 PUSH2 0x37CB JUMP JUMPDEST PUSH2 0x37CB JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD6D JUMPI PUSH2 0x387C DUP2 PUSH2 0x3877 PUSH1 0x78 SLOAD PUSH2 0x396E JUMP JUMPDEST PUSH2 0x39C1 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x38BD JUMPI POP DUP2 SWAP1 PUSH2 0x5E3 SWAP5 PUSH1 0x0 SWAP3 PUSH2 0x38B2 JUMPI JUMPDEST POP POP PUSH1 0x0 NOT DUP3 PUSH1 0x1 SHL SWAP3 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x78 SSTORE PUSH2 0x3AA3 JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0x3899 JUMP JUMPDEST SWAP2 SWAP3 SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP5 AND PUSH2 0x390F PUSH1 0x78 PUSH1 0x0 MSTORE PUSH32 0x8DC6FB69531D98D70DC0420E638D2DFD04E09E1EC783EDE9AAC77DA9C5A0DAC4 SWAP1 JUMP JUMPDEST SWAP4 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x3956 JUMPI POP POP SWAP2 PUSH1 0x1 SWAP4 SWAP2 DUP6 PUSH2 0x5E3 SWAP8 SWAP7 SWAP5 LT PUSH2 0x393D JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x78 SSTORE PUSH2 0x3AA3 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x392F JUMP JUMPDEST DUP1 PUSH1 0x1 DUP7 SWAP8 DUP3 SWAP5 SWAP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP7 ADD SWAP5 ADD SWAP1 PUSH2 0x3914 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x39B7 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x3988 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x397D JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x39CD JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x78 DUP3 MSTORE PUSH32 0x8DC6FB69531D98D70DC0420E638D2DFD04E09E1EC783EDE9AAC77DA9C5A0DAC4 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP4 ADD SWAP5 LT PUSH2 0x3A28 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x3A1D JUMPI POP POP POP JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3A11 JUMP JUMPDEST SWAP1 SWAP3 POP DUP3 SWAP1 PUSH2 0x3A08 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x3A3E JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x79 DUP3 MSTORE PUSH32 0x957BBDC7FAD0DEC56E7C96AF4A3AB63AA9DAF934A52FFCE891945B7FB622D791 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP4 ADD SWAP5 LT PUSH2 0x3A99 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x3A8E JUMPI POP POP POP JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3A82 JUMP JUMPDEST SWAP1 SWAP3 POP DUP3 SWAP1 PUSH2 0x3A79 JUMP JUMPDEST SWAP1 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD6D JUMPI PUSH2 0x3AC9 DUP2 PUSH2 0x3AC4 PUSH1 0x79 SLOAD PUSH2 0x396E JUMP JUMPDEST PUSH2 0x3A32 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x3B04 JUMPI POP DUP2 SWAP3 SWAP4 PUSH1 0x0 SWAP3 PUSH2 0x3AF9 JUMPI JUMPDEST POP POP PUSH1 0x0 NOT DUP3 PUSH1 0x1 SHL SWAP3 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x79 SSTORE JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0x3AE3 JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 AND SWAP5 PUSH2 0x3B55 PUSH1 0x79 PUSH1 0x0 MSTORE PUSH32 0x957BBDC7FAD0DEC56E7C96AF4A3AB63AA9DAF934A52FFCE891945B7FB622D791 SWAP1 JUMP JUMPDEST SWAP3 PUSH1 0x0 SWAP1 JUMPDEST DUP8 DUP3 LT PUSH2 0x3B92 JUMPI POP POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x3B79 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x79 SSTORE JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x3B6E JUMP JUMPDEST DUP1 PUSH1 0x1 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0x3B5A JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP1 ISZERO PUSH2 0x3C0F JUMPI PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP2 PUSH1 0x1 PUSH1 0xFF PUSH1 0x45 SLOAD PUSH1 0x30 SHR AND PUSH2 0x3BDE DUP2 PUSH2 0x311D JUMP JUMPDEST EQ PUSH2 0x3BE6 JUMPI POP JUMP JUMPDEST SWAP2 PUSH2 0x3C08 PUSH2 0x490 SWAP3 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x23FE JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST DUP2 PUSH1 0x0 MSTORE PUSH1 0x7C PUSH1 0x20 MSTORE PUSH2 0x3CBE DUP2 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x3CD0 DUP5 PUSH2 0x249F JUMP JUMPDEST AND SWAP2 AND SWAP1 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x0 DUP1 LOG4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 AND PUSH20 0x88899DC0B84C6E726840E00DFB94ABC6248825EC DUP2 EQ PUSH2 0x3D76 JUMPI PUSH20 0x1E0049783F008A0085193E00003D00CD54003C71 EQ PUSH2 0x3D6E JUMPI PUSH1 0xFF SWAP3 PUSH2 0x3D69 SWAP3 AND PUSH1 0x0 MSTORE PUSH1 0x7D PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND SWAP1 JUMP JUMPDEST POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3D86 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206F7220617070726F76656400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH2 0x3DF9 DUP3 PUSH2 0x249F JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP4 AND SWAP3 DUP3 DUP6 AND DUP5 EQ SWAP5 DUP6 ISZERO PUSH2 0x3E39 JUMPI JUMPDEST POP POP DUP4 ISZERO PUSH2 0x3E23 JUMPI JUMPDEST POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x3E2F SWAP2 SWAP3 SWAP4 POP PUSH2 0x24C1 JUMP JUMPDEST AND EQ CODESIZE DUP1 DUP1 PUSH2 0x3E1D JUMP JUMPDEST PUSH2 0x3E44 SWAP3 SWAP6 POP PUSH2 0x3CFB JUMP JUMPDEST SWAP3 CODESIZE DUP1 PUSH2 0x3E14 JUMP JUMPDEST ISZERO PUSH2 0x3E53 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH2 0x3EE1 SWAP3 PUSH2 0x3ECA DUP2 PUSH2 0x249F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP6 SWAP1 SWAP2 DUP3 AND DUP7 EQ PUSH2 0x3E4C JUMP JUMPDEST DUP4 AND DUP1 ISZERO PUSH2 0x4016 JUMPI PUSH2 0x5E3 SWAP5 PUSH2 0x3EF7 DUP4 DUP6 PUSH2 0x407F JUMP JUMPDEST PUSH2 0x3F19 DUP2 PUSH2 0x3F13 PUSH2 0x3F07 DUP7 PUSH2 0x249F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST EQ PUSH2 0x3E4C JUMP JUMPDEST PUSH2 0x3F58 PUSH2 0x3F30 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP2 SLOAD AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3F75 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x3F9A DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x3FEC DUP6 PUSH2 0x3FB9 DUP6 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x0 DUP1 LOG4 PUSH2 0x40F1 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 DUP2 PUSH2 0x40C2 JUMPI JUMPDEST POP PUSH2 0x4098 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x765C862B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND DUP1 ISZERO PUSH2 0x40E2 JUMPI JUMPDEST CODESIZE PUSH2 0x4091 JUMP JUMPDEST POP PUSH1 0xFF PUSH1 0x45 SLOAD PUSH1 0x80 SHR AND PUSH2 0x40DC JUMP JUMPDEST PUSH2 0x4134 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 ISZERO PUSH2 0x4191 JUMPI JUMPDEST DUP1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x4182 JUMPI JUMPDEST PUSH1 0x0 MSTORE PUSH1 0xDE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0xFFFF PUSH1 0x45 SLOAD PUSH1 0x48 SHR AND SWAP1 DUP2 PUSH2 0x4148 JUMPI POP POP JUMP JUMPDEST PUSH2 0x4151 SWAP1 PUSH2 0x3BAA JUMP JUMPDEST GT PUSH2 0x4158 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x550FFA9C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x418A PUSH2 0x25E8 JUMP JUMPDEST POP POP PUSH2 0x4113 JUMP JUMPDEST PUSH2 0x4199 PUSH2 0x2596 JUMP JUMPDEST POP POP PUSH2 0x4108 JUMP JUMPDEST PUSH2 0x41A8 PUSH2 0x2596 JUMP JUMPDEST POP POP PUSH2 0x4134 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0x41FB JUMPI JUMPDEST PUSH1 0xDE PUSH1 0x20 MSTORE PUSH32 0x7FEAC6EF4894DB443B6046F934D8DFFE8AF4812F9F4B307224F533CF30C9FB62 SLOAD PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD DUP2 AND SWAP2 AND PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0x4203 PUSH2 0x25E8 JUMP JUMPDEST POP POP PUSH2 0x41C0 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x304 JUMPI MLOAD PUSH2 0x490 DUP2 PUSH2 0x2DA JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x490 SWAP5 SWAP4 PUSH1 0x80 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP5 MSTORE AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x43C JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x4279 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x425F DUP3 PUSH2 0xFE0 JUMP JUMPDEST SWAP2 PUSH2 0x426D PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0xE4E JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 SWAP1 DUP3 EXTCODESIZE ISZERO PUSH2 0x3D76 JUMPI PUSH2 0x42D2 SWAP3 PUSH1 0x20 SWAP3 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD DUP1 SWAP8 DUP2 SWAP7 DUP3 SWAP6 PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 SWAP12 DUP13 DUP6 MSTORE CALLER PUSH1 0x4 DUP7 ADD PUSH2 0x421F JUMP JUMPDEST SUB SWAP4 AND GAS CALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x438B JUMPI JUMPDEST POP PUSH2 0x4365 JUMPI PUSH2 0x42ED PUSH2 0x424E JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 PUSH2 0x4360 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ SWAP1 JUMP JUMPDEST PUSH2 0x43AD SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x43B4 JUMPI JUMPDEST PUSH2 0x43A5 DUP2 DUP4 PUSH2 0xE4E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x420A JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x42E0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x439B JUMP JUMPDEST ISZERO PUSH2 0x43C2 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 DUP3 ISZERO PUSH2 0x44CE JUMPI PUSH2 0x5E3 SWAP3 PUSH2 0x4444 PUSH2 0x443E DUP4 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x43BB JUMP JUMPDEST PUSH2 0x4467 PUSH2 0x443E DUP4 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x4484 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x44A3 DUP4 PUSH2 0x3FB9 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP2 DUP1 LOG4 PUSH2 0x41A0 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH2 0x451B PUSH2 0x533E JUMP JUMPDEST PUSH1 0x45 DUP1 SLOAD SWAP3 PUSH1 0xFF DUP5 PUSH1 0x30 SHR AND PUSH2 0x4530 DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH2 0x80E JUMPI PUSH4 0xFFFFFFFF SWAP4 DUP5 DUP2 AND SWAP1 DUP5 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2292 JUMPI PUSH1 0x58 SHR DUP6 AND LT PUSH2 0x7E4 JUMPI PUSH1 0x0 SWAP2 DUP3 JUMPDEST DUP5 DUP2 LT PUSH2 0x4566 JUMPI POP POP POP POP POP POP JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF NOT PUSH1 0x1 SWAP3 DUP9 DUP5 DUP2 DUP4 AND ADD AND SWAP2 DUP3 SWAP2 AND OR DUP5 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 ISZERO PUSH2 0x4654 JUMPI PUSH2 0x45BF PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x43BB JUMP JUMPDEST PUSH2 0x45E5 PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x4602 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP5 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x4620 DUP7 PUSH2 0x3FB9 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP7 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP2 DUP1 LOG4 PUSH2 0x464E DUP5 PUSH2 0x41A0 JUMP JUMPDEST ADD PUSH2 0x4557 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 DUP1 PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH2 0x46A0 PUSH2 0x533E JUMP JUMPDEST PUSH1 0x45 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xFF DUP4 PUSH1 0x30 SHR AND PUSH2 0x46B6 DUP2 PUSH2 0x311D JUMP JUMPDEST SUB PUSH2 0x80E JUMPI PUSH4 0xFFFFFFFF SWAP2 DUP3 PUSH2 0x46CE DUP4 DUP3 DUP5 AND PUSH2 0x23FE JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI PUSH2 0x4758 SWAP2 PUSH2 0x4742 SWAP2 PUSH1 0x2 NUMBER ADD PUSH1 0x1 PUSH2 0x4703 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SSTORE PUSH2 0x4722 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP2 DUP2 SLOAD ADD SWAP1 SSTORE AND PUSH2 0x4738 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST ADD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF NOT PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x48 SHR PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0x4148 JUMPI POP POP JUMP JUMPDEST SWAP2 SWAP1 DUP1 JUMPDEST PUSH2 0x4779 JUMPI POP POP POP JUMP JUMPDEST PUSH2 0x4783 DUP2 DUP4 PUSH2 0x4968 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x4654 JUMPI PUSH1 0x0 NOT SWAP3 PUSH2 0x47BF PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x47E5 PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x4802 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x4821 DUP7 PUSH2 0x3FB9 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP2 DUP1 LOG4 PUSH2 0x4850 DUP5 PUSH2 0x41A0 JUMP JUMPDEST ADD DUP1 PUSH2 0x4770 JUMP JUMPDEST SWAP3 SWAP1 DUP1 JUMPDEST PUSH2 0x4865 JUMPI POP POP POP POP JUMP JUMPDEST PUSH2 0x486F DUP2 DUP5 PUSH2 0x4968 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 DUP3 ISZERO PUSH2 0x4654 JUMPI DUP1 PUSH1 0x0 NOT SWAP4 PUSH2 0x48AC PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x48D2 PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x48EF DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x490E DUP9 PUSH2 0x3FB9 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP2 DUP1 LOG4 DUP4 PUSH2 0x493E DUP8 PUSH2 0x41A0 JUMP JUMPDEST PUSH2 0x494B JUMPI JUMPDEST POP ADD DUP1 PUSH2 0x485B JUMP JUMPDEST PUSH2 0x13FA PUSH2 0x4962 SWAP2 PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST CODESIZE PUSH2 0x4943 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 DUP4 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x4986 DUP2 PUSH2 0xE16 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x45 SLOAD PUSH1 0x58 SHR AND SWAP1 DUP2 ISZERO SWAP1 DUP2 PUSH2 0x2E90 JUMPI DUP3 PUSH2 0x49A9 SWAP2 MOD PUSH2 0x23F0 JUMP JUMPDEST PUSH2 0x49C9 DUP2 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x49DE JUMPI DUP2 PUSH2 0x2E90 JUMPI DUP3 PUSH1 0x1 SWAP2 MOD ADD PUSH2 0x49A9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 PUSH2 0x49ED PUSH2 0x533E JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x2 PUSH1 0xFF DUP3 PUSH1 0x30 SHR AND PUSH2 0x4A02 DUP2 PUSH2 0x311D JUMP JUMPDEST SUB PUSH2 0x80E JUMPI PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 DUP4 MLOAD DUP4 ADD DUP1 SWAP4 GT PUSH2 0x2292 JUMPI PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI PUSH2 0x5E3 SWAP2 PUSH2 0x4A41 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x2738 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x45 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT DUP2 AND PUSH4 0xFFFFFFFF SWAP2 DUP3 AND DUP3 DUP6 AND ADD DUP3 AND OR DUP3 SSTORE SWAP4 SWAP2 SWAP3 SWAP2 PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x4A76 JUMPI POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4A80 DUP2 DUP4 PUSH2 0x4A2D JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO DUP1 ISZERO PUSH2 0x4ACB JUMPI JUMPDEST PUSH2 0x4AA1 JUMPI PUSH2 0x4A9B PUSH1 0x1 SWAP3 DUP7 PUSH2 0x4406 JUMP JUMPDEST ADD PUSH2 0x4A67 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x3F6CC76800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP7 DUP5 SLOAD PUSH1 0x58 SHR AND DUP3 GT PUSH2 0x4A8B JUMP JUMPDEST ISZERO PUSH2 0x4AE1 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x40 MLOAD PUSH32 0x713562FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS STATICCALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x30ED JUMPI POP PUSH2 0x30E9 JUMPI POP JUMP JUMPDEST PUSH2 0x5E3 PUSH2 0x130D PUSH2 0x3077 JUMP JUMPDEST SWAP1 DUP1 SWAP3 SWAP2 DUP3 CALLDATACOPY ADD PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 CALLDATACOPY DUP2 ADD PUSH1 0x42 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP1 SWAP5 AND SWAP2 AND ADD SWAP2 DUP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP6 SWAP7 SWAP9 SWAP8 SWAP2 SWAP9 DUP5 ISZERO PUSH2 0x4F60 JUMPI PUSH2 0x4BF9 DUP4 DUP3 PUSH2 0x4BAF JUMP JUMPDEST PUSH2 0x4C04 DUP7 DUP3 SLOAD PUSH2 0x23FE JUMP JUMPDEST SWAP1 SSTORE DUP2 PUSH2 0x4C11 DUP5 DUP4 PUSH2 0x4BAF JUMP JUMPDEST SLOAD GT PUSH2 0x4F36 JUMPI PUSH1 0x45 SLOAD SWAP4 PUSH4 0xFFFFFFFF SWAP5 PUSH2 0x4C2D DUP8 DUP8 DUP4 AND PUSH2 0x23FE JUMP JUMPDEST DUP7 DUP3 PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI PUSH1 0x20 SHR PUSH1 0xFF AND PUSH2 0x4C47 DUP2 PUSH2 0x2B75 JUMP JUMPDEST ISZERO PUSH2 0x4F0C JUMPI PUSH1 0x40 SWAP11 DUP12 MLOAD SWAP4 DUP5 DUP10 DUP13 PUSH1 0x20 DUP4 ADD SWAP4 DUP7 DUP7 CHAINID SWAP5 ADDRESS SWAP6 PUSH2 0x4CED SWAP7 DUP10 SWAP6 SWAP4 SWAP2 SWAP3 PUSH1 0x8E SWAP8 SWAP6 SWAP4 PUSH32 0x9D13A5BA00000000000000000000000000000000000000000000000000000000 DUP9 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 SWAP4 PUSH1 0x60 SHL AND PUSH1 0x4 DUP10 ADD MSTORE PUSH1 0x18 DUP9 ADD MSTORE PUSH1 0x60 SHL AND PUSH1 0x38 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0xF8 SHL PUSH1 0x4C DUP6 ADD MSTORE PUSH1 0x4D DUP5 ADD MSTORE PUSH1 0x6D DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0xF8 SHL PUSH1 0x8D DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SUB SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP6 DUP7 DUP2 ADD DUP3 MSTORE PUSH2 0x4D20 SWAP1 DUP3 PUSH2 0xE4E JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x4D2C SWAP1 PUSH2 0x4FC7 JUMP JUMPDEST PUSH2 0x4D37 CALLDATASIZE DUP8 DUP7 PUSH2 0x101A JUMP JUMPDEST PUSH2 0x4D40 SWAP2 PUSH2 0x4F8A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC0FFEE06CE3D6689305035601A055A96ACD619C6 DUP2 EQ ISZERO SWAP1 DUP2 PUSH2 0x4EF7 JUMPI JUMPDEST POP PUSH2 0x4ECE JUMPI ISZERO PUSH2 0x4EAE JUMPI POP CALLVALUE PUSH2 0x4E85 JUMPI JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x30 SHR PUSH1 0xFF AND PUSH2 0x4D8B DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x4DD3 JUMPI POP POP POP POP POP DUP3 MLOAD SUB PUSH2 0x4DAA JUMPI PUSH2 0x5E3 SWAP4 SWAP5 POP PUSH2 0x512C JUMP JUMPDEST PUSH1 0x4 DUP6 MLOAD PUSH32 0x991F339F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP7 POP PUSH2 0x4DE5 DUP2 SWAP7 SWAP6 SWAP7 PUSH2 0x311D JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x4E3D JUMPI POP SWAP2 PUSH2 0x4E12 PUSH2 0x4E1E PUSH2 0x4742 SWAP4 PUSH2 0x4E38 SWAP6 PUSH2 0x5E3 SWAP12 SWAP13 MLOAD SWAP4 DUP5 SWAP2 PUSH1 0x20 DUP4 ADD SWAP7 DUP8 SWAP2 PUSH2 0x4BA1 JUMP JUMPDEST SUB SWAP1 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0xE4E JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP5 DUP5 AND PUSH2 0x4E33 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4BC8 JUMP JUMPDEST PUSH2 0x4857 JUMP JUMPDEST SWAP4 SWAP5 SWAP6 POP POP POP POP PUSH2 0x4E4D DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH2 0x4E5C JUMPI PUSH2 0x5E3 SWAP4 SWAP5 POP PUSH2 0x500A JUMP JUMPDEST PUSH1 0x4 DUP6 MLOAD PUSH32 0x3F88681900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP11 MLOAD PUSH32 0x122D34A800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP6 DUP2 ISZERO PUSH2 0x4EC4 JUMPI JUMPDEST PUSH2 0x4EBF SWAP2 PUSH2 0x54CE JUMP JUMPDEST PUSH2 0x4D79 JUMP JUMPDEST PUSH1 0x3A SLOAD SWAP2 POP PUSH2 0x4EB6 JUMP JUMPDEST PUSH1 0x4 DUP13 MLOAD PUSH32 0x73A8EE1800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH2 0x4F04 PUSH2 0x3F07 PUSH2 0x3077 JUMP JUMPDEST EQ ISZERO CODESIZE PUSH2 0x4D68 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x7963E2B500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x9A89C66A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x2C5211C600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP2 MLOAD PUSH2 0x490 SWAP3 PUSH2 0x2B3E SWAP3 SWAP2 PUSH1 0x41 SUB PUSH2 0x4FBD JUMPI PUSH2 0x4FB9 SWAP2 PUSH1 0x20 DUP3 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP5 ADD MLOAD SWAP4 ADD MLOAD PUSH1 0x0 BYTE SWAP1 PUSH2 0x2CCB JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP1 PUSH1 0x2 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP4 MSTORE PUSH1 0x3C DUP3 ADD MSTORE PUSH1 0x3C DUP2 MSTORE PUSH2 0x5004 DUP2 PUSH2 0xE16 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x0 SWAP1 DUP2 JUMPDEST DUP4 DUP2 LT PUSH2 0x501E JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x45 SWAP1 DUP2 SLOAD SWAP2 PUSH4 0xFFFFFFFF NOT PUSH4 0xFFFFFFFF SWAP4 PUSH1 0x1 SWAP5 DUP6 DUP2 DUP4 AND ADD AND SWAP2 DUP3 SWAP2 AND OR DUP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP1 ISZERO PUSH2 0x4654 JUMPI PUSH2 0x5076 PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x509C PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x50B9 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP6 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x50D7 DUP10 PUSH2 0x3FB9 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP7 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP2 DUP1 LOG4 DUP4 PUSH2 0x5106 DUP9 PUSH2 0x41A0 JUMP JUMPDEST PUSH2 0x5112 JUMPI JUMPDEST POP ADD PUSH2 0x5010 JUMP JUMPDEST PUSH2 0x13FA PUSH2 0x13E4 PUSH2 0x5126 SWAP3 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST CODESIZE PUSH2 0x510B JUMP JUMPDEST DUP2 PUSH2 0x5136 SWAP2 PUSH2 0x4A41 JUMP JUMPDEST DUP1 MLOAD SWAP2 PUSH2 0x5141 JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 JUMPDEST DUP4 DUP2 LT PUSH2 0x5153 JUMPI POP POP POP POP JUMP JUMPDEST PUSH2 0x515D DUP2 DUP4 PUSH2 0x4A2D JUMP JUMPDEST MLOAD DUP4 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SWAP1 PUSH1 0x1 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE ADD PUSH2 0x5146 JUMP JUMPDEST SWAP1 PUSH2 0xFFFF DUP1 SWAP3 AND PUSH2 0x2710 SUB SWAP2 DUP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0xFF PUSH2 0x51CF DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND ISZERO PUSH2 0x52FC JUMPI PUSH2 0x5201 PUSH2 0x51F6 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x18 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x5236 PUSH2 0x5230 PUSH2 0x5225 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x8 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0x519B JUMP JUMPDEST SWAP3 PUSH2 0x5253 PUSH2 0x524B PUSH1 0x3A SLOAD PUSH2 0xFFFF DUP1 SWAP8 AND PUSH2 0x331F JUMP JUMPDEST PUSH2 0x2710 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH2 0x525D DUP4 DUP3 PUSH2 0x54CE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP5 DUP6 PUSH2 0x5276 JUMPI JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x52CA SWAP4 PUSH2 0x528F PUSH2 0x5294 SWAP4 PUSH2 0x524B SWAP4 PUSH2 0x52C2 SWAP7 AND PUSH2 0x331F JUMP JUMPDEST PUSH2 0x331F JUMP JUMPDEST SWAP3 PUSH2 0x52A9 PUSH2 0x52A4 DUP6 PUSH1 0x37 SLOAD PUSH2 0x23FE JUMP JUMPDEST PUSH1 0x37 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP3 SLOAD PUSH2 0x23FE JUMP JUMPDEST SWAP1 SSTORE PUSH32 0xF2F90295CDB5DAFD392BFC62D7868BCC79E8C6164C820C7CC195D6C8CDA8E674 PUSH1 0x0 DUP1 LOG2 CODESIZE DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x526E JUMP JUMPDEST PUSH1 0x0 DUP1 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH32 0x619FCD35F40C77DA8AA64D5F98C1FED669135ECC4F245CE6667721B157F7098F DUP1 SLOAD PUSH1 0x18 SHR PUSH2 0xFFFF AND SWAP3 SWAP1 PUSH2 0x5236 SWAP1 PUSH2 0x5230 SWAP1 PUSH2 0x5225 JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x20 SHR PUSH1 0xFF AND PUSH2 0x5350 DUP2 PUSH2 0x2B75 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x535B JUMPI POP JUMP JUMPDEST PUSH2 0x5364 DUP2 PUSH2 0x2B75 JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x53DE JUMPI POP PUSH1 0x3D SLOAD TIMESTAMP LT PUSH2 0x53B4 JUMPI PUSH2 0x53AA PUSH5 0x200000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x5E3 PUSH1 0x0 PUSH1 0x3D SSTORE JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB3C0357700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP1 PUSH2 0x53EA PUSH1 0x4 SWAP3 PUSH2 0x2B75 JUMP JUMPDEST SUB PUSH2 0x542B JUMPI PUSH1 0x3D SLOAD TIMESTAMP LT PUSH2 0x53B4 JUMPI PUSH1 0x3E SLOAD TIMESTAMP LT PUSH2 0x5E3 JUMPI PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x734F1AD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x63A2DE0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x78 SHR PUSH1 0xFF AND PUSH2 0x54A2 JUMPI DUP1 DUP1 DIV PUSH1 0x1 EQ DUP2 ISZERO OR ISZERO PUSH2 0x2292 JUMPI CALLVALUE SUB PUSH2 0x5478 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xC288BF8F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP1 ISZERO PUSH2 0x54CB JUMPI DUP1 DUP1 DIV PUSH1 0x1 SUB PUSH2 0x2292 JUMPI PUSH2 0x5E3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 SLOAD AND ADDRESS SWAP1 CALLER SWAP1 PUSH2 0x5511 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x78 SHR PUSH1 0xFF AND PUSH2 0x54ED JUMPI SWAP1 PUSH2 0x54E5 SWAP2 PUSH2 0x331F JUMP JUMPDEST CALLVALUE SUB PUSH2 0x5478 JUMPI JUMP JUMPDEST DUP1 ISZERO PUSH2 0x22CE JUMPI PUSH2 0x5E3 SWAP2 PUSH2 0x5500 SWAP2 PUSH2 0x331F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 SLOAD AND ADDRESS SWAP1 CALLER SWAP1 JUMPDEST SWAP1 PUSH1 0x0 DUP1 PUSH2 0x55BC SWAP5 PUSH1 0x40 MLOAD SWAP5 PUSH1 0x20 SWAP8 DUP9 DUP8 ADD SWAP6 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 DUP1 SWAP3 AND PUSH1 0x24 DUP11 ADD MSTORE AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE PUSH1 0x64 DUP7 MSTORE PUSH2 0x5571 DUP7 PUSH2 0xE32 JUMP JUMPDEST AND SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x5580 DUP7 PUSH2 0xDFA JUMP JUMPDEST DUP8 DUP7 MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP9 DUP8 ADD MSTORE MLOAD SWAP1 DUP3 DUP6 GAS CALL PUSH2 0x55B6 PUSH2 0x424E JUMP JUMPDEST SWAP2 PUSH2 0x5660 JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 PUSH2 0x55C9 JUMPI POP POP POP JUMP JUMPDEST DUP3 DUP1 PUSH2 0x55D9 SWAP4 DUP4 ADD ADD SWAP2 ADD PUSH2 0x564B JUMP JUMPDEST ISZERO PUSH2 0x55E1 JUMPI POP JUMP JUMPDEST PUSH1 0x84 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x304 JUMPI MLOAD PUSH2 0x490 DUP2 PUSH2 0x10CA JUMP JUMPDEST SWAP2 SWAP3 SWAP1 ISZERO PUSH2 0x56C1 JUMPI POP DUP2 MLOAD ISZERO PUSH2 0x5674 JUMPI POP SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO PUSH2 0x567D JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x56D4 JUMPI POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0xD69 SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x47F JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x28 SHR PUSH1 0xFF AND PUSH2 0x5702 DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x5793 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xC617113400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 PUSH14 0xAAEB6D7670E522A718067333CD4E GAS STATICCALL DUP1 ISZERO PUSH2 0x1FB3 JUMPI PUSH2 0x576C JUMPI POP JUMP JUMPDEST PUSH2 0x54CB SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x578C JUMPI JUMPDEST PUSH2 0x5784 DUP2 DUP4 PUSH2 0xE4E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x564B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x577A JUMP JUMPDEST PUSH2 0x579C DUP2 PUSH2 0x311D JUMP JUMPDEST ISZERO PUSH2 0x57A4 JUMPI POP JUMP JUMPDEST PUSH14 0xAAEB6D7670E522A718067333CD4E DUP1 EXTCODESIZE PUSH2 0x57BD JUMPI POP POP JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO PUSH2 0x304 JUMPI PUSH1 0x40 MLOAD PUSH32 0x7D3E3DBE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x3CC6CDDA760B79BAFA08DF41ECFA224F810DCEB6 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP2 PUSH1 0x44 DUP2 DUP4 DUP7 GAS CALL SWAP1 DUP2 PUSH2 0x58BA JUMPI JUMPDEST POP ISZERO PUSH2 0x22CE JUMPI PUSH2 0x58A9 SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x585D PUSH6 0x10000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC617113400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP3 DUP4 SWAP2 SWAP1 DUP3 SWAP1 DUP2 SWAP1 PUSH1 0x44 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1FB3 JUMPI PUSH2 0x576C JUMPI POP JUMP JUMPDEST DUP1 PUSH2 0x58C7 PUSH2 0x58CD SWAP3 PUSH2 0xDE6 JUMP JUMPDEST DUP1 PUSH2 0x40E JUMP JUMPDEST CODESIZE PUSH2 0x581B JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE DUP2 DUP1 CALLDATACOPY DUP1 DUP1 CALLDATASIZE DUP2 PUSH32 0x0 GAS DELEGATECALL RETURNDATASIZE DUP3 DUP1 RETURNDATACOPY ISZERO PUSH2 0x590D JUMPI RETURNDATASIZE SWAP1 RETURN JUMPDEST RETURNDATASIZE SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD 0xE1 DUP9 SWAP2 0x2B 0x27 SWAP15 0x2D MUL PUSH24 0xF8541B78B77D258B9598F307032BCDC150B6BCCB40476473 PUSH16 0x6C634300081300330000000000000000 ","sourceMap":"5571:10440:46:-:0;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;-1:-1:-1;;;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5571:10440:46;;;;;;;;;;;;;;;;;;8075:25:44;;-1:-1:-1;5571:10440:46;;;;;;;;;;;;6067:30:10;6063:138;;-1:-1:-1;6536:32:47;5571:10440:46;6536:32:47;5571:10440:46;;;;;;;;8075:25:44;5571:10440:46;;;;;;;;;;;;;;;;;6063:138:10;5571:10440:46;;;;;;-1:-1:-1;5571:10440:46;6162:28:10;5571:10440:46;;;;;;6162:28:10;6063:138;;;5571:10440:46;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;-1:-1:-1;5571:10440:46;;;;;;-1:-1:-1;5571:10440:46;;;;;-1:-1:-1;5571:10440:46"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":1038,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":1494,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":12386,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_addresst_uint256":{"entryPoint":2667,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_addresst_uint256t_address":{"entryPoint":3442,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_array_address_dyn":{"entryPoint":4696,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_address_dynt_bool":{"entryPoint":4800,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_array_struct_RevenueAddress_calldata_dyn_calldata":{"entryPoint":4204,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_uint256_dyn":{"entryPoint":3764,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_available_length_string":{"entryPoint":4122,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool":{"entryPoint":4308,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":22091,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes4_fromMemory":{"entryPoint":16906,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_enum_MintingType":{"entryPoint":4322,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_string":{"entryPoint":4177,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint16":{"entryPoint":4284,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_uint32":{"entryPoint":4253,"id":null,"parameterSlots":0,"returnSlots":1},"abi_encode_address_address":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_23715":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_address_uint256_bytes":{"entryPoint":16927,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_address_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_bytes_calldata":{"entryPoint":19361,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_packed_bytes4_address_uint256_address_bool_uint256_uint256_bool":{"entryPoint":null,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_rational_by":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string":{"entryPoint":1151,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_memory_ptr":{"entryPoint":1084,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_stringliteral":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_1e76":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_stringliteral_520d":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_stringliteral":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_memory":{"entryPoint":3727,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":3740,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_string":{"entryPoint":4064,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_struct_Checkpoint_storage_dyn__ptr":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_array_struct_Checkpoint_storage_dyn_ptr":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_array_struct_Checkpoint_storage_dyn_ptr_40178":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_push_from_struct_Checkpoint_to_array_struct_Checkpoint_storage_dyn_ptr":{"entryPoint":10045,"id":null,"parameterSlots":2,"returnSlots":0},"array_push_from_struct_Checkpoint_to_array_struct_Checkpoint_storage_dyn_ptr_48570":{"entryPoint":9932,"id":null,"parameterSlots":1,"returnSlots":0},"calldata_array_index_access_struct_RevenueAddress_calldata_dyn_calldata":{"entryPoint":13061,"id":null,"parameterSlots":3,"returnSlots":1},"checked_add_uint256":{"entryPoint":9214,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256_23500":{"entryPoint":9200,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint32":{"entryPoint":19400,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":11910,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256_23701":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256":{"entryPoint":13087,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint16":{"entryPoint":20891,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_uint256":{"entryPoint":9287,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256_23432":{"entryPoint":9227,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_uint256_23485":{"entryPoint":9272,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":14898,"id":null,"parameterSlots":2,"returnSlots":0},"clean_up_bytearray_end_slots_string_storage_23558":{"entryPoint":14785,"id":null,"parameterSlots":2,"returnSlots":0},"cleanup_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint224":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"convert_uint16_to_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_to_storage_from_array_struct_RevenueAddress_calldata_dyn_calldata_to_array_struct_RevenueAddress_dyn":{"entryPoint":13257,"id":null,"parameterSlots":2,"returnSlots":0},"copy_byte_array_to_storage_from_string_to_string":{"entryPoint":15011,"id":null,"parameterSlots":1,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":1049,"id":null,"parameterSlots":3,"returnSlots":0},"copy_struct_to_storage_from_struct_RevenueAddress_calldata_to_struct_RevenueAddress":{"entryPoint":13106,"id":null,"parameterSlots":2,"returnSlots":0},"external_fun_DOMAIN_SEPARATOR":{"entryPoint":2818,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_airdropRandom":{"entryPoint":7286,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_airdropSequential":{"entryPoint":4856,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_airdropSpecify":{"entryPoint":5418,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_approve":{"entryPoint":1509,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_balanceOf":{"entryPoint":5379,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_delegate":{"entryPoint":4561,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_delegateBySig":{"entryPoint":7496,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_delegates":{"entryPoint":4497,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getApproved":{"entryPoint":1430,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPastTotalSupply":{"entryPoint":6022,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPastVotes":{"entryPoint":2853,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVotes":{"entryPoint":6614,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":4338,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isApprovedForAll":{"entryPoint":8149,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isMetadataFixed":{"entryPoint":1836,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_maxPerAddress":{"entryPoint":4629,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mint":{"entryPoint":1909,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintCustomURITo":{"entryPoint":5162,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintPresale":{"entryPoint":6713,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintPrice":{"entryPoint":4666,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintRandomTo":{"entryPoint":2140,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintRandomTo_12279":{"entryPoint":8211,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintSpecifyTo":{"entryPoint":3981,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintSpecifyTo_12579":{"entryPoint":3858,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintTo":{"entryPoint":3938,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintTo_12140":{"entryPoint":3483,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mint_12077":{"entryPoint":6868,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mint_12098":{"entryPoint":6402,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_n2mVersion":{"entryPoint":8120,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_name":{"entryPoint":1171,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_nonces":{"entryPoint":5933,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_owner":{"entryPoint":5995,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_ownerOf":{"entryPoint":4599,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_redeemRandom":{"entryPoint":2188,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_royaltyInfo":{"entryPoint":2761,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_safeTransferFrom":{"entryPoint":7178,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_safeTransferFrom_11913":{"entryPoint":3219,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_setApprovalForAll":{"entryPoint":6898,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_supportsInterface":{"entryPoint":777,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_symbol":{"entryPoint":6447,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_tokenURI":{"entryPoint":7837,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalSupply":{"entryPoint":2104,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferFrom":{"entryPoint":2711,"id":null,"parameterSlots":0,"returnSlots":0},"extract_byte_array_length":{"entryPoint":14702,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_enum_MintingType":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_enum_OperatorFilterStatus":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_enum_SalePhase":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint16":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"extract_from_storage_value_offsett_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":16974,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":3662,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_23716":{"entryPoint":3558,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_40164":{"entryPoint":3578,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_40199":{"entryPoint":3606,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_40203":{"entryPoint":3634,"id":null,"parameterSlots":1,"returnSlots":0},"fun":{"entryPoint":22739,"id":13613,"parameterSlots":0,"returnSlots":0},"fun__mintSpecify":{"entryPoint":20780,"id":12683,"parameterSlots":3,"returnSlots":0},"fun_afterTokenTransfer":{"entryPoint":16625,"id":11680,"parameterSlots":2,"returnSlots":0},"fun_afterTokenTransfer_23606":{"entryPoint":16800,"id":11680,"parameterSlots":1,"returnSlots":0},"fun_approve":{"entryPoint":15481,"id":4258,"parameterSlots":2,"returnSlots":0},"fun_balanceOf":{"entryPoint":15274,"id":11777,"parameterSlots":1,"returnSlots":1},"fun_beforeTokenTransfer":{"entryPoint":16511,"id":11642,"parameterSlots":2,"returnSlots":0},"fun_checkOnERC721Received":{"entryPoint":17022,"id":4366,"parameterSlots":4,"returnSlots":1},"fun_checkOwner":{"entryPoint":19350,"id":680,"parameterSlots":0,"returnSlots":0},"fun_checkPhase":{"entryPoint":21310,"id":13468,"parameterSlots":0,"returnSlots":0},"fun_delegate":{"entryPoint":8301,"id":1059,"parameterSlots":2,"returnSlots":0},"fun_domainSeparatorV4":{"entryPoint":11597,"id":7182,"parameterSlots":0,"returnSlots":1},"fun_exists":{"entryPoint":null,"id":3927,"parameterSlots":1,"returnSlots":1},"fun_getApproved":{"entryPoint":9409,"id":3756,"parameterSlots":1,"returnSlots":1},"fun_hashTypedDataV4":{"entryPoint":11764,"id":7225,"parameterSlots":1,"returnSlots":1},"fun_initialize_inner":{"entryPoint":13443,"id":null,"parameterSlots":12,"returnSlots":0},"fun_insert":{"entryPoint":10569,"id":5493,"parameterSlots":3,"returnSlots":2},"fun_insert_40173":{"entryPoint":10250,"id":5493,"parameterSlots":2,"returnSlots":2},"fun_isApprovedForAll":{"entryPoint":15611,"id":11869,"parameterSlots":2,"returnSlots":1},"fun_isApprovedOrOwner":{"entryPoint":15856,"id":3961,"parameterSlots":2,"returnSlots":1},"fun_isOperatorAllowed":{"entryPoint":22256,"id":13604,"parameterSlots":1,"returnSlots":0},"fun_latest":{"entryPoint":9839,"id":5340,"parameterSlots":1,"returnSlots":1},"fun_latest_40172":{"entryPoint":9765,"id":5340,"parameterSlots":0,"returnSlots":1},"fun_min":{"entryPoint":12245,"id":7348,"parameterSlots":2,"returnSlots":1},"fun_mint":{"entryPoint":17414,"id":4082,"parameterSlots":2,"returnSlots":0},"fun_mintPresale":{"entryPoint":19424,"id":13244,"parameterSlots":9,"returnSlots":0},"fun_mintRandom":{"entryPoint":18519,"id":12514,"parameterSlots":4,"returnSlots":0},"fun_mintRandomWithChecks":{"entryPoint":18071,"id":12347,"parameterSlots":2,"returnSlots":0},"fun_mintRandom_23438":{"entryPoint":18284,"id":12514,"parameterSlots":3,"returnSlots":0},"fun_mintSequential":{"entryPoint":20490,"id":12211,"parameterSlots":3,"returnSlots":0},"fun_mintSequentialWithChecks":{"entryPoint":17682,"id":12174,"parameterSlots":2,"returnSlots":0},"fun_mintSpecify":{"entryPoint":19009,"id":12739,"parameterSlots":2,"returnSlots":0},"fun_mintSpecifyWithChecks":{"entryPoint":18916,"id":12639,"parameterSlots":2,"returnSlots":0},"fun_moveDelegateVotes":{"entryPoint":8864,"id":1182,"parameterSlots":2,"returnSlots":0},"fun_owner":{"entryPoint":12407,"id":10401,"parameterSlots":0,"returnSlots":1},"fun_ownerOf":{"entryPoint":9375,"id":3627,"parameterSlots":1,"returnSlots":1},"fun_push":{"entryPoint":9561,"id":5310,"parameterSlots":2,"returnSlots":2},"fun_push_40181":{"entryPoint":9622,"id":5310,"parameterSlots":0,"returnSlots":2},"fun_push_40182":{"entryPoint":9704,"id":5310,"parameterSlots":0,"returnSlots":2},"fun_push_48568":{"entryPoint":9470,"id":5310,"parameterSlots":1,"returnSlots":2},"fun_randomTokenId":{"entryPoint":18792,"id":12557,"parameterSlots":2,"returnSlots":1},"fun_recover":{"entryPoint":20362,"id":6865,"parameterSlots":2,"returnSlots":1},"fun_recover_7039":{"entryPoint":11055,"id":7039,"parameterSlots":4,"returnSlots":1},"fun_requirePayment":{"entryPoint":21710,"id":13519,"parameterSlots":2,"returnSlots":0},"fun_requirePaymentWithAffiliates":{"entryPoint":20911,"id":13405,"parameterSlots":2,"returnSlots":0},"fun_requirePayment_23425":{"entryPoint":21589,"id":13519,"parameterSlots":1,"returnSlots":0},"fun_safeTransferFrom":{"entryPoint":21777,"id":3238,"parameterSlots":4,"returnSlots":0},"fun_sqrt":{"entryPoint":11925,"id":7674,"parameterSlots":1,"returnSlots":1},"fun_strictOwner":{"entryPoint":19237,"id":10434,"parameterSlots":0,"returnSlots":1},"fun_throwError":{"entryPoint":11140,"id":6792,"parameterSlots":1,"returnSlots":0},"fun_toEthSignedMessageHash":{"entryPoint":20423,"id":7056,"parameterSlots":1,"returnSlots":1},"fun_toUint32":{"entryPoint":12263,"id":8873,"parameterSlots":1,"returnSlots":1},"fun_transfer":{"entryPoint":16061,"id":4234,"parameterSlots":3,"returnSlots":0},"fun_tryRecover":{"entryPoint":11467,"id":7006,"parameterSlots":4,"returnSlots":2},"fun_tryRecover_6838":{"entryPoint":null,"id":6838,"parameterSlots":2,"returnSlots":2},"fun_unsafeAccess":{"entryPoint":null,"id":5612,"parameterSlots":2,"returnSlots":1},"fun_unsafeAccess_40166":{"entryPoint":null,"id":5612,"parameterSlots":1,"returnSlots":1},"fun_upperBinaryLookup":{"entryPoint":10952,"id":5545,"parameterSlots":4,"returnSlots":1},"fun_upperBinaryLookup_40167":{"entryPoint":10828,"id":5545,"parameterSlots":3,"returnSlots":1},"fun_useNonce":{"entryPoint":null,"id":1239,"parameterSlots":1,"returnSlots":1},"fun_verifyCallResultFromTarget":{"entryPoint":22112,"id":5031,"parameterSlots":4,"returnSlots":1},"increment_wrapping_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_struct_History_storage_of_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_struct_History_storage_of_address_23429":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_struct_History_storage_of_address_23498":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_struct_History_storage_of_address_23582":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_struct_History_storage_of_address_23695":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_struct_History_storage_of_address_23696":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"mapping_index_access_mapping_address_struct_History_storage_of_address_23704":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_address_of_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_address_of_uint256_23471":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_address_of_uint256_23580":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_bool_of_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_bool_of_uint32_23468":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":18989,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_initializer":{"entryPoint":12583,"id":1368,"parameterSlots":12,"returnSlots":0},"modifier_onlyInitializing":{"entryPoint":14396,"id":1411,"parameterSlots":2,"returnSlots":0},"packed_hashed_bytes_calldata_uint256_to_bytes_uint":{"entryPoint":19375,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":9153,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":11863,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":11078,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":9885,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3511,"id":null,"parameterSlots":0,"returnSlots":0},"read_from_calldatat_uint16":{"entryPoint":13077,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_reference_type_struct_Checkpoint":{"entryPoint":10124,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_3_uint16":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint16":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint224":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral":{"entryPoint":19162,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_12a8":{"entryPoint":15743,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_13ff":{"entryPoint":8226,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_277f":{"entryPoint":15948,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_2a63":{"entryPoint":17339,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_b08d":{"entryPoint":9300,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_b717":{"entryPoint":10175,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_d688":{"entryPoint":14283,"id":null,"parameterSlots":1,"returnSlots":0},"revert_forward":{"entryPoint":11455,"id":null,"parameterSlots":0,"returnSlots":0},"shift_right_uint256_uint8":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"update_storage_value_address_to_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offset_0t_bool_to_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_address_to_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_address_to_address_23550":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_bool_to_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_bool_to_bool_23538":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_bool_to_bool_23539":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_bool_to_bool_23551":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_bool_to_t_bool":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_enum_MintingType_to_enum_MintingType":{"entryPoint":12995,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_enum_OperatorFilterStatus_to_enum_OperatorFilterStatus":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_enum_SalePhase_to_enum_SalePhase":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_uint16_to_uint16":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_uint16_to_uint16_23546":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_uint224_to_uint224":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256_23542":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256_23543":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_uint256_to_uint256_23545":{"entryPoint":11050,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_uint32_to_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_uint32_to_uint32_23427":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"update_storage_value_offsett_uint8_to_uint8":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_uint16_to_uint16":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_uint256_to_uint256":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"validator_assert_enum_MintingType":{"entryPoint":12573,"id":null,"parameterSlots":1,"returnSlots":0},"validator_assert_enum_RecoverError":{"entryPoint":11125,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_address":{"entryPoint":1477,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":4298,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":730,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint16":{"entryPoint":4272,"id":null,"parameterSlots":1,"returnSlots":0},"wrapping_add_uint32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"write_to_memory_uint224":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"10278":[{"length":32,"start":12470},{"length":32,"start":19300}],"11969":[{"length":32,"start":22751}]},"linkReferences":{},"object":"60806040526004361015610015575b366158d357005b60003560e01c806301ffc9a7146102d557806306fdde03146102d0578063081812fc146102cb578063095ea7b3146102c65780630de77eb8146102c15780631249c58b146102bc57806318160ddd146102b75780631d7df191146102b25780631ff4cc7d146102ad57806323b872dd146102a85780632a55205a146102a35780633644e5151461029e5780633a46b1a81461029957806342842e0e14610294578063438b1b4b1461028f5780634402d2541461028a578063449a52f8146102855780634a50aa85146102805780635066e5c21461027b578063587cde1e146102765780635c19a95c146102715780636352211e1461026c578063639814e0146102675780636817c76c1461026257806368fdda331461025d5780636ad542401461025857806370a082311461025357806371e6775f1461024e5780637ecebe00146102495780638da5cb5b146102445780638e539e8c1461023f57806394bf804d1461023a57806395d89b41146102355780639ab24eb0146102305780639d13a5ba1461022b578063a0712d6814610226578063a22cb46514610221578063b88d4fde1461021c578063be172edf14610217578063c3cda52014610212578063c87b56dd1461020d578063cb93c48f14610208578063e985e9c5146102035763fefa5d720361000e57612013565b611fd5565b611fb8565b611e9d565b611d48565b611c76565b611c0a565b611af2565b611ad4565b611a39565b6119d6565b61192f565b611902565b611786565b61176b565b61172d565b61152a565b611503565b61142a565b6112f8565b61123a565b611215565b6111f7565b6111d1565b611191565b6110f2565b610f8d565b610f62565b610f12565b610d9b565b610c93565b610b25565b610b02565b610ac9565b610a97565b61088c565b61085c565b610838565b610775565b61072c565b6105e5565b610596565b610493565b610309565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361030457565b600080fd5b346103045760206003193601126103045760207fffffffff00000000000000000000000000000000000000000000000000000000600435610349816102da565b167f2a55205a000000000000000000000000000000000000000000000000000000008114908115610380575b506040519015158152f35b7f80ac58cd000000000000000000000000000000000000000000000000000000008114915081156103e4575b81156103ba575b5038610375565b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386103b3565b7f5b5e139f00000000000000000000000000000000000000000000000000000000811491506103ac565b600091031261030457565b60005b83811061042c5750506000910152565b818101518382015260200161041c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361047881518092818752878088019101610419565b0116010190565b90602061049092818152019061043c565b90565b34610304576000806003193601126105935760405190806078546104b68161396e565b8085529160019180831690811561054b57506001146104f0575b6104ec856104e081870382610e4e565b6040519182918261047f565b0390f35b9250607883527f8dc6fb69531d98d70dc0420e638d2dfd04e09e1ec783ede9aac77da9c5a0dac45b8284106105335750505081016020016104e0826104ec6104d0565b80546020858701810191909152909301928101610518565b8695506104ec969350602092506104e09491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010192936104d0565b80fd5b346103045760206003193601126103045760206105b46004356124c1565b6001600160a01b0360405191168152f35b6001600160a01b0381160361030457565b60c435906105e3826105c5565b565b3461030457604060031936011261030457600435610602816105c5565b60243561060e826156f0565b6106178161249f565b6001600160a01b0380821680918516146106c25733149081156106b0575b50156106465761064491613c79565b005b608460405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152fd5b6106bc91503390613cfb565b38610635565b608460405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152fd5b346103045760006003193601126103045760335415801590610756575b6020906040519015158152f35b506020600360ff60455460301c1661076d8161311d565b149050610749565b60006003193601126103045761078c603a54615455565b61079461533e565b60455460ff8160301c166107a78161311d565b61080e576045805463ffffffff191663ffffffff92831660010183169081179091559060455491818360581c16106107e457610644911633614406565b60046040517f5fd48f91000000000000000000000000000000000000000000000000000000008152fd5b60046040517f64151c75000000000000000000000000000000000000000000000000000000008152fd5b3461030457600060031936011261030457602063ffffffff60455416604051908152f35b604060031936011261030457610644600435610877816105c5565b6024359061088782603a546154ce565b614697565b6000806003193601126105935760016108b8336001600160a01b03166000526041602052604060002090565b0154336000908152604160205260409020548015610a415760016108ef336001600160a01b03166000526041602052604060002090565b0154431115610a1757610989826109c693409081156109c9575b5084600161092a336001600160a01b03166000526041602052604060002090565b01558461094a336001600160a01b03166000526041602052604060002090565b5560455460481c61ffff16926109837fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff60455416604555565b3361476c565b7fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff6affff0000000000000000006045549260481b16911617604555565b80f35b6109f9915060ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0043166123fe565b43811015610a09575b4038610909565b610a129061240b565b610a02565b60046040517f93c4a003000000000000000000000000000000000000000000000000000000008152fd5b60046040517f9890af60000000000000000000000000000000000000000000000000000000008152fd5b600319606091011261030457600435610a83816105c5565b90602435610a90816105c5565b9060443590565b3461030457610644610aa836610a6b565b91610ab2336156f0565b610ac4610abf8433613df0565b613d7f565b613ebd565b34610304576040600319360112610304576040612710610af461ffff60455460381c1660243561331f565b048151903082526020820152f35b34610304576000600319360112610304576020610b1d612d4d565b604051908152f35b3461030457604060031936011261030457600435610b42816105c5565b6001600160a01b03602435911660005260df60205260406000209043811015610c4f57610b71610b8891612fe7565b8254906000908260058111610be6575b5084612ac8565b9081610bbb575050602060005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405191168152f35b610bda610be191610bcd602094612438565b9060005260206000200190565b5460201c90565b610b95565b80610bf6610bfc92959395612e95565b90612447565b90610c27610c1e610c14848960005260206000200190565b5463ffffffff1690565b63ffffffff1690565b63ffffffff85161015610c3d5750915b38610b81565b929150610c49906123f0565b90610c37565b606460405162461bcd60e51b815260206004820152602060248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e65646044820152fd5b3461030457610ca136610a6b565b610caa336156f0565b60405191602083019383851067ffffffffffffffff861117610d6d57610cf79460405260008452610cda336156f0565b610ce7610abf8433613df0565b610cf2838383613ebd565b61427e565b15610cfe57005b60405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b0390fd5b610db7565b600319606091011261030457600435610d8a816105c5565b9060243590604435610490816105c5565b610644610db2610daa36610d72565b8193916151af565b614512565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111610d6d57604052565b6040810190811067ffffffffffffffff821117610d6d57604052565b6060810190811067ffffffffffffffff821117610d6d57604052565b60a0810190811067ffffffffffffffff821117610d6d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610d6d57604052565b604051906105e382610dfa565b67ffffffffffffffff8111610d6d5760051b60200190565b81601f8201121561030457803591610ecb83610e9c565b92610ed96040519485610e4e565b808452602092838086019260051b820101928311610304578301905b828210610f03575050505090565b81358152908301908301610ef5565b604060031936011261030457600435610f2a816105c5565b6024359067ffffffffffffffff821161030457610f4e610644923690600401610eb4565b90610f5d603a548351906154ce565b6149e4565b604060031936011261030457610644600435610f7d816105c5565b60243590610db282603a546154ce565b606060031936011261030457600435610fa5816105c5565b6024359067ffffffffffffffff821161030457610fc9610644923690600401610eb4565b90610f5d604435610fd9816105c5565b83516151af565b67ffffffffffffffff8111610d6d57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261102682610fe0565b916110346040519384610e4e565b829481845281830111610304578281602093846000960137010152565b9080601f83011215610304578160206104909335910161101a565b9181601f840112156103045782359167ffffffffffffffff8311610304576020808501948460061b01011161030457565b60e4359063ffffffff8216820361030457565b61ffff81160361030457565b61010435906105e3826110b0565b8015150361030457565b61012435906105e3826110ca565b6101443590600482101561030457565b6101606003193601126103045767ffffffffffffffff60043581811161030457611120903690600401611051565b60243582811161030457611138903690600401611051565b9060a4359283116103045761115461064493369060040161106c565b61115c6105d6565b61116461109d565b9161116d6110bc565b936111766110d4565b9561117f6110e2565b97608435916064359160443591613127565b346103045760206003193601126103045760206004356111b0816105c5565b6001600160a01b0380911660005260de825260406000205416604051908152f35b34610304576020600319360112610304576106446004356111f1816105c5565b3361206d565b346103045760206003193601126103045760206105b460043561249f565b3461030457600060031936011261030457602061ffff60455460481c16604051908152f35b34610304576000600319360112610304576020603a54604051908152f35b81601f820112156103045780359161126f83610e9c565b9261127d6040519485610e4e565b808452602092838086019260051b820101928311610304578301905b8282106112a7575050505090565b83809183356112b5816105c5565b815201910190611299565b6040600319820112610304576004359067ffffffffffffffff8211610304576112eb91600401611258565b90602435610490816110ca565b611301366112c0565b9061131d61130d614b25565b6001600160a01b03163314614ada565b604580549260ff8460301c166113328161311d565b61080e5761134c93835163ffffffff9586918284166123fe565b9160581c16106107e45782519260005b84811061136557005b80836113c561138661137960019587614a2d565b516001600160a01b031690565b896113a46113988a5463ffffffff1690565b60010163ffffffff1690565b6113be8163ffffffff1663ffffffff196045541617604555565b1690614406565b6113d0575b0161135c565b6114256113fa6113e4875463ffffffff1690565b63ffffffff166000526043602052604060002090565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b6113ca565b606060031936011261030457600435611442816105c5565b6044359061144f826110ca565b61145a603a54615455565b61146261533e565b60455490600360ff8360301c166114788161311d565b0361080e576045805463ffffffff191663ffffffff93841660010184169081179091559160455492818460581c16106107e4576114b6921690614406565b6114e9575b6024356114e66114d060455463ffffffff1690565b63ffffffff166000526044602052604060002090565b55005b6114fe6113fa6113e460455463ffffffff1690565b6114bb565b34610304576020600319360112610304576020610b1d600435611525816105c5565b613baa565b60606003193601126103045767ffffffffffffffff60048035828111610304576115579036908301611258565b916024359081116103045761156f9036908301610eb4565b6044359261157c846110ca565b611584614b96565b80519260458054600260ff8260301c1661159d8161311d565b036117045763ffffffff9081811690826115b88851846123fe565b9160581c16106116db57855187036116b257906115ea91818816011663ffffffff1663ffffffff196045541617604555565b60005b8581106115f657005b6116008186614a2d565b5115801561168c575b61166357808761163261162161137960019589614a2d565b61162b848a614a2d565b5190614406565b61163d575b016115ed565b61165e6113fa61164d8389614a2d565b516000526043602052604060002090565b611637565b826040517f3f6cc768000000000000000000000000000000000000000000000000000000008152fd5b506116978186614a2d565b5182546116ac9060581c63ffffffff16610c1e565b10611609565b836040517f991f339f000000000000000000000000000000000000000000000000000000008152fd5b836040517f5fd48f91000000000000000000000000000000000000000000000000000000008152fd5b826040517f64151c75000000000000000000000000000000000000000000000000000000008152fd5b34610304576020600319360112610304576001600160a01b03600435611752816105c5565b1660005260e16020526020604060002054604051908152f35b346103045760006003193601126103045760206105b4613077565b3461030457602060031936011261030457600435438110156118be576117ae6117c591612fe7565b60e054906000908260058111611852575b50612a4c565b806117f757507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005b60405191168152602090f35b61184d610bda6118237bffffffffffffffffffffffffffffffffffffffffffffffffffffffff93612438565b60e06000527f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f0190565b6117eb565b80610bf661186292959395612e95565b60e060005290611896610c1e7f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f8401610c14565b63ffffffff851610156118ac5750915b386117bf565b9291506118b8906123f0565b906118a6565b606460405162461bcd60e51b815260206004820152601a60248201527f566f7465733a20626c6f636b206e6f7420796574206d696e65640000000000006044820152fd5b604060031936011261030457610644600435611929602435611923816105c5565b826151af565b33614512565b34610304576000806003193601126105935760405190806079546119528161396e565b8085529160019180831690811561054b575060011461197b576104ec856104e081870382610e4e565b9250607983527f957bbdc7fad0dec56e7c96af4a3ab63aa9daf934a52ffce891945b7fb622d7915b8284106119be5750505081016020016104e0826104ec6104d0565b805460208587018101919091529093019281016119a3565b34610304576020600319360112610304576001600160a01b036004356119fb816105c5565b1660005260df60205260207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff611a30604060002061266f565b16604051908152f35b61010060031936011261030457600435611a52816105c5565b67ffffffffffffffff60243581811161030457611a73903690600401610eb4565b91604435611a80816110ca565b60c43590611a8d826110ca565b60e43594848611610304573660238701121561030457856004013594851161030457366024868801011161030457602461064496019360a435926084359260643592614be0565b60206003193601126103045761064460043561192981603a546154ce565b3461030457604060031936011261030457600435611b0f816105c5565b602435611b1b816110ca565b611b24826156f0565b6001600160a01b03821691823314611bc65781611b64611b949233600052607d6020526040600020906001600160a01b0316600052602052604060002090565b9060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051901515815233907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3005b606460405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b3461030457608060031936011261030457600435611c27816105c5565b60243590611c34826105c5565b6044356064359267ffffffffffffffff8411610304573660238501121561030457611c6c610cf794369060248160040135910161101a565b92610cda336156f0565b611c7f366112c0565b90611c88614b96565b8051906045549260ff8460301c1693611ca08561311d565b600180950361080e5763ffffffff8082169181611cbd87856123fe565b9160581c16106107e457611ce691818616011663ffffffff1663ffffffff196045541617604555565b611cef43612438565b4060005b848110611cfc57005b80611d08879284614968565b84611d1f82611d1a611379868b614a2d565b614406565b611d2b575b5001611cf3565b6113fa611d42916000526043602052604060002090565b38611d24565b346103045760c060031936011261030457600435611d65816105c5565b6064359060243560443560ff8416840361030457804211611e5957611e27611e54916106449560405190611e0f82611de36020820195898b886060919493926001600160a01b0360808301967fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845216602083015260408201520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283610e4e565b611e2260a4359360843593519020612df4565b612b2f565b91611e4e836001600160a01b031660005260e1602052604060002090815491600183019055565b14612022565b61206d565b606460405162461bcd60e51b815260206004820152601860248201527f566f7465733a207369676e6174757265206578706972656400000000000000006044820152fd5b3461030457602060031936011261030457600435611ed9611ed482600052607a6020526001600160a01b0360406000205416151590565b612454565b604051907f01284a4600000000000000000000000000000000000000000000000000000000825260048201526000908181602481305afa908115611fb3578291611f2c575b604051806104ec848261047f565b90503d8083833e611f3d8183610e4e565b810190602081830312611fab5780519067ffffffffffffffff8211611faf570181601f82011215611fab57805192611f7484610fe0565b92611f826040519485610e4e565b8484526020858401011161059357506104ec92611fa59160208085019101610419565b38611f1e565b8280fd5b8380fd5b612cbf565b346103045760006003193601126103045760206040516103e88152f35b34610304576040600319360112610304576020612009600435611ff7816105c5565b60243590612004826105c5565b613cfb565b6040519015158152f35b610644610887610daa36610d72565b1561202957565b606460405162461bcd60e51b815260206004820152601460248201527f566f7465733a20696e76616c6964206e6f6e63650000000000000000000000006044820152fd5b816001600160a01b036120f88184169360009480865260de60205260408620936120ca81865416988996906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b85169687917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f8880a4613baa565b928482141580612297575b61210f575b5050505050565b81612184575b505082612124575b8080612108565b7fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249161216661216b926001600160a01b031660005260df602052604060002090565b612559565b60408051928352602083019190915290a238808061211d565b80826040925260df602052207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff806121b78361266f565b16858103908111612292576121cb43612fe7565b90828111612228577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249361221e9284612205931691612949565b6040805192851683529316602082015291829190820190565b0390a23880612115565b608460405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152fd5b6123c1565b50831515612103565b906001600160a01b03808216921682811415806123b9575b6122c157505050565b8061232b575b50816122d2575b5050565b6123186123137fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724926001600160a01b031660005260df602052604060002090565b6124fe565b60408051928352602083019190915290a2565b8060005260df60205260406000207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff806123608361266f565b1660001981019081116122925761237643612fe7565b90828111612228577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724936123b09284612205931691612949565b0390a2386122c7565b5060016122b8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906001820180921161229257565b9190820180921161229257565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00820191821161229257565b90600019820191821161229257565b9190820391821161229257565b1561245b57565b606460405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152fd5b600052607a6020526001600160a01b0360406000205416610490811515612454565b6124e4611ed482600052607a6020526001600160a01b0360406000205416151590565b600052607c6020526001600160a01b036040600020541690565b907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff91826125278261266f565b16600181018091116122925761253c43612fe7565b9184821161222857849283612552931691612949565b9316921690565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9291836125828361266f565b169081018091116122925761253c43612fe7565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90816125bd612625565b1660018101809111612292576125d243612fe7565b908381116122285783918261255292169061280a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff908161260f612625565b166000198101908111612292576125d243612fe7565b60e05460009080612637575050600090565b806000198101116122925760e07f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4e9252015460201c90565b80546000918161268157505050600090565b6000199282848101116122925760209181522001015460201c90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60e0549068010000000000000000821015610d6d57600182018060e0558210156127385760e0600052805160209182015190911b63ffffffff191663ffffffff91909116177f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f90910155565b61269d565b90815468010000000000000000811015610d6d576001810180845581101561273857600092835260209283902082519284015190931b63ffffffff191663ffffffff9290921691909117910155565b906040516040810181811067ffffffffffffffff821117610d6d57604052602081935463ffffffff81168352811c910152565b156127c657565b606460405162461bcd60e51b815260206004820152601760248201527f436865636b706f696e743a20696e76616c6964206b65790000000000000000006044820152fd5b60e054919291801561290a576128bb91818561283261282d611823602096612438565b61278c565b92612841845163ffffffff1690565b61285863ffffffff918284169283911611156127bf565b612869610c1e865163ffffffff1690565b036128bf575061287e61182361289893612438565b9063ffffffff63ffffffff1983549260201b169116179055565b01517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9190565b905061290591506128dd6128d1610e8f565b63ffffffff9092168252565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8716818501526126cc565b612898565b506129439061291a6128d1610e8f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660208201526126cc565b60009190565b90929192838254801515600014612a125792602092918461297f61282d6129726128bb98612438565b8560005260206000200190565b9361298e855163ffffffff1690565b6129a563ffffffff918284169283911611156127bf565b6129b6610c1e875163ffffffff1690565b036129cc575061289892610bcd61287e92612438565b915050612905916129ea6129de610e8f565b63ffffffff9093168352565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff88168286015261273d565b505061294391612a236129de610e8f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8516602083015261273d565b905b828110612a5a57505090565b9091808216906001818418811c83018093116122925760e060005263ffffffff80847f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f01541690861610600014612ab5575050915b90612a4e565b9093925081018091116122925790612aaf565b91905b838210612ad85750505090565b909192808316906001818518811c83018093116122925760008681526020902083015463ffffffff9081169085161015612b17575050925b9190612acb565b9094935081018091116122925791612b10565b603a55565b916104909391612b3e93612ccb565b919091612b84565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60051115612b7f57565b612b46565b612b8d81612b75565b80612b955750565b612b9e81612b75565b60018103612beb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b612bf481612b75565b60028103612c415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80612c4d600392612b75565b14612c5457565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608490fd5b6040513d6000823e3d90fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311612d415791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15611fb35781516001600160a01b03811615612d3b579190565b50600190565b50505050600090600390565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527ff63dd8159b098696ebb81a400cea3c4ffba1938921072285df391c19c71dce6160408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117610d6d5760405251902090565b612dfc612d4d565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526080810181811067ffffffffffffffff821117610d6d5760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8115612e90570490565b612e57565b8015612fcf5780612f68612f61612f57612f4d612f43612f39612f2f612f2560016104909a6000908b60801c80612fc3575b508060401c80612fb6575b508060201c80612fa9575b508060101c80612f9c575b508060081c80612f8f575b508060041c80612f82575b508060021c80612f75575b50821c612f6e575b811c1b612f1e818b612e86565b0160011c90565b612f1e818a612e86565b612f1e8189612e86565b612f1e8188612e86565b612f1e8187612e86565b612f1e8186612e86565b612f1e8185612e86565b8092612e86565b90612fd5565b8101612f11565b6002915091019038612f09565b6004915091019038612efe565b6008915091019038612ef3565b6010915091019038612ee8565b6020915091019038612edd565b6040915091019038612ed2565b91505060809038612ec7565b50600090565b9080821015612fe2575090565b905090565b63ffffffff90818111612ff8571690565b608460405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152fd5b908160209103126103045751610490816105c5565b6000906040517f6352211e0000000000000000000000000000000000000000000000000000000081523060048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa600091816130ed575b506130e95750565b9150565b61310f91925060203d8111613116575b6131078183610e4e565b810190613062565b90386130e1565b503d6130fd565b60041115612b7f57565b99979593919a98969492909a6000549b60ff8d60081c1615809d819e6132b5575b8115613295575b501561322b576131939b8d61318a60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055565b6131f557613483565b61319957565b6131c67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff60005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b6132266101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff6000541617600055565b613483565b608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b303b159150816132a7575b503861314f565b6001915060ff1614386132a0565b600160ff8216109150613148565b6132cc8161311d565b7fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff66ff0000000000006045549260301b16911617604555565b91908110156127385760061b0190565b35610490816110b0565b8181029291811591840414171561229257565b906020906133788135613344816105c5565b84906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b0135613383816110b0565b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b680100000000000000008211610d6d576038548260385580831061343c575b5060386000527f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f4561996000915b8383106134205750505050565b6001604082613430839486613332565b01920192019190613413565b600060388152837f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619992830192015b8281106134785750506133e8565b81815560010161346a565b90613497919c9b979892969c99959961383c565b63ffffffff8116156137a157811590811580613798575b61376e5761138861ffff86161161374457613504907fffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff6effffffff00000000000000000000006045549260581b16911617604555565b1561373357508061372357506135198361311d565b600383036136f95761352d61356892603a55565b7fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff68ffff000000000000006045549260381b16911617604555565b6135718161311d565b806136ea575b506001600160a01b03811661366d575b5060018092151514613628575b836135a0575b50509050565b60009182905b8582106135f457505061251c92936135bd916133c9565b116135ca5780388061359a565b60046040517ffe0c06b7000000000000000000000000000000000000000000000000000000008152fd5b613620829461361a613613602061360d86978c8a613305565b01613315565b61ffff1690565b906123fe565b9301906135a6565b6136687001000000000000000000000000000000007fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff6045541617604555565b613594565b6136e4906136b06f010000000000000000000000000000007fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff6045541617604555565b6001600160a01b03167fffffffffffffffffffffffff00000000000000000000000000000000000000006040541617604055565b38613587565b6136f3906132c3565b38613577565b60046040517f27bfeafe000000000000000000000000000000000000000000000000000000008152fd5b61356892612b2a61352d92603455565b603355506135689161352d90603a55565b60046040517f44b93ba4000000000000000000000000000000000000000000000000000000008152fd5b60046040517f04cff63b000000000000000000000000000000000000000000000000000000008152fd5b508315156134ae565b60046040517fb8a9effe000000000000000000000000000000000000000000000000000000008152fd5b156137d257565b608460405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b9061385760ff60005460081c16613852816137cb565b6137cb565b815167ffffffffffffffff8111610d6d5761387c8161387760785461396e565b6139c1565b602080601f83116001146138bd575081906105e3946000926138b2575b50506000198260011b9260031b1c191617607855613aa3565b015190503880613899565b9192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0841661390f60786000527f8dc6fb69531d98d70dc0420e638d2dfd04e09e1ec783ede9aac77da9c5a0dac490565b936000905b8282106139565750509160019391856105e39796941061393d575b505050811b01607855613aa3565b015160001960f88460031b161c1916905538808061392f565b80600186978294978701518155019601940190613914565b90600182811c921680156139b7575b602083101461398857565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f169161397d565b601f81116139cd575050565b600090607882527f8dc6fb69531d98d70dc0420e638d2dfd04e09e1ec783ede9aac77da9c5a0dac4906020601f850160051c83019410613a28575b601f0160051c01915b828110613a1d57505050565b818155600101613a11565b9092508290613a08565b601f8111613a3e575050565b600090607982527f957bbdc7fad0dec56e7c96af4a3ab63aa9daf934a52ffce891945b7fb622d791906020601f850160051c83019410613a99575b601f0160051c01915b828110613a8e57505050565b818155600101613a82565b9092508290613a79565b90815167ffffffffffffffff8111610d6d57613ac981613ac460795461396e565b613a32565b602080601f8311600114613b045750819293600092613af9575b50506000198260011b9260031b1c191617607955565b015190503880613ae3565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831694613b5560796000527f957bbdc7fad0dec56e7c96af4a3ab63aa9daf934a52ffce891945b7fb622d79190565b926000905b878210613b92575050836001959610613b79575b505050811b01607955565b015160001960f88460031b161c19169055388080613b6e565b80600185968294968601518155019501930190613b5a565b906001600160a01b0382168015613c0f57600052607b60205260406000205491600160ff60455460301c16613bde8161311d565b14613be65750565b91613c0861049092936001600160a01b03166000526041602052604060002090565b54906123fe565b608460405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152fd5b81600052607c602052613cbe816040600020906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6001600160a01b0380613cd08461249f565b169116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4565b6001600160a01b03918281167388899dc0b84c6e726840e00dfb94abc6248825ec8114613d7657731e0049783f008a0085193e00003d00cd54003c7114613d6e5760ff92613d699216600052607d6020526040600020906001600160a01b0316600052602052604060002090565b541690565b505050600190565b50505050600190565b15613d8657565b608460405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152fd5b613df98261249f565b916001600160a01b0390818316928285168414948515613e39575b50508315613e23575b50505090565b613e2f919293506124c1565b1614388080613e1d565b613e44929550613cfb565b923880613e14565b15613e5357565b608460405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152fd5b613ee192613eca8161249f565b6001600160a01b0383811695909182168614613e4c565b83168015614016576105e394613ef7838561407f565b613f1981613f13613f078661249f565b6001600160a01b031690565b14613e4c565b613f58613f3084600052607c602052604060002090565b7fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b613f75846001600160a01b0316600052607b602052604060002090565b6000198154019055613f9a856001600160a01b0316600052607b602052604060002090565b60018154019055613fec85613fb985600052607a602052604060002090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46140f1565b608460405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b0316151590816140c2575b5061409857565b60046040517f765c862b000000000000000000000000000000000000000000000000000000008152fd5b9050600052604360205260ff6040600020541680156140e2575b38614091565b5060ff60455460801c166140dc565b614134906001600160a01b03809116908115614191575b808416918215614182575b60005260de60205280604060002054169160005260406000205416906122a0565b61ffff60455460481c169081614148575050565b61415190613baa565b1161415857565b60046040517f550ffa9c000000000000000000000000000000000000000000000000000000008152fd5b61418a6125e8565b5050614113565b614199612596565b5050614108565b6141a8612596565b50506141346001600160a01b038083169081156141fb575b60de6020527f7feac6ef4894db443b6046f934d8dffe8af4812f9f4b307224f533cf30c9fb62546000928352604090922054811691166122a0565b6142036125e8565b50506141c0565b908160209103126103045751610490816102da565b909261049094936080936001600160a01b0380921684521660208301526040820152816060820152019061043c565b3d15614279573d9061425f82610fe0565b9161426d6040519384610e4e565b82523d6000602084013e565b606090565b92909190823b15613d76576142d29260209260006001600160a01b036040518097819682957f150b7a02000000000000000000000000000000000000000000000000000000009b8c8552336004860161421f565b0393165af16000918161438b575b50614365576142ed61424e565b805190816143605760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000161490565b6143ad91925060203d81116143b4575b6143a58183610e4e565b81019061420a565b90386142e0565b503d61439b565b156143c257565b606460405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152fd5b6001600160a01b0381169182156144ce576105e39261444461443e83600052607a6020526001600160a01b0360406000205416151590565b156143bb565b61446761443e83600052607a6020526001600160a01b0360406000205416151590565b614484836001600160a01b0316600052607b602052604060002090565b600181540190556144a383613fb984600052607a602052604060002090565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a46141a0565b606460405162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b9061451b61533e565b604580549260ff8460301c166145308161311d565b61080e5763ffffffff93848116908482018092116122925760581c8516106107e457600091825b84811061456657505050505050565b81549063ffffffff1960019288848183160116918291161784556001600160a01b0385168015614654576145bf6145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b1590565b6143bb565b6145e56145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b614602866001600160a01b0316600052607b602052604060002090565b84815401905561462086613fb984600052607a602052604060002090565b867fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a461464e846141a0565b01614557565b606460405162461bcd60e51b8152602080600483015260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b906146a061533e565b60455490600160ff8360301c166146b68161311d565b0361080e5763ffffffff91826146ce838284166123fe565b9160581c16106107e4576147589161474291600243016001614703876001600160a01b03166000526041602052604060002090565b0155614722856001600160a01b03166000526041602052604060002090565b8181540190551661473860455463ffffffff1690565b0163ffffffff1690565b63ffffffff1663ffffffff196045541617604555565b60455460481c61ffff169081614148575050565b9190805b61477957505050565b6147838183614968565b906001600160a01b03841691821561465457600019926147bf6145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b6147e56145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b614802866001600160a01b0316600052607b602052604060002090565b6001815401905561482186613fb984600052607a602052604060002090565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4614850846141a0565b0180614770565b9290805b6148655750505050565b61486f8184614968565b906001600160a01b0385169182156146545780600019936148ac6145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b6148d26145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b6148ef886001600160a01b0316600052607b602052604060002090565b6001815401905561490e88613fb984600052607a602052604060002090565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a48361493e876141a0565b61494b575b50018061485b565b6113fa614962916000526043602052604060002090565b38614943565b90604051906020820192835260408201526040815261498681610e16565b51902063ffffffff60455460581c169081159081612e9057826149a991066123f0565b6149c981600052607a6020526001600160a01b0360406000205416151590565b156149de5781612e90578260019106016149a9565b92915050565b906149ed61533e565b604554600260ff8260301c16614a028161311d565b0361080e5763ffffffff80821691835183018093116122925760581c16106107e4576105e391614a41565b80518210156127385760209160051b010190565b81516045805463ffffffff19811663ffffffff9182168285160182161782559391929160005b848110614a7657505050505050565b614a808183614a2d565b519081158015614acb575b614aa157614a9b60019286614406565b01614a67565b60046040517f3f6cc768000000000000000000000000000000000000000000000000000000008152fd5b5086845460581c168211614a8b565b15614ae157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6000906040517f713562fe0000000000000000000000000000000000000000000000000000000081523060048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa600091816130ed57506130e95750565b6105e361130d613077565b908092918237016000815290565b6020908260405193849283378101604281520301902090565b91909163ffffffff8080941691160191821161229257565b9493909596989791988415614f6057614bf98382614baf565b614c048682546123fe565b905581614c118483614baf565b5411614f36576045549363ffffffff94614c2d878783166123fe565b868260581c16106107e45760201c60ff16614c4781612b75565b15614f0c5760409a8b519384898c6020830193868646943095614ced968995939192608e9795937f9d13a5ba0000000000000000000000000000000000000000000000000000000088527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000809360601b166004890152601888015260601b166038860152151560f81b604c850152604d840152606d830152151560f81b608d8201520190565b03947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0958681018252614d209082610e4e565b519020614d2c90614fc7565b614d3736878661101a565b614d4091614f8a565b6001600160a01b031673c0ffee06ce3d6689305035601a055a96acd619c68114159081614ef7575b50614ece5715614eae575034614e85575b60455460301c60ff16614d8b8161311d565b60028103614dd3575050505050825103614daa576105e393945061512c565b600485517f991f339f000000000000000000000000000000000000000000000000000000008152fd5b909192939650614de58196959661311d565b60018103614e3d575091614e12614e1e61474293614e38956105e39b9c5193849160208301968791614ba1565b03908101835282610e4e565b519020948416614e3360455463ffffffff1690565b614bc8565b614857565b93949550505050614e4d8161311d565b614e5c576105e393945061500a565b600485517f3f886819000000000000000000000000000000000000000000000000000000008152fd5b60048a517f122d34a8000000000000000000000000000000000000000000000000000000008152fd5b858115614ec4575b614ebf916154ce565b614d79565b603a549150614eb6565b60048c517f73a8ee18000000000000000000000000000000000000000000000000000000008152fd5b9050614f04613f07613077565b141538614d68565b60046040517f7963e2b5000000000000000000000000000000000000000000000000000000008152fd5b60046040517f9a89c66a000000000000000000000000000000000000000000000000000000008152fd5b60046040517f2c5211c6000000000000000000000000000000000000000000000000000000008152fd5b815161049092612b3e9291604103614fbd57614fb9916020820151906060604084015193015160001a90612ccb565b9091565b5050600090600290565b60405160208101917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008352603c820152603c815261500481610e16565b51902090565b91600090815b83811061501e575050505050565b60459081549163ffffffff1963ffffffff93600194858183160116918291161782556001600160a01b0388168015614654576150766145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b61509c6145ba6145b684600052607a6020526001600160a01b0360406000205416151590565b6150b9896001600160a01b0316600052607b602052604060002090565b8581540190556150d789613fb984600052607a602052604060002090565b867fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a483615106886141a0565b615112575b5001615010565b6113fa6113e4615126925463ffffffff1690565b3861510b565b8161513691614a41565b805191615141575050565b600090815b8381106151535750505050565b61515d8183614a2d565b51835260436020526040832090600191827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905501615146565b9061ffff8092166127100391821161229257565b9060ff6151cf826001600160a01b03166000526039602052604060002090565b5416156152fc576152016151f6826001600160a01b03166000526039602052604060002090565b5460181c61ffff1690565b91615236615230615225846001600160a01b03166000526039602052604060002090565b5460081c61ffff1690565b9361519b565b9261525361524b603a5461ffff80971661331f565b612710900490565b61525d83826154ce565b6001600160a01b0384169485615276575b505050505050565b6152ca9361528f6152949361524b936152c2961661331f565b61331f565b926152a96152a4856037546123fe565b603755565b6001600160a01b03166000526036602052604060002090565b9182546123fe565b90557ff2f90295cdb5dafd392bfc62d7868bcc79e8c6164c820c7cc195d6c8cda8e674600080a238808080808061526e565b6000805260396020527f619fcd35f40c77da8aa64d5f98c1fed669135ecc4f245ce6667721b157f7098f805460181c61ffff1692906152369061523090615225565b60455460201c60ff1661535081612b75565b6002810361535b5750565b61536481612b75565b600381036153de5750603d5442106153b4576153aa6402000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff6045541617604555565b6105e36000603d55565b60046040517fb3c03577000000000000000000000000000000000000000000000000000000008152fd5b806153ea600492612b75565b0361542b57603d5442106153b457603e5442106105e35760046040517f0734f1ad000000000000000000000000000000000000000000000000000000008152fd5b60046040517f63a2de0f000000000000000000000000000000000000000000000000000000008152fd5b60455460781c60ff166154a2578080046001148115171561229257340361547857565b60046040517fc288bf8f000000000000000000000000000000000000000000000000000000008152fd5b80156154cb57808004600103612292576105e3906001600160a01b036040541630903390615511565b50565b60455460781c60ff166154ed57906154e59161331f565b340361547857565b80156122ce576105e3916155009161331f565b6001600160a01b0360405416309033905b906000806155bc9460405194602097888701957f23b872dd0000000000000000000000000000000000000000000000000000000087526001600160a01b03938480921660248a015216604488015260648701526064865261557186610e32565b16926040519461558086610dfa565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16155b661424e565b91615660565b805190816155c957505050565b82806155d993830101910161564b565b156155e15750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b908160209103126103045751610490816110ca565b919290156156c15750815115615674575090565b3b1561567d5790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156156d45750805190602001fd5b610d699060405191829162461bcd60e51b83526004830161047f565b60455460281c60ff166157028161311d565b6001810361579357506040517fc61711340000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039190911660248201526020816044816daaeb6d7670e522a718067333cd4e5afa8015611fb35761576c5750565b6154cb9060203d811161578c575b6157848183610e4e565b81019061564b565b503d61577a565b61579c8161311d565b156157a45750565b6daaeb6d7670e522a718067333cd4e803b6157bd575050565b803b15610304576040517f7d3e3dbe000000000000000000000000000000000000000000000000000000008152306004820152733cc6cdda760b79bafa08df41ecfa224f810dceb6602482015260008160448183865af190816158ba575b50156122ce576158a99160209161585d650100000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff6045541617604555565b6040517fc61711340000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0390921660248301529092839190829081906044820190565b03915afa8015611fb35761576c5750565b806158c76158cd92610de6565b8061040e565b3861581b565b600036818037808036817f00000000000000000000000000000000000000000000000000000000000000005af43d82803e1561590d573d90f35b3d90fdfea264697066735822122051e188912b279e2d0277f8541b78b77d258b9598f307032bcdc150b6bccb404764736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x58D3 JUMPI STOP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2CB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0xDE77EB8 EQ PUSH2 0x2C1 JUMPI DUP1 PUSH4 0x1249C58B EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x1D7DF191 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x1FF4CC7D EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x2A55205A EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x3A46B1A8 EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x438B1B4B EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x4402D254 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x449A52F8 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x4A50AA85 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x5066E5C2 EQ PUSH2 0x27B JUMPI DUP1 PUSH4 0x587CDE1E EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x639814E0 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0x6817C76C EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x68FDDA33 EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0x6AD54240 EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x71E6775F EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x8E539E8C EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0x9AB24EB0 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0x9D13A5BA EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xBE172EDF EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0xC3CDA520 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0xCB93C48F EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x203 JUMPI PUSH4 0xFEFA5D72 SUB PUSH2 0xE JUMPI PUSH2 0x2013 JUMP JUMPDEST PUSH2 0x1FD5 JUMP JUMPDEST PUSH2 0x1FB8 JUMP JUMPDEST PUSH2 0x1E9D JUMP JUMPDEST PUSH2 0x1D48 JUMP JUMPDEST PUSH2 0x1C76 JUMP JUMPDEST PUSH2 0x1C0A JUMP JUMPDEST PUSH2 0x1AF2 JUMP JUMPDEST PUSH2 0x1AD4 JUMP JUMPDEST PUSH2 0x1A39 JUMP JUMPDEST PUSH2 0x19D6 JUMP JUMPDEST PUSH2 0x192F JUMP JUMPDEST PUSH2 0x1902 JUMP JUMPDEST PUSH2 0x1786 JUMP JUMPDEST PUSH2 0x176B JUMP JUMPDEST PUSH2 0x172D JUMP JUMPDEST PUSH2 0x152A JUMP JUMPDEST PUSH2 0x1503 JUMP JUMPDEST PUSH2 0x142A JUMP JUMPDEST PUSH2 0x12F8 JUMP JUMPDEST PUSH2 0x123A JUMP JUMPDEST PUSH2 0x1215 JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST PUSH2 0x11D1 JUMP JUMPDEST PUSH2 0x1191 JUMP JUMPDEST PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0xF8D JUMP JUMPDEST PUSH2 0xF62 JUMP JUMPDEST PUSH2 0xF12 JUMP JUMPDEST PUSH2 0xD9B JUMP JUMPDEST PUSH2 0xC93 JUMP JUMPDEST PUSH2 0xB25 JUMP JUMPDEST PUSH2 0xB02 JUMP JUMPDEST PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0xA97 JUMP JUMPDEST PUSH2 0x88C JUMP JUMPDEST PUSH2 0x85C JUMP JUMPDEST PUSH2 0x838 JUMP JUMPDEST PUSH2 0x775 JUMP JUMPDEST PUSH2 0x72C JUMP JUMPDEST PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x596 JUMP JUMPDEST PUSH2 0x493 JUMP JUMPDEST PUSH2 0x309 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND SUB PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 CALLDATALOAD PUSH2 0x349 DUP2 PUSH2 0x2DA JUMP JUMPDEST AND PUSH32 0x2A55205A00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x380 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x3E4 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x3BA JUMPI JUMPDEST POP CODESIZE PUSH2 0x375 JUMP JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 SWAP2 POP EQ CODESIZE PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 DUP2 EQ SWAP2 POP PUSH2 0x3AC JUMP JUMPDEST PUSH1 0x0 SWAP2 SUB SLT PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x42C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x41C JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 SWAP4 PUSH2 0x478 DUP2 MLOAD DUP1 SWAP3 DUP2 DUP8 MSTORE DUP8 DUP1 DUP9 ADD SWAP2 ADD PUSH2 0x419 JUMP JUMPDEST ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x490 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x43C JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x593 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP1 PUSH1 0x78 SLOAD PUSH2 0x4B6 DUP2 PUSH2 0x396E JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0x54B JUMPI POP PUSH1 0x1 EQ PUSH2 0x4F0 JUMPI JUMPDEST PUSH2 0x4EC DUP6 PUSH2 0x4E0 DUP2 DUP8 SUB DUP3 PUSH2 0xE4E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x47F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP3 POP PUSH1 0x78 DUP4 MSTORE PUSH32 0x8DC6FB69531D98D70DC0420E638D2DFD04E09E1EC783EDE9AAC77DA9C5A0DAC4 JUMPDEST DUP3 DUP5 LT PUSH2 0x533 JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x4E0 DUP3 PUSH2 0x4EC PUSH2 0x4D0 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x518 JUMP JUMPDEST DUP7 SWAP6 POP PUSH2 0x4EC SWAP7 SWAP4 POP PUSH1 0x20 SWAP3 POP PUSH2 0x4E0 SWAP5 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 SWAP4 PUSH2 0x4D0 JUMP JUMPDEST DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0x5B4 PUSH1 0x4 CALLDATALOAD PUSH2 0x24C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH2 0x5E3 DUP3 PUSH2 0x5C5 JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x602 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x60E DUP3 PUSH2 0x56F0 JUMP JUMPDEST PUSH2 0x617 DUP2 PUSH2 0x249F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND DUP1 SWAP2 DUP6 AND EQ PUSH2 0x6C2 JUMPI CALLER EQ SWAP1 DUP2 ISZERO PUSH2 0x6B0 JUMPI JUMPDEST POP ISZERO PUSH2 0x646 JUMPI PUSH2 0x644 SWAP2 PUSH2 0x3C79 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH2 0x6BC SWAP2 POP CALLER SWAP1 PUSH2 0x3CFB JUMP JUMPDEST CODESIZE PUSH2 0x635 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x33 SLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x756 JUMPI JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 PUSH1 0x3 PUSH1 0xFF PUSH1 0x45 SLOAD PUSH1 0x30 SHR AND PUSH2 0x76D DUP2 PUSH2 0x311D JUMP JUMPDEST EQ SWAP1 POP PUSH2 0x749 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH2 0x78C PUSH1 0x3A SLOAD PUSH2 0x5455 JUMP JUMPDEST PUSH2 0x794 PUSH2 0x533E JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0xFF DUP2 PUSH1 0x30 SHR AND PUSH2 0x7A7 DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH2 0x80E JUMPI PUSH1 0x45 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 DUP4 AND PUSH1 0x1 ADD DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 PUSH1 0x45 SLOAD SWAP2 DUP2 DUP4 PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI PUSH2 0x644 SWAP2 AND CALLER PUSH2 0x4406 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x5FD48F9100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x64151C7500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH4 0xFFFFFFFF PUSH1 0x45 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH2 0x644 PUSH1 0x4 CALLDATALOAD PUSH2 0x877 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x887 DUP3 PUSH1 0x3A SLOAD PUSH2 0x54CE JUMP JUMPDEST PUSH2 0x4697 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x593 JUMPI PUSH1 0x1 PUSH2 0x8B8 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xA41 JUMPI PUSH1 0x1 PUSH2 0x8EF CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SLOAD NUMBER GT ISZERO PUSH2 0xA17 JUMPI PUSH2 0x989 DUP3 PUSH2 0x9C6 SWAP4 BLOCKHASH SWAP1 DUP2 ISZERO PUSH2 0x9C9 JUMPI JUMPDEST POP DUP5 PUSH1 0x1 PUSH2 0x92A CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SSTORE DUP5 PUSH2 0x94A CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x45 SLOAD PUSH1 0x48 SHR PUSH2 0xFFFF AND SWAP3 PUSH2 0x983 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF PUSH1 0x45 SLOAD AND PUSH1 0x45 SSTORE JUMP JUMPDEST CALLER PUSH2 0x476C JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF PUSH11 0xFFFF000000000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x48 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST DUP1 RETURN JUMPDEST PUSH2 0x9F9 SWAP2 POP PUSH1 0xFF AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 NUMBER AND PUSH2 0x23FE JUMP JUMPDEST NUMBER DUP2 LT ISZERO PUSH2 0xA09 JUMPI JUMPDEST BLOCKHASH CODESIZE PUSH2 0x909 JUMP JUMPDEST PUSH2 0xA12 SWAP1 PUSH2 0x240B JUMP JUMPDEST PUSH2 0xA02 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x93C4A00300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x9890AF6000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xA83 DUP2 PUSH2 0x5C5 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0xA90 DUP2 PUSH2 0x5C5 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH2 0x644 PUSH2 0xAA8 CALLDATASIZE PUSH2 0xA6B JUMP JUMPDEST SWAP2 PUSH2 0xAB2 CALLER PUSH2 0x56F0 JUMP JUMPDEST PUSH2 0xAC4 PUSH2 0xABF DUP5 CALLER PUSH2 0x3DF0 JUMP JUMPDEST PUSH2 0x3D7F JUMP JUMPDEST PUSH2 0x3EBD JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x40 PUSH2 0x2710 PUSH2 0xAF4 PUSH2 0xFFFF PUSH1 0x45 SLOAD PUSH1 0x38 SHR AND PUSH1 0x24 CALLDATALOAD PUSH2 0x331F JUMP JUMPDEST DIV DUP2 MLOAD SWAP1 ADDRESS DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0xB1D PUSH2 0x2D4D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xB42 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0xDF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 NUMBER DUP2 LT ISZERO PUSH2 0xC4F JUMPI PUSH2 0xB71 PUSH2 0xB88 SWAP2 PUSH2 0x2FE7 JUMP JUMPDEST DUP3 SLOAD SWAP1 PUSH1 0x0 SWAP1 DUP3 PUSH1 0x5 DUP2 GT PUSH2 0xBE6 JUMPI JUMPDEST POP DUP5 PUSH2 0x2AC8 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0xBBB JUMPI POP POP PUSH1 0x20 PUSH1 0x0 JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST PUSH2 0xBDA PUSH2 0xBE1 SWAP2 PUSH2 0xBCD PUSH1 0x20 SWAP5 PUSH2 0x2438 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x20 SHR SWAP1 JUMP JUMPDEST PUSH2 0xB95 JUMP JUMPDEST DUP1 PUSH2 0xBF6 PUSH2 0xBFC SWAP3 SWAP6 SWAP4 SWAP6 PUSH2 0x2E95 JUMP JUMPDEST SWAP1 PUSH2 0x2447 JUMP JUMPDEST SWAP1 PUSH2 0xC27 PUSH2 0xC1E PUSH2 0xC14 DUP5 DUP10 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 JUMP JUMPDEST SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP6 AND LT ISZERO PUSH2 0xC3D JUMPI POP SWAP2 JUMPDEST CODESIZE PUSH2 0xB81 JUMP JUMPDEST SWAP3 SWAP2 POP PUSH2 0xC49 SWAP1 PUSH2 0x23F0 JUMP JUMPDEST SWAP1 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436865636B706F696E74733A20626C6F636B206E6F7420796574206D696E6564 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH2 0xCA1 CALLDATASIZE PUSH2 0xA6B JUMP JUMPDEST PUSH2 0xCAA CALLER PUSH2 0x56F0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 ADD SWAP4 DUP4 DUP6 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP7 GT OR PUSH2 0xD6D JUMPI PUSH2 0xCF7 SWAP5 PUSH1 0x40 MSTORE PUSH1 0x0 DUP5 MSTORE PUSH2 0xCDA CALLER PUSH2 0x56F0 JUMP JUMPDEST PUSH2 0xCE7 PUSH2 0xABF DUP5 CALLER PUSH2 0x3DF0 JUMP JUMPDEST PUSH2 0xCF2 DUP4 DUP4 DUP4 PUSH2 0x3EBD JUMP JUMPDEST PUSH2 0x427E JUMP JUMPDEST ISZERO PUSH2 0xCFE JUMPI STOP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xD8A DUP2 PUSH2 0x5C5 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD PUSH2 0x490 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x644 PUSH2 0xDB2 PUSH2 0xDAA CALLDATASIZE PUSH2 0xD72 JUMP JUMPDEST DUP2 SWAP4 SWAP2 PUSH2 0x51AF JUMP JUMPDEST PUSH2 0x4512 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x5E3 DUP3 PUSH2 0xDFA JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD6D JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x304 JUMPI DUP1 CALLDATALOAD SWAP2 PUSH2 0xECB DUP4 PUSH2 0xE9C JUMP JUMPDEST SWAP3 PUSH2 0xED9 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xE4E JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP3 DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x304 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xF03 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xF2A DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x304 JUMPI PUSH2 0xF4E PUSH2 0x644 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xEB4 JUMP JUMPDEST SWAP1 PUSH2 0xF5D PUSH1 0x3A SLOAD DUP4 MLOAD SWAP1 PUSH2 0x54CE JUMP JUMPDEST PUSH2 0x49E4 JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH2 0x644 PUSH1 0x4 CALLDATALOAD PUSH2 0xF7D DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xDB2 DUP3 PUSH1 0x3A SLOAD PUSH2 0x54CE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xFA5 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x304 JUMPI PUSH2 0xFC9 PUSH2 0x644 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xEB4 JUMP JUMPDEST SWAP1 PUSH2 0xF5D PUSH1 0x44 CALLDATALOAD PUSH2 0xFD9 DUP2 PUSH2 0x5C5 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x51AF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD6D JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x1026 DUP3 PUSH2 0xFE0 JUMP JUMPDEST SWAP2 PUSH2 0x1034 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0xE4E JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x304 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x304 JUMPI DUP2 PUSH1 0x20 PUSH2 0x490 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x101A JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x304 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x304 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x6 SHL ADD ADD GT PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH1 0xE4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH2 0xFFFF DUP2 AND SUB PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH2 0x104 CALLDATALOAD SWAP1 PUSH2 0x5E3 DUP3 PUSH2 0x10B0 JUMP JUMPDEST DUP1 ISZERO ISZERO SUB PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH2 0x124 CALLDATALOAD SWAP1 PUSH2 0x5E3 DUP3 PUSH2 0x10CA JUMP JUMPDEST PUSH2 0x144 CALLDATALOAD SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x304 JUMPI JUMP JUMPDEST PUSH2 0x160 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x304 JUMPI PUSH2 0x1120 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1051 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x304 JUMPI PUSH2 0x1138 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1051 JUMP JUMPDEST SWAP1 PUSH1 0xA4 CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x304 JUMPI PUSH2 0x1154 PUSH2 0x644 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x106C JUMP JUMPDEST PUSH2 0x115C PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x1164 PUSH2 0x109D JUMP JUMPDEST SWAP2 PUSH2 0x116D PUSH2 0x10BC JUMP JUMPDEST SWAP4 PUSH2 0x1176 PUSH2 0x10D4 JUMP JUMPDEST SWAP6 PUSH2 0x117F PUSH2 0x10E2 JUMP JUMPDEST SWAP8 PUSH1 0x84 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x3127 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH2 0x11B0 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH1 0x0 MSTORE PUSH1 0xDE DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH2 0x644 PUSH1 0x4 CALLDATALOAD PUSH2 0x11F1 DUP2 PUSH2 0x5C5 JUMP JUMPDEST CALLER PUSH2 0x206D JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0x5B4 PUSH1 0x4 CALLDATALOAD PUSH2 0x249F JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0xFFFF PUSH1 0x45 SLOAD PUSH1 0x48 SHR AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3A SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x304 JUMPI DUP1 CALLDATALOAD SWAP2 PUSH2 0x126F DUP4 PUSH2 0xE9C JUMP JUMPDEST SWAP3 PUSH2 0x127D PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xE4E JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP3 DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x304 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x12A7 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0x12B5 DUP2 PUSH2 0x5C5 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x304 JUMPI PUSH2 0x12EB SWAP2 PUSH1 0x4 ADD PUSH2 0x1258 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0x490 DUP2 PUSH2 0x10CA JUMP JUMPDEST PUSH2 0x1301 CALLDATASIZE PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH2 0x131D PUSH2 0x130D PUSH2 0x4B25 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x4ADA JUMP JUMPDEST PUSH1 0x45 DUP1 SLOAD SWAP3 PUSH1 0xFF DUP5 PUSH1 0x30 SHR AND PUSH2 0x1332 DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH2 0x80E JUMPI PUSH2 0x134C SWAP4 DUP4 MLOAD PUSH4 0xFFFFFFFF SWAP6 DUP7 SWAP2 DUP3 DUP5 AND PUSH2 0x23FE JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI DUP3 MLOAD SWAP3 PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1365 JUMPI STOP JUMPDEST DUP1 DUP4 PUSH2 0x13C5 PUSH2 0x1386 PUSH2 0x1379 PUSH1 0x1 SWAP6 DUP8 PUSH2 0x4A2D JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP10 PUSH2 0x13A4 PUSH2 0x1398 DUP11 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x13BE DUP2 PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF NOT PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST AND SWAP1 PUSH2 0x4406 JUMP JUMPDEST PUSH2 0x13D0 JUMPI JUMPDEST ADD PUSH2 0x135C JUMP JUMPDEST PUSH2 0x1425 PUSH2 0x13FA PUSH2 0x13E4 DUP8 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x13CA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1442 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH2 0x144F DUP3 PUSH2 0x10CA JUMP JUMPDEST PUSH2 0x145A PUSH1 0x3A SLOAD PUSH2 0x5455 JUMP JUMPDEST PUSH2 0x1462 PUSH2 0x533E JUMP JUMPDEST PUSH1 0x45 SLOAD SWAP1 PUSH1 0x3 PUSH1 0xFF DUP4 PUSH1 0x30 SHR AND PUSH2 0x1478 DUP2 PUSH2 0x311D JUMP JUMPDEST SUB PUSH2 0x80E JUMPI PUSH1 0x45 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP4 DUP5 AND PUSH1 0x1 ADD DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 PUSH1 0x45 SLOAD SWAP3 DUP2 DUP5 PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI PUSH2 0x14B6 SWAP3 AND SWAP1 PUSH2 0x4406 JUMP JUMPDEST PUSH2 0x14E9 JUMPI JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x14E6 PUSH2 0x14D0 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0x0 MSTORE PUSH1 0x44 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE STOP JUMPDEST PUSH2 0x14FE PUSH2 0x13FA PUSH2 0x13E4 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x14BB JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0xB1D PUSH1 0x4 CALLDATALOAD PUSH2 0x1525 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x3BAA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP1 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x304 JUMPI PUSH2 0x1557 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x1258 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x304 JUMPI PUSH2 0x156F SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xEB4 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 PUSH2 0x157C DUP5 PUSH2 0x10CA JUMP JUMPDEST PUSH2 0x1584 PUSH2 0x4B96 JUMP JUMPDEST DUP1 MLOAD SWAP3 PUSH1 0x45 DUP1 SLOAD PUSH1 0x2 PUSH1 0xFF DUP3 PUSH1 0x30 SHR AND PUSH2 0x159D DUP2 PUSH2 0x311D JUMP JUMPDEST SUB PUSH2 0x1704 JUMPI PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP2 AND SWAP1 DUP3 PUSH2 0x15B8 DUP9 MLOAD DUP5 PUSH2 0x23FE JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x16DB JUMPI DUP6 MLOAD DUP8 SUB PUSH2 0x16B2 JUMPI SWAP1 PUSH2 0x15EA SWAP2 DUP2 DUP9 AND ADD AND PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF NOT PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP6 DUP2 LT PUSH2 0x15F6 JUMPI STOP JUMPDEST PUSH2 0x1600 DUP2 DUP7 PUSH2 0x4A2D JUMP JUMPDEST MLOAD ISZERO DUP1 ISZERO PUSH2 0x168C JUMPI JUMPDEST PUSH2 0x1663 JUMPI DUP1 DUP8 PUSH2 0x1632 PUSH2 0x1621 PUSH2 0x1379 PUSH1 0x1 SWAP6 DUP10 PUSH2 0x4A2D JUMP JUMPDEST PUSH2 0x162B DUP5 DUP11 PUSH2 0x4A2D JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x4406 JUMP JUMPDEST PUSH2 0x163D JUMPI JUMPDEST ADD PUSH2 0x15ED JUMP JUMPDEST PUSH2 0x165E PUSH2 0x13FA PUSH2 0x164D DUP4 DUP10 PUSH2 0x4A2D JUMP JUMPDEST MLOAD PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1637 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH32 0x3F6CC76800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP PUSH2 0x1697 DUP2 DUP7 PUSH2 0x4A2D JUMP JUMPDEST MLOAD DUP3 SLOAD PUSH2 0x16AC SWAP1 PUSH1 0x58 SHR PUSH4 0xFFFFFFFF AND PUSH2 0xC1E JUMP JUMPDEST LT PUSH2 0x1609 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x991F339F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x5FD48F9100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH32 0x64151C7500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1752 DUP2 PUSH2 0x5C5 JUMP JUMPDEST AND PUSH1 0x0 MSTORE PUSH1 0xE1 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0x5B4 PUSH2 0x3077 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD NUMBER DUP2 LT ISZERO PUSH2 0x18BE JUMPI PUSH2 0x17AE PUSH2 0x17C5 SWAP2 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0xE0 SLOAD SWAP1 PUSH1 0x0 SWAP1 DUP3 PUSH1 0x5 DUP2 GT PUSH2 0x1852 JUMPI JUMPDEST POP PUSH2 0x2A4C JUMP JUMPDEST DUP1 PUSH2 0x17F7 JUMPI POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x0 JUMPDEST PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST PUSH2 0x184D PUSH2 0xBDA PUSH2 0x1823 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 PUSH2 0x2438 JUMP JUMPDEST PUSH1 0xE0 PUSH1 0x0 MSTORE PUSH32 0x8B43726243EEAF8325404568ABECE3264B546CF9D88671F09C24C87045FCCB4F ADD SWAP1 JUMP JUMPDEST PUSH2 0x17EB JUMP JUMPDEST DUP1 PUSH2 0xBF6 PUSH2 0x1862 SWAP3 SWAP6 SWAP4 SWAP6 PUSH2 0x2E95 JUMP JUMPDEST PUSH1 0xE0 PUSH1 0x0 MSTORE SWAP1 PUSH2 0x1896 PUSH2 0xC1E PUSH32 0x8B43726243EEAF8325404568ABECE3264B546CF9D88671F09C24C87045FCCB4F DUP5 ADD PUSH2 0xC14 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP6 AND LT ISZERO PUSH2 0x18AC JUMPI POP SWAP2 JUMPDEST CODESIZE PUSH2 0x17BF JUMP JUMPDEST SWAP3 SWAP2 POP PUSH2 0x18B8 SWAP1 PUSH2 0x23F0 JUMP JUMPDEST SWAP1 PUSH2 0x18A6 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x566F7465733A20626C6F636B206E6F7420796574206D696E6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH2 0x644 PUSH1 0x4 CALLDATALOAD PUSH2 0x1929 PUSH1 0x24 CALLDATALOAD PUSH2 0x1923 DUP2 PUSH2 0x5C5 JUMP JUMPDEST DUP3 PUSH2 0x51AF JUMP JUMPDEST CALLER PUSH2 0x4512 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x593 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP1 PUSH1 0x79 SLOAD PUSH2 0x1952 DUP2 PUSH2 0x396E JUMP JUMPDEST DUP1 DUP6 MSTORE SWAP2 PUSH1 0x1 SWAP2 DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0x54B JUMPI POP PUSH1 0x1 EQ PUSH2 0x197B JUMPI PUSH2 0x4EC DUP6 PUSH2 0x4E0 DUP2 DUP8 SUB DUP3 PUSH2 0xE4E JUMP JUMPDEST SWAP3 POP PUSH1 0x79 DUP4 MSTORE PUSH32 0x957BBDC7FAD0DEC56E7C96AF4A3AB63AA9DAF934A52FFCE891945B7FB622D791 JUMPDEST DUP3 DUP5 LT PUSH2 0x19BE JUMPI POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x4E0 DUP3 PUSH2 0x4EC PUSH2 0x4D0 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x20 DUP6 DUP8 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x19A3 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x19FB DUP2 PUSH2 0x5C5 JUMP JUMPDEST AND PUSH1 0x0 MSTORE PUSH1 0xDF PUSH1 0x20 MSTORE PUSH1 0x20 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1A30 PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x266F JUMP JUMPDEST AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x100 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1A52 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x304 JUMPI PUSH2 0x1A73 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xEB4 JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH2 0x1A80 DUP2 PUSH2 0x10CA JUMP JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH2 0x1A8D DUP3 PUSH2 0x10CA JUMP JUMPDEST PUSH1 0xE4 CALLDATALOAD SWAP5 DUP5 DUP7 GT PUSH2 0x304 JUMPI CALLDATASIZE PUSH1 0x23 DUP8 ADD SLT ISZERO PUSH2 0x304 JUMPI DUP6 PUSH1 0x4 ADD CALLDATALOAD SWAP5 DUP6 GT PUSH2 0x304 JUMPI CALLDATASIZE PUSH1 0x24 DUP7 DUP9 ADD ADD GT PUSH2 0x304 JUMPI PUSH1 0x24 PUSH2 0x644 SWAP7 ADD SWAP4 PUSH1 0xA4 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD SWAP3 PUSH2 0x4BE0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH2 0x644 PUSH1 0x4 CALLDATALOAD PUSH2 0x1929 DUP2 PUSH1 0x3A SLOAD PUSH2 0x54CE JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1B0F DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x1B1B DUP2 PUSH2 0x10CA JUMP JUMPDEST PUSH2 0x1B24 DUP3 PUSH2 0x56F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP2 DUP3 CALLER EQ PUSH2 0x1BC6 JUMPI DUP2 PUSH2 0x1B64 PUSH2 0x1B94 SWAP3 CALLER PUSH1 0x0 MSTORE PUSH1 0x7D PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0xFF PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP4 SLOAD AND SWAP2 ISZERO ISZERO AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE CALLER SWAP1 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP1 PUSH1 0x20 SWAP1 LOG3 STOP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1C27 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1C34 DUP3 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH1 0x64 CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x304 JUMPI CALLDATASIZE PUSH1 0x23 DUP6 ADD SLT ISZERO PUSH2 0x304 JUMPI PUSH2 0x1C6C PUSH2 0xCF7 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x24 DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x101A JUMP JUMPDEST SWAP3 PUSH2 0xCDA CALLER PUSH2 0x56F0 JUMP JUMPDEST PUSH2 0x1C7F CALLDATASIZE PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH2 0x1C88 PUSH2 0x4B96 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x45 SLOAD SWAP3 PUSH1 0xFF DUP5 PUSH1 0x30 SHR AND SWAP4 PUSH2 0x1CA0 DUP6 PUSH2 0x311D JUMP JUMPDEST PUSH1 0x1 DUP1 SWAP6 SUB PUSH2 0x80E JUMPI PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 DUP2 PUSH2 0x1CBD DUP8 DUP6 PUSH2 0x23FE JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI PUSH2 0x1CE6 SWAP2 DUP2 DUP7 AND ADD AND PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF NOT PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x1CEF NUMBER PUSH2 0x2438 JUMP JUMPDEST BLOCKHASH PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1CFC JUMPI STOP JUMPDEST DUP1 PUSH2 0x1D08 DUP8 SWAP3 DUP5 PUSH2 0x4968 JUMP JUMPDEST DUP5 PUSH2 0x1D1F DUP3 PUSH2 0x1D1A PUSH2 0x1379 DUP7 DUP12 PUSH2 0x4A2D JUMP JUMPDEST PUSH2 0x4406 JUMP JUMPDEST PUSH2 0x1D2B JUMPI JUMPDEST POP ADD PUSH2 0x1CF3 JUMP JUMPDEST PUSH2 0x13FA PUSH2 0x1D42 SWAP2 PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST CODESIZE PUSH2 0x1D24 JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1D65 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH1 0xFF DUP5 AND DUP5 SUB PUSH2 0x304 JUMPI DUP1 TIMESTAMP GT PUSH2 0x1E59 JUMPI PUSH2 0x1E27 PUSH2 0x1E54 SWAP2 PUSH2 0x644 SWAP6 PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1E0F DUP3 PUSH2 0x1DE3 PUSH1 0x20 DUP3 ADD SWAP6 DUP10 DUP12 DUP9 PUSH1 0x60 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x80 DUP4 ADD SWAP7 PUSH32 0xE48329057BFD03D55E49B547132E39CFFD9C1820AD7B9D4C5307691425D15ADF DUP5 MSTORE AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD DUP5 MSTORE DUP4 PUSH2 0xE4E JUMP JUMPDEST PUSH2 0x1E22 PUSH1 0xA4 CALLDATALOAD SWAP4 PUSH1 0x84 CALLDATALOAD SWAP4 MLOAD SWAP1 KECCAK256 PUSH2 0x2DF4 JUMP JUMPDEST PUSH2 0x2B2F JUMP JUMPDEST SWAP2 PUSH2 0x1E4E DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0xE1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD SWAP2 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE JUMP JUMPDEST EQ PUSH2 0x2022 JUMP JUMPDEST PUSH2 0x206D JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x566F7465733A207369676E617475726520657870697265640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1ED9 PUSH2 0x1ED4 DUP3 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH32 0x1284A4600000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 DUP2 PUSH1 0x24 DUP2 ADDRESS GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1FB3 JUMPI DUP3 SWAP2 PUSH2 0x1F2C JUMPI JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x4EC DUP5 DUP3 PUSH2 0x47F JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 DUP4 DUP4 RETURNDATACOPY PUSH2 0x1F3D DUP2 DUP4 PUSH2 0xE4E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x1FAB JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x1FAF JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1FAB JUMPI DUP1 MLOAD SWAP3 PUSH2 0x1F74 DUP5 PUSH2 0xFE0 JUMP JUMPDEST SWAP3 PUSH2 0x1F82 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xE4E JUMP JUMPDEST DUP5 DUP5 MSTORE PUSH1 0x20 DUP6 DUP5 ADD ADD GT PUSH2 0x593 JUMPI POP PUSH2 0x4EC SWAP3 PUSH2 0x1FA5 SWAP2 PUSH1 0x20 DUP1 DUP6 ADD SWAP2 ADD PUSH2 0x419 JUMP JUMPDEST CODESIZE PUSH2 0x1F1E JUMP JUMPDEST DUP3 DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH2 0x2CBF JUMP JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x3E8 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x304 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x304 JUMPI PUSH1 0x20 PUSH2 0x2009 PUSH1 0x4 CALLDATALOAD PUSH2 0x1FF7 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x2004 DUP3 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x3CFB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH2 0x644 PUSH2 0x887 PUSH2 0xDAA CALLDATASIZE PUSH2 0xD72 JUMP JUMPDEST ISZERO PUSH2 0x2029 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x566F7465733A20696E76616C6964206E6F6E6365000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x20F8 DUP2 DUP5 AND SWAP4 PUSH1 0x0 SWAP5 DUP1 DUP7 MSTORE PUSH1 0xDE PUSH1 0x20 MSTORE PUSH1 0x40 DUP7 KECCAK256 SWAP4 PUSH2 0x20CA DUP2 DUP7 SLOAD AND SWAP9 DUP10 SWAP7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST DUP6 AND SWAP7 DUP8 SWAP2 PUSH32 0x3134E8A2E6D97E929A7E54011EA5485D7D196DD5F0BA4D4EF95803E8E3FC257F DUP9 DUP1 LOG4 PUSH2 0x3BAA JUMP JUMPDEST SWAP3 DUP5 DUP3 EQ ISZERO DUP1 PUSH2 0x2297 JUMPI JUMPDEST PUSH2 0x210F JUMPI JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x2184 JUMPI JUMPDEST POP POP DUP3 PUSH2 0x2124 JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x2108 JUMP JUMPDEST PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 SWAP2 PUSH2 0x2166 PUSH2 0x216B SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0xDF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x2559 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 LOG2 CODESIZE DUP1 DUP1 PUSH2 0x211D JUMP JUMPDEST DUP1 DUP3 PUSH1 0x40 SWAP3 MSTORE PUSH1 0xDF PUSH1 0x20 MSTORE KECCAK256 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH2 0x21B7 DUP4 PUSH2 0x266F JUMP JUMPDEST AND DUP6 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x2292 JUMPI PUSH2 0x21CB NUMBER PUSH2 0x2FE7 JUMP JUMPDEST SWAP1 DUP3 DUP2 GT PUSH2 0x2228 JUMPI PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 SWAP4 PUSH2 0x221E SWAP3 DUP5 PUSH2 0x2205 SWAP4 AND SWAP2 PUSH2 0x2949 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP6 AND DUP4 MSTORE SWAP4 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP2 DUP3 SWAP2 SWAP1 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG2 CODESIZE DUP1 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2032 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x3234206269747300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH2 0x23C1 JUMP JUMPDEST POP DUP4 ISZERO ISZERO PUSH2 0x2103 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND SWAP3 AND DUP3 DUP2 EQ ISZERO DUP1 PUSH2 0x23B9 JUMPI JUMPDEST PUSH2 0x22C1 JUMPI POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x232B JUMPI JUMPDEST POP DUP2 PUSH2 0x22D2 JUMPI JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2318 PUSH2 0x2313 PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0xDF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x24FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 LOG2 JUMP JUMPDEST DUP1 PUSH1 0x0 MSTORE PUSH1 0xDF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH2 0x2360 DUP4 PUSH2 0x266F JUMP JUMPDEST AND PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x2292 JUMPI PUSH2 0x2376 NUMBER PUSH2 0x2FE7 JUMP JUMPDEST SWAP1 DUP3 DUP2 GT PUSH2 0x2228 JUMPI PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 SWAP4 PUSH2 0x23B0 SWAP3 DUP5 PUSH2 0x2205 SWAP4 AND SWAP2 PUSH2 0x2949 JUMP JUMPDEST SUB SWAP1 LOG2 CODESIZE PUSH2 0x22C7 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x22B8 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 ADD SWAP2 DUP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x0 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST ISZERO PUSH2 0x245B JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND PUSH2 0x490 DUP2 ISZERO ISZERO PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x24E4 PUSH2 0x1ED4 DUP3 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH1 0x7C PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 JUMP JUMPDEST SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH2 0x2527 DUP3 PUSH2 0x266F JUMP JUMPDEST AND PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2292 JUMPI PUSH2 0x253C NUMBER PUSH2 0x2FE7 JUMP JUMPDEST SWAP2 DUP5 DUP3 GT PUSH2 0x2228 JUMPI DUP5 SWAP3 DUP4 PUSH2 0x2552 SWAP4 AND SWAP2 PUSH2 0x2949 JUMP JUMPDEST SWAP4 AND SWAP3 AND SWAP1 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP2 DUP4 PUSH2 0x2582 DUP4 PUSH2 0x266F JUMP JUMPDEST AND SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2292 JUMPI PUSH2 0x253C NUMBER PUSH2 0x2FE7 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 PUSH2 0x25BD PUSH2 0x2625 JUMP JUMPDEST AND PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2292 JUMPI PUSH2 0x25D2 NUMBER PUSH2 0x2FE7 JUMP JUMPDEST SWAP1 DUP4 DUP2 GT PUSH2 0x2228 JUMPI DUP4 SWAP2 DUP3 PUSH2 0x2552 SWAP3 AND SWAP1 PUSH2 0x280A JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 PUSH2 0x260F PUSH2 0x2625 JUMP JUMPDEST AND PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x2292 JUMPI PUSH2 0x25D2 NUMBER PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0xE0 SLOAD PUSH1 0x0 SWAP1 DUP1 PUSH2 0x2637 JUMPI POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DUP2 ADD GT PUSH2 0x2292 JUMPI PUSH1 0xE0 PUSH32 0x8B43726243EEAF8325404568ABECE3264B546CF9D88671F09C24C87045FCCB4E SWAP3 MSTORE ADD SLOAD PUSH1 0x20 SHR SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP2 DUP2 PUSH2 0x2681 JUMPI POP POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT SWAP3 DUP3 DUP5 DUP2 ADD GT PUSH2 0x2292 JUMPI PUSH1 0x20 SWAP2 DUP2 MSTORE KECCAK256 ADD ADD SLOAD PUSH1 0x20 SHR SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xE0 SLOAD SWAP1 PUSH9 0x10000000000000000 DUP3 LT ISZERO PUSH2 0xD6D JUMPI PUSH1 0x1 DUP3 ADD DUP1 PUSH1 0xE0 SSTORE DUP3 LT ISZERO PUSH2 0x2738 JUMPI PUSH1 0xE0 PUSH1 0x0 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD SWAP1 SWAP2 SHL PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR PUSH32 0x8B43726243EEAF8325404568ABECE3264B546CF9D88671F09C24C87045FCCB4F SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH2 0x269D JUMP JUMPDEST SWAP1 DUP2 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0xD6D JUMPI PUSH1 0x1 DUP2 ADD DUP1 DUP5 SSTORE DUP2 LT ISZERO PUSH2 0x2738 JUMPI PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 SWAP1 KECCAK256 DUP3 MLOAD SWAP3 DUP5 ADD MLOAD SWAP1 SWAP4 SHL PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ADD SSTORE JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 SWAP4 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE DUP2 SHR SWAP2 ADD MSTORE JUMP JUMPDEST ISZERO PUSH2 0x27C6 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436865636B706F696E743A20696E76616C6964206B6579000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0xE0 SLOAD SWAP2 SWAP3 SWAP2 DUP1 ISZERO PUSH2 0x290A JUMPI PUSH2 0x28BB SWAP2 DUP2 DUP6 PUSH2 0x2832 PUSH2 0x282D PUSH2 0x1823 PUSH1 0x20 SWAP7 PUSH2 0x2438 JUMP JUMPDEST PUSH2 0x278C JUMP JUMPDEST SWAP3 PUSH2 0x2841 DUP5 MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x2858 PUSH4 0xFFFFFFFF SWAP2 DUP3 DUP5 AND SWAP3 DUP4 SWAP2 AND GT ISZERO PUSH2 0x27BF JUMP JUMPDEST PUSH2 0x2869 PUSH2 0xC1E DUP7 MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST SUB PUSH2 0x28BF JUMPI POP PUSH2 0x287E PUSH2 0x1823 PUSH2 0x2898 SWAP4 PUSH2 0x2438 JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH4 0xFFFFFFFF NOT DUP4 SLOAD SWAP3 PUSH1 0x20 SHL AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST SWAP2 SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2905 SWAP2 POP PUSH2 0x28DD PUSH2 0x28D1 PUSH2 0xE8F JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP2 DUP6 ADD MSTORE PUSH2 0x26CC JUMP JUMPDEST PUSH2 0x2898 JUMP JUMPDEST POP PUSH2 0x2943 SWAP1 PUSH2 0x291A PUSH2 0x28D1 PUSH2 0xE8F JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x26CC JUMP JUMPDEST PUSH1 0x0 SWAP2 SWAP1 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 DUP4 DUP3 SLOAD DUP1 ISZERO ISZERO PUSH1 0x0 EQ PUSH2 0x2A12 JUMPI SWAP3 PUSH1 0x20 SWAP3 SWAP2 DUP5 PUSH2 0x297F PUSH2 0x282D PUSH2 0x2972 PUSH2 0x28BB SWAP9 PUSH2 0x2438 JUMP JUMPDEST DUP6 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0x298E DUP6 MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x29A5 PUSH4 0xFFFFFFFF SWAP2 DUP3 DUP5 AND SWAP3 DUP4 SWAP2 AND GT ISZERO PUSH2 0x27BF JUMP JUMPDEST PUSH2 0x29B6 PUSH2 0xC1E DUP8 MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST SUB PUSH2 0x29CC JUMPI POP PUSH2 0x2898 SWAP3 PUSH2 0xBCD PUSH2 0x287E SWAP3 PUSH2 0x2438 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2905 SWAP2 PUSH2 0x29EA PUSH2 0x29DE PUSH2 0xE8F JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP3 DUP7 ADD MSTORE PUSH2 0x273D JUMP JUMPDEST POP POP PUSH2 0x2943 SWAP2 PUSH2 0x2A23 PUSH2 0x29DE PUSH2 0xE8F JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x273D JUMP JUMPDEST SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x2A5A JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 DUP1 DUP3 AND SWAP1 PUSH1 0x1 DUP2 DUP5 XOR DUP2 SHR DUP4 ADD DUP1 SWAP4 GT PUSH2 0x2292 JUMPI PUSH1 0xE0 PUSH1 0x0 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP5 PUSH32 0x8B43726243EEAF8325404568ABECE3264B546CF9D88671F09C24C87045FCCB4F ADD SLOAD AND SWAP1 DUP7 AND LT PUSH1 0x0 EQ PUSH2 0x2AB5 JUMPI POP POP SWAP2 JUMPDEST SWAP1 PUSH2 0x2A4E JUMP JUMPDEST SWAP1 SWAP4 SWAP3 POP DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2292 JUMPI SWAP1 PUSH2 0x2AAF JUMP JUMPDEST SWAP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x2AD8 JUMPI POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 DUP1 DUP4 AND SWAP1 PUSH1 0x1 DUP2 DUP6 XOR DUP2 SHR DUP4 ADD DUP1 SWAP4 GT PUSH2 0x2292 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP4 ADD SLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP6 AND LT ISZERO PUSH2 0x2B17 JUMPI POP POP SWAP3 JUMPDEST SWAP2 SWAP1 PUSH2 0x2ACB JUMP JUMPDEST SWAP1 SWAP5 SWAP4 POP DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2292 JUMPI SWAP2 PUSH2 0x2B10 JUMP JUMPDEST PUSH1 0x3A SSTORE JUMP JUMPDEST SWAP2 PUSH2 0x490 SWAP4 SWAP2 PUSH2 0x2B3E SWAP4 PUSH2 0x2CCB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x2B84 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x5 GT ISZERO PUSH2 0x2B7F JUMPI JUMP JUMPDEST PUSH2 0x2B46 JUMP JUMPDEST PUSH2 0x2B8D DUP2 PUSH2 0x2B75 JUMP JUMPDEST DUP1 PUSH2 0x2B95 JUMPI POP JUMP JUMPDEST PUSH2 0x2B9E DUP2 PUSH2 0x2B75 JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2BEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0x2BF4 DUP2 PUSH2 0x2B75 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x2C41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2C4D PUSH1 0x3 SWAP3 PUSH2 0x2B75 JUMP JUMPDEST EQ PUSH2 0x2C54 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP3 SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT PUSH2 0x2D41 JUMPI SWAP2 PUSH1 0x80 SWAP5 SWAP4 SWAP2 PUSH1 0xFF PUSH1 0x20 SWAP5 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP5 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 SWAP4 DUP5 SWAP2 DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x1FB3 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2D3B JUMPI SWAP2 SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP POP PUSH1 0x0 SWAP1 PUSH1 0x3 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0xF63DD8159B098696EBB81A400CEA3C4FFBA1938921072285DF391C19C71DCE61 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x2DFC PUSH2 0x2D4D JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xD6D JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x2E90 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x2E57 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2FCF JUMPI DUP1 PUSH2 0x2F68 PUSH2 0x2F61 PUSH2 0x2F57 PUSH2 0x2F4D PUSH2 0x2F43 PUSH2 0x2F39 PUSH2 0x2F2F PUSH2 0x2F25 PUSH1 0x1 PUSH2 0x490 SWAP11 PUSH1 0x0 SWAP1 DUP12 PUSH1 0x80 SHR DUP1 PUSH2 0x2FC3 JUMPI JUMPDEST POP DUP1 PUSH1 0x40 SHR DUP1 PUSH2 0x2FB6 JUMPI JUMPDEST POP DUP1 PUSH1 0x20 SHR DUP1 PUSH2 0x2FA9 JUMPI JUMPDEST POP DUP1 PUSH1 0x10 SHR DUP1 PUSH2 0x2F9C JUMPI JUMPDEST POP DUP1 PUSH1 0x8 SHR DUP1 PUSH2 0x2F8F JUMPI JUMPDEST POP DUP1 PUSH1 0x4 SHR DUP1 PUSH2 0x2F82 JUMPI JUMPDEST POP DUP1 PUSH1 0x2 SHR DUP1 PUSH2 0x2F75 JUMPI JUMPDEST POP DUP3 SHR PUSH2 0x2F6E JUMPI JUMPDEST DUP2 SHR SHL PUSH2 0x2F1E DUP2 DUP12 PUSH2 0x2E86 JUMP JUMPDEST ADD PUSH1 0x1 SHR SWAP1 JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP11 PUSH2 0x2E86 JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP10 PUSH2 0x2E86 JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP9 PUSH2 0x2E86 JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP8 PUSH2 0x2E86 JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP7 PUSH2 0x2E86 JUMP JUMPDEST PUSH2 0x2F1E DUP2 DUP6 PUSH2 0x2E86 JUMP JUMPDEST DUP1 SWAP3 PUSH2 0x2E86 JUMP JUMPDEST SWAP1 PUSH2 0x2FD5 JUMP JUMPDEST DUP2 ADD PUSH2 0x2F11 JUMP JUMPDEST PUSH1 0x2 SWAP2 POP SWAP2 ADD SWAP1 CODESIZE PUSH2 0x2F09 JUMP JUMPDEST PUSH1 0x4 SWAP2 POP SWAP2 ADD SWAP1 CODESIZE PUSH2 0x2EFE JUMP JUMPDEST PUSH1 0x8 SWAP2 POP SWAP2 ADD SWAP1 CODESIZE PUSH2 0x2EF3 JUMP JUMPDEST PUSH1 0x10 SWAP2 POP SWAP2 ADD SWAP1 CODESIZE PUSH2 0x2EE8 JUMP JUMPDEST PUSH1 0x20 SWAP2 POP SWAP2 ADD SWAP1 CODESIZE PUSH2 0x2EDD JUMP JUMPDEST PUSH1 0x40 SWAP2 POP SWAP2 ADD SWAP1 CODESIZE PUSH2 0x2ED2 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x80 SWAP1 CODESIZE PUSH2 0x2EC7 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST SWAP1 DUP1 DUP3 LT ISZERO PUSH2 0x2FE2 JUMPI POP SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP2 GT PUSH2 0x2FF8 JUMPI AND SWAP1 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2033 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x3220626974730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x304 JUMPI MLOAD PUSH2 0x490 DUP2 PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x40 MLOAD PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS STATICCALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x30ED JUMPI JUMPDEST POP PUSH2 0x30E9 JUMPI POP JUMP JUMPDEST SWAP2 POP JUMP JUMPDEST PUSH2 0x310F SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x3116 JUMPI JUMPDEST PUSH2 0x3107 DUP2 DUP4 PUSH2 0xE4E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3062 JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x30E1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x30FD JUMP JUMPDEST PUSH1 0x4 GT ISZERO PUSH2 0x2B7F JUMPI JUMP JUMPDEST SWAP10 SWAP8 SWAP6 SWAP4 SWAP2 SWAP11 SWAP9 SWAP7 SWAP5 SWAP3 SWAP1 SWAP11 PUSH1 0x0 SLOAD SWAP12 PUSH1 0xFF DUP14 PUSH1 0x8 SHR AND ISZERO DUP1 SWAP14 DUP2 SWAP15 PUSH2 0x32B5 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x3295 JUMPI JUMPDEST POP ISZERO PUSH2 0x322B JUMPI PUSH2 0x3193 SWAP12 DUP14 PUSH2 0x318A PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x0 SLOAD AND OR PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x31F5 JUMPI PUSH2 0x3483 JUMP JUMPDEST PUSH2 0x3199 JUMPI JUMP JUMPDEST PUSH2 0x31C6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF PUSH1 0x0 SLOAD AND PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x3226 PUSH2 0x100 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF PUSH1 0x0 SLOAD AND OR PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x3483 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP2 POP DUP2 PUSH2 0x32A7 JUMPI JUMPDEST POP CODESIZE PUSH2 0x314F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH1 0xFF AND EQ CODESIZE PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF DUP3 AND LT SWAP2 POP PUSH2 0x3148 JUMP JUMPDEST PUSH2 0x32CC DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF PUSH7 0xFF000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x30 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x2738 JUMPI PUSH1 0x6 SHL ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH2 0x490 DUP2 PUSH2 0x10B0 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP1 PUSH2 0x3378 DUP2 CALLDATALOAD PUSH2 0x3344 DUP2 PUSH2 0x5C5 JUMP JUMPDEST DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST ADD CALLDATALOAD PUSH2 0x3383 DUP2 PUSH2 0x10B0 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH22 0xFFFF0000000000000000000000000000000000000000 DUP4 SLOAD SWAP3 PUSH1 0xA0 SHL AND SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH9 0x10000000000000000 DUP3 GT PUSH2 0xD6D JUMPI PUSH1 0x38 SLOAD DUP3 PUSH1 0x38 SSTORE DUP1 DUP4 LT PUSH2 0x343C JUMPI JUMPDEST POP PUSH1 0x38 PUSH1 0x0 MSTORE PUSH32 0x38395C5DCEADE9603479B177B68959049485DF8AA97B39F3533039AF5F456199 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x3420 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 DUP3 PUSH2 0x3430 DUP4 SWAP5 DUP7 PUSH2 0x3332 JUMP JUMPDEST ADD SWAP3 ADD SWAP3 ADD SWAP2 SWAP1 PUSH2 0x3413 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x38 DUP2 MSTORE DUP4 PUSH32 0x38395C5DCEADE9603479B177B68959049485DF8AA97B39F3533039AF5F456199 SWAP3 DUP4 ADD SWAP3 ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x3478 JUMPI POP POP PUSH2 0x33E8 JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x346A JUMP JUMPDEST SWAP1 PUSH2 0x3497 SWAP2 SWAP13 SWAP12 SWAP8 SWAP9 SWAP3 SWAP7 SWAP13 SWAP10 SWAP6 SWAP10 PUSH2 0x383C JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND ISZERO PUSH2 0x37A1 JUMPI DUP2 ISZERO SWAP1 DUP2 ISZERO DUP1 PUSH2 0x3798 JUMPI JUMPDEST PUSH2 0x376E JUMPI PUSH2 0x1388 PUSH2 0xFFFF DUP7 AND GT PUSH2 0x3744 JUMPI PUSH2 0x3504 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF PUSH15 0xFFFFFFFF0000000000000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x58 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST ISZERO PUSH2 0x3733 JUMPI POP DUP1 PUSH2 0x3723 JUMPI POP PUSH2 0x3519 DUP4 PUSH2 0x311D JUMP JUMPDEST PUSH1 0x3 DUP4 SUB PUSH2 0x36F9 JUMPI PUSH2 0x352D PUSH2 0x3568 SWAP3 PUSH1 0x3A SSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF PUSH9 0xFFFF00000000000000 PUSH1 0x45 SLOAD SWAP3 PUSH1 0x38 SHL AND SWAP2 AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x3571 DUP2 PUSH2 0x311D JUMP JUMPDEST DUP1 PUSH2 0x36EA JUMPI JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x366D JUMPI JUMPDEST POP PUSH1 0x1 DUP1 SWAP3 ISZERO ISZERO EQ PUSH2 0x3628 JUMPI JUMPDEST DUP4 PUSH2 0x35A0 JUMPI JUMPDEST POP POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 SWAP1 JUMPDEST DUP6 DUP3 LT PUSH2 0x35F4 JUMPI POP POP PUSH2 0x251C SWAP3 SWAP4 PUSH2 0x35BD SWAP2 PUSH2 0x33C9 JUMP JUMPDEST GT PUSH2 0x35CA JUMPI DUP1 CODESIZE DUP1 PUSH2 0x359A JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xFE0C06B700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x3620 DUP3 SWAP5 PUSH2 0x361A PUSH2 0x3613 PUSH1 0x20 PUSH2 0x360D DUP7 SWAP8 DUP13 DUP11 PUSH2 0x3305 JUMP JUMPDEST ADD PUSH2 0x3315 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x23FE JUMP JUMPDEST SWAP4 ADD SWAP1 PUSH2 0x35A6 JUMP JUMPDEST PUSH2 0x3668 PUSH17 0x100000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x3594 JUMP JUMPDEST PUSH2 0x36E4 SWAP1 PUSH2 0x36B0 PUSH16 0x1000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0x40 SLOAD AND OR PUSH1 0x40 SSTORE JUMP JUMPDEST CODESIZE PUSH2 0x3587 JUMP JUMPDEST PUSH2 0x36F3 SWAP1 PUSH2 0x32C3 JUMP JUMPDEST CODESIZE PUSH2 0x3577 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x27BFEAFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x3568 SWAP3 PUSH2 0x2B2A PUSH2 0x352D SWAP3 PUSH1 0x34 SSTORE JUMP JUMPDEST PUSH1 0x33 SSTORE POP PUSH2 0x3568 SWAP2 PUSH2 0x352D SWAP1 PUSH1 0x3A SSTORE JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x44B93BA400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x4CFF63B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP4 ISZERO ISZERO PUSH2 0x34AE JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB8A9EFFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST ISZERO PUSH2 0x37D2 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH2 0x3857 PUSH1 0xFF PUSH1 0x0 SLOAD PUSH1 0x8 SHR AND PUSH2 0x3852 DUP2 PUSH2 0x37CB JUMP JUMPDEST PUSH2 0x37CB JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD6D JUMPI PUSH2 0x387C DUP2 PUSH2 0x3877 PUSH1 0x78 SLOAD PUSH2 0x396E JUMP JUMPDEST PUSH2 0x39C1 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x38BD JUMPI POP DUP2 SWAP1 PUSH2 0x5E3 SWAP5 PUSH1 0x0 SWAP3 PUSH2 0x38B2 JUMPI JUMPDEST POP POP PUSH1 0x0 NOT DUP3 PUSH1 0x1 SHL SWAP3 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x78 SSTORE PUSH2 0x3AA3 JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0x3899 JUMP JUMPDEST SWAP2 SWAP3 SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP5 AND PUSH2 0x390F PUSH1 0x78 PUSH1 0x0 MSTORE PUSH32 0x8DC6FB69531D98D70DC0420E638D2DFD04E09E1EC783EDE9AAC77DA9C5A0DAC4 SWAP1 JUMP JUMPDEST SWAP4 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x3956 JUMPI POP POP SWAP2 PUSH1 0x1 SWAP4 SWAP2 DUP6 PUSH2 0x5E3 SWAP8 SWAP7 SWAP5 LT PUSH2 0x393D JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x78 SSTORE PUSH2 0x3AA3 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x392F JUMP JUMPDEST DUP1 PUSH1 0x1 DUP7 SWAP8 DUP3 SWAP5 SWAP8 DUP8 ADD MLOAD DUP2 SSTORE ADD SWAP7 ADD SWAP5 ADD SWAP1 PUSH2 0x3914 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x39B7 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x3988 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x397D JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x39CD JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x78 DUP3 MSTORE PUSH32 0x8DC6FB69531D98D70DC0420E638D2DFD04E09E1EC783EDE9AAC77DA9C5A0DAC4 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP4 ADD SWAP5 LT PUSH2 0x3A28 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x3A1D JUMPI POP POP POP JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3A11 JUMP JUMPDEST SWAP1 SWAP3 POP DUP3 SWAP1 PUSH2 0x3A08 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x3A3E JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x79 DUP3 MSTORE PUSH32 0x957BBDC7FAD0DEC56E7C96AF4A3AB63AA9DAF934A52FFCE891945B7FB622D791 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP4 ADD SWAP5 LT PUSH2 0x3A99 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x3A8E JUMPI POP POP POP JUMP JUMPDEST DUP2 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3A82 JUMP JUMPDEST SWAP1 SWAP3 POP DUP3 SWAP1 PUSH2 0x3A79 JUMP JUMPDEST SWAP1 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xD6D JUMPI PUSH2 0x3AC9 DUP2 PUSH2 0x3AC4 PUSH1 0x79 SLOAD PUSH2 0x396E JUMP JUMPDEST PUSH2 0x3A32 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x3B04 JUMPI POP DUP2 SWAP3 SWAP4 PUSH1 0x0 SWAP3 PUSH2 0x3AF9 JUMPI JUMPDEST POP POP PUSH1 0x0 NOT DUP3 PUSH1 0x1 SHL SWAP3 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x79 SSTORE JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0x3AE3 JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 AND SWAP5 PUSH2 0x3B55 PUSH1 0x79 PUSH1 0x0 MSTORE PUSH32 0x957BBDC7FAD0DEC56E7C96AF4A3AB63AA9DAF934A52FFCE891945B7FB622D791 SWAP1 JUMP JUMPDEST SWAP3 PUSH1 0x0 SWAP1 JUMPDEST DUP8 DUP3 LT PUSH2 0x3B92 JUMPI POP POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x3B79 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x79 SSTORE JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x3B6E JUMP JUMPDEST DUP1 PUSH1 0x1 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0x3B5A JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP1 ISZERO PUSH2 0x3C0F JUMPI PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD SWAP2 PUSH1 0x1 PUSH1 0xFF PUSH1 0x45 SLOAD PUSH1 0x30 SHR AND PUSH2 0x3BDE DUP2 PUSH2 0x311D JUMP JUMPDEST EQ PUSH2 0x3BE6 JUMPI POP JUMP JUMPDEST SWAP2 PUSH2 0x3C08 PUSH2 0x490 SWAP3 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x23FE JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST DUP2 PUSH1 0x0 MSTORE PUSH1 0x7C PUSH1 0x20 MSTORE PUSH2 0x3CBE DUP2 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x3CD0 DUP5 PUSH2 0x249F JUMP JUMPDEST AND SWAP2 AND SWAP1 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x0 DUP1 LOG4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 AND PUSH20 0x88899DC0B84C6E726840E00DFB94ABC6248825EC DUP2 EQ PUSH2 0x3D76 JUMPI PUSH20 0x1E0049783F008A0085193E00003D00CD54003C71 EQ PUSH2 0x3D6E JUMPI PUSH1 0xFF SWAP3 PUSH2 0x3D69 SWAP3 AND PUSH1 0x0 MSTORE PUSH1 0x7D PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND SWAP1 JUMP JUMPDEST POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x3D86 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206F7220617070726F76656400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH2 0x3DF9 DUP3 PUSH2 0x249F JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP4 AND SWAP3 DUP3 DUP6 AND DUP5 EQ SWAP5 DUP6 ISZERO PUSH2 0x3E39 JUMPI JUMPDEST POP POP DUP4 ISZERO PUSH2 0x3E23 JUMPI JUMPDEST POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x3E2F SWAP2 SWAP3 SWAP4 POP PUSH2 0x24C1 JUMP JUMPDEST AND EQ CODESIZE DUP1 DUP1 PUSH2 0x3E1D JUMP JUMPDEST PUSH2 0x3E44 SWAP3 SWAP6 POP PUSH2 0x3CFB JUMP JUMPDEST SWAP3 CODESIZE DUP1 PUSH2 0x3E14 JUMP JUMPDEST ISZERO PUSH2 0x3E53 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH2 0x3EE1 SWAP3 PUSH2 0x3ECA DUP2 PUSH2 0x249F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP6 SWAP1 SWAP2 DUP3 AND DUP7 EQ PUSH2 0x3E4C JUMP JUMPDEST DUP4 AND DUP1 ISZERO PUSH2 0x4016 JUMPI PUSH2 0x5E3 SWAP5 PUSH2 0x3EF7 DUP4 DUP6 PUSH2 0x407F JUMP JUMPDEST PUSH2 0x3F19 DUP2 PUSH2 0x3F13 PUSH2 0x3F07 DUP7 PUSH2 0x249F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST EQ PUSH2 0x3E4C JUMP JUMPDEST PUSH2 0x3F58 PUSH2 0x3F30 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7C PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP2 SLOAD AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3F75 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x3F9A DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x3FEC DUP6 PUSH2 0x3FB9 DUP6 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x0 DUP1 LOG4 PUSH2 0x40F1 JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 DUP2 PUSH2 0x40C2 JUMPI JUMPDEST POP PUSH2 0x4098 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x765C862B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0xFF PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND DUP1 ISZERO PUSH2 0x40E2 JUMPI JUMPDEST CODESIZE PUSH2 0x4091 JUMP JUMPDEST POP PUSH1 0xFF PUSH1 0x45 SLOAD PUSH1 0x80 SHR AND PUSH2 0x40DC JUMP JUMPDEST PUSH2 0x4134 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 ISZERO PUSH2 0x4191 JUMPI JUMPDEST DUP1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x4182 JUMPI JUMPDEST PUSH1 0x0 MSTORE PUSH1 0xDE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0xFFFF PUSH1 0x45 SLOAD PUSH1 0x48 SHR AND SWAP1 DUP2 PUSH2 0x4148 JUMPI POP POP JUMP JUMPDEST PUSH2 0x4151 SWAP1 PUSH2 0x3BAA JUMP JUMPDEST GT PUSH2 0x4158 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x550FFA9C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH2 0x418A PUSH2 0x25E8 JUMP JUMPDEST POP POP PUSH2 0x4113 JUMP JUMPDEST PUSH2 0x4199 PUSH2 0x2596 JUMP JUMPDEST POP POP PUSH2 0x4108 JUMP JUMPDEST PUSH2 0x41A8 PUSH2 0x2596 JUMP JUMPDEST POP POP PUSH2 0x4134 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP1 DUP2 ISZERO PUSH2 0x41FB JUMPI JUMPDEST PUSH1 0xDE PUSH1 0x20 MSTORE PUSH32 0x7FEAC6EF4894DB443B6046F934D8DFFE8AF4812F9F4B307224F533CF30C9FB62 SLOAD PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD DUP2 AND SWAP2 AND PUSH2 0x22A0 JUMP JUMPDEST PUSH2 0x4203 PUSH2 0x25E8 JUMP JUMPDEST POP POP PUSH2 0x41C0 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x304 JUMPI MLOAD PUSH2 0x490 DUP2 PUSH2 0x2DA JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x490 SWAP5 SWAP4 PUSH1 0x80 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP5 MSTORE AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x43C JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x4279 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x425F DUP3 PUSH2 0xFE0 JUMP JUMPDEST SWAP2 PUSH2 0x426D PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0xE4E JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 SWAP1 DUP3 EXTCODESIZE ISZERO PUSH2 0x3D76 JUMPI PUSH2 0x42D2 SWAP3 PUSH1 0x20 SWAP3 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD DUP1 SWAP8 DUP2 SWAP7 DUP3 SWAP6 PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 SWAP12 DUP13 DUP6 MSTORE CALLER PUSH1 0x4 DUP7 ADD PUSH2 0x421F JUMP JUMPDEST SUB SWAP4 AND GAS CALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x438B JUMPI JUMPDEST POP PUSH2 0x4365 JUMPI PUSH2 0x42ED PUSH2 0x424E JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 PUSH2 0x4360 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 SWAP1 REVERT JUMPDEST PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND EQ SWAP1 JUMP JUMPDEST PUSH2 0x43AD SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x43B4 JUMPI JUMPDEST PUSH2 0x43A5 DUP2 DUP4 PUSH2 0xE4E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x420A JUMP JUMPDEST SWAP1 CODESIZE PUSH2 0x42E0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x439B JUMP JUMPDEST ISZERO PUSH2 0x43C2 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 DUP3 ISZERO PUSH2 0x44CE JUMPI PUSH2 0x5E3 SWAP3 PUSH2 0x4444 PUSH2 0x443E DUP4 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x43BB JUMP JUMPDEST PUSH2 0x4467 PUSH2 0x443E DUP4 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x4484 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x44A3 DUP4 PUSH2 0x3FB9 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP2 DUP1 LOG4 PUSH2 0x41A0 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH2 0x451B PUSH2 0x533E JUMP JUMPDEST PUSH1 0x45 DUP1 SLOAD SWAP3 PUSH1 0xFF DUP5 PUSH1 0x30 SHR AND PUSH2 0x4530 DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH2 0x80E JUMPI PUSH4 0xFFFFFFFF SWAP4 DUP5 DUP2 AND SWAP1 DUP5 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2292 JUMPI PUSH1 0x58 SHR DUP6 AND LT PUSH2 0x7E4 JUMPI PUSH1 0x0 SWAP2 DUP3 JUMPDEST DUP5 DUP2 LT PUSH2 0x4566 JUMPI POP POP POP POP POP POP JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF NOT PUSH1 0x1 SWAP3 DUP9 DUP5 DUP2 DUP4 AND ADD AND SWAP2 DUP3 SWAP2 AND OR DUP5 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 ISZERO PUSH2 0x4654 JUMPI PUSH2 0x45BF PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x43BB JUMP JUMPDEST PUSH2 0x45E5 PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x4602 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP5 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x4620 DUP7 PUSH2 0x3FB9 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP7 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP2 DUP1 LOG4 PUSH2 0x464E DUP5 PUSH2 0x41A0 JUMP JUMPDEST ADD PUSH2 0x4557 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 DUP1 PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH2 0x46A0 PUSH2 0x533E JUMP JUMPDEST PUSH1 0x45 SLOAD SWAP1 PUSH1 0x1 PUSH1 0xFF DUP4 PUSH1 0x30 SHR AND PUSH2 0x46B6 DUP2 PUSH2 0x311D JUMP JUMPDEST SUB PUSH2 0x80E JUMPI PUSH4 0xFFFFFFFF SWAP2 DUP3 PUSH2 0x46CE DUP4 DUP3 DUP5 AND PUSH2 0x23FE JUMP JUMPDEST SWAP2 PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI PUSH2 0x4758 SWAP2 PUSH2 0x4742 SWAP2 PUSH1 0x2 NUMBER ADD PUSH1 0x1 PUSH2 0x4703 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST ADD SSTORE PUSH2 0x4722 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP2 DUP2 SLOAD ADD SWAP1 SSTORE AND PUSH2 0x4738 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST ADD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF NOT PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x48 SHR PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0x4148 JUMPI POP POP JUMP JUMPDEST SWAP2 SWAP1 DUP1 JUMPDEST PUSH2 0x4779 JUMPI POP POP POP JUMP JUMPDEST PUSH2 0x4783 DUP2 DUP4 PUSH2 0x4968 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x4654 JUMPI PUSH1 0x0 NOT SWAP3 PUSH2 0x47BF PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x47E5 PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x4802 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x4821 DUP7 PUSH2 0x3FB9 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP2 DUP1 LOG4 PUSH2 0x4850 DUP5 PUSH2 0x41A0 JUMP JUMPDEST ADD DUP1 PUSH2 0x4770 JUMP JUMPDEST SWAP3 SWAP1 DUP1 JUMPDEST PUSH2 0x4865 JUMPI POP POP POP POP JUMP JUMPDEST PUSH2 0x486F DUP2 DUP5 PUSH2 0x4968 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 DUP3 ISZERO PUSH2 0x4654 JUMPI DUP1 PUSH1 0x0 NOT SWAP4 PUSH2 0x48AC PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x48D2 PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x48EF DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x490E DUP9 PUSH2 0x3FB9 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP2 DUP1 LOG4 DUP4 PUSH2 0x493E DUP8 PUSH2 0x41A0 JUMP JUMPDEST PUSH2 0x494B JUMPI JUMPDEST POP ADD DUP1 PUSH2 0x485B JUMP JUMPDEST PUSH2 0x13FA PUSH2 0x4962 SWAP2 PUSH1 0x0 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST CODESIZE PUSH2 0x4943 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 DUP4 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x4986 DUP2 PUSH2 0xE16 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x45 SLOAD PUSH1 0x58 SHR AND SWAP1 DUP2 ISZERO SWAP1 DUP2 PUSH2 0x2E90 JUMPI DUP3 PUSH2 0x49A9 SWAP2 MOD PUSH2 0x23F0 JUMP JUMPDEST PUSH2 0x49C9 DUP2 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x49DE JUMPI DUP2 PUSH2 0x2E90 JUMPI DUP3 PUSH1 0x1 SWAP2 MOD ADD PUSH2 0x49A9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 PUSH2 0x49ED PUSH2 0x533E JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x2 PUSH1 0xFF DUP3 PUSH1 0x30 SHR AND PUSH2 0x4A02 DUP2 PUSH2 0x311D JUMP JUMPDEST SUB PUSH2 0x80E JUMPI PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP2 DUP4 MLOAD DUP4 ADD DUP1 SWAP4 GT PUSH2 0x2292 JUMPI PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI PUSH2 0x5E3 SWAP2 PUSH2 0x4A41 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x2738 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x45 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT DUP2 AND PUSH4 0xFFFFFFFF SWAP2 DUP3 AND DUP3 DUP6 AND ADD DUP3 AND OR DUP3 SSTORE SWAP4 SWAP2 SWAP3 SWAP2 PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x4A76 JUMPI POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4A80 DUP2 DUP4 PUSH2 0x4A2D JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO DUP1 ISZERO PUSH2 0x4ACB JUMPI JUMPDEST PUSH2 0x4AA1 JUMPI PUSH2 0x4A9B PUSH1 0x1 SWAP3 DUP7 PUSH2 0x4406 JUMP JUMPDEST ADD PUSH2 0x4A67 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x3F6CC76800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP7 DUP5 SLOAD PUSH1 0x58 SHR AND DUP3 GT PUSH2 0x4A8B JUMP JUMPDEST ISZERO PUSH2 0x4AE1 JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x0 SWAP1 PUSH1 0x40 MLOAD PUSH32 0x713562FE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS STATICCALL PUSH1 0x0 SWAP2 DUP2 PUSH2 0x30ED JUMPI POP PUSH2 0x30E9 JUMPI POP JUMP JUMPDEST PUSH2 0x5E3 PUSH2 0x130D PUSH2 0x3077 JUMP JUMPDEST SWAP1 DUP1 SWAP3 SWAP2 DUP3 CALLDATACOPY ADD PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 CALLDATACOPY DUP2 ADD PUSH1 0x42 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP1 SWAP5 AND SWAP2 AND ADD SWAP2 DUP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP5 SWAP4 SWAP1 SWAP6 SWAP7 SWAP9 SWAP8 SWAP2 SWAP9 DUP5 ISZERO PUSH2 0x4F60 JUMPI PUSH2 0x4BF9 DUP4 DUP3 PUSH2 0x4BAF JUMP JUMPDEST PUSH2 0x4C04 DUP7 DUP3 SLOAD PUSH2 0x23FE JUMP JUMPDEST SWAP1 SSTORE DUP2 PUSH2 0x4C11 DUP5 DUP4 PUSH2 0x4BAF JUMP JUMPDEST SLOAD GT PUSH2 0x4F36 JUMPI PUSH1 0x45 SLOAD SWAP4 PUSH4 0xFFFFFFFF SWAP5 PUSH2 0x4C2D DUP8 DUP8 DUP4 AND PUSH2 0x23FE JUMP JUMPDEST DUP7 DUP3 PUSH1 0x58 SHR AND LT PUSH2 0x7E4 JUMPI PUSH1 0x20 SHR PUSH1 0xFF AND PUSH2 0x4C47 DUP2 PUSH2 0x2B75 JUMP JUMPDEST ISZERO PUSH2 0x4F0C JUMPI PUSH1 0x40 SWAP11 DUP12 MLOAD SWAP4 DUP5 DUP10 DUP13 PUSH1 0x20 DUP4 ADD SWAP4 DUP7 DUP7 CHAINID SWAP5 ADDRESS SWAP6 PUSH2 0x4CED SWAP7 DUP10 SWAP6 SWAP4 SWAP2 SWAP3 PUSH1 0x8E SWAP8 SWAP6 SWAP4 PUSH32 0x9D13A5BA00000000000000000000000000000000000000000000000000000000 DUP9 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP1 SWAP4 PUSH1 0x60 SHL AND PUSH1 0x4 DUP10 ADD MSTORE PUSH1 0x18 DUP9 ADD MSTORE PUSH1 0x60 SHL AND PUSH1 0x38 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0xF8 SHL PUSH1 0x4C DUP6 ADD MSTORE PUSH1 0x4D DUP5 ADD MSTORE PUSH1 0x6D DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0xF8 SHL PUSH1 0x8D DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SUB SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP6 DUP7 DUP2 ADD DUP3 MSTORE PUSH2 0x4D20 SWAP1 DUP3 PUSH2 0xE4E JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x4D2C SWAP1 PUSH2 0x4FC7 JUMP JUMPDEST PUSH2 0x4D37 CALLDATASIZE DUP8 DUP7 PUSH2 0x101A JUMP JUMPDEST PUSH2 0x4D40 SWAP2 PUSH2 0x4F8A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC0FFEE06CE3D6689305035601A055A96ACD619C6 DUP2 EQ ISZERO SWAP1 DUP2 PUSH2 0x4EF7 JUMPI JUMPDEST POP PUSH2 0x4ECE JUMPI ISZERO PUSH2 0x4EAE JUMPI POP CALLVALUE PUSH2 0x4E85 JUMPI JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x30 SHR PUSH1 0xFF AND PUSH2 0x4D8B DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x4DD3 JUMPI POP POP POP POP POP DUP3 MLOAD SUB PUSH2 0x4DAA JUMPI PUSH2 0x5E3 SWAP4 SWAP5 POP PUSH2 0x512C JUMP JUMPDEST PUSH1 0x4 DUP6 MLOAD PUSH32 0x991F339F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP7 POP PUSH2 0x4DE5 DUP2 SWAP7 SWAP6 SWAP7 PUSH2 0x311D JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x4E3D JUMPI POP SWAP2 PUSH2 0x4E12 PUSH2 0x4E1E PUSH2 0x4742 SWAP4 PUSH2 0x4E38 SWAP6 PUSH2 0x5E3 SWAP12 SWAP13 MLOAD SWAP4 DUP5 SWAP2 PUSH1 0x20 DUP4 ADD SWAP7 DUP8 SWAP2 PUSH2 0x4BA1 JUMP JUMPDEST SUB SWAP1 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0xE4E JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP5 DUP5 AND PUSH2 0x4E33 PUSH1 0x45 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4BC8 JUMP JUMPDEST PUSH2 0x4857 JUMP JUMPDEST SWAP4 SWAP5 SWAP6 POP POP POP POP PUSH2 0x4E4D DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH2 0x4E5C JUMPI PUSH2 0x5E3 SWAP4 SWAP5 POP PUSH2 0x500A JUMP JUMPDEST PUSH1 0x4 DUP6 MLOAD PUSH32 0x3F88681900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP11 MLOAD PUSH32 0x122D34A800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP6 DUP2 ISZERO PUSH2 0x4EC4 JUMPI JUMPDEST PUSH2 0x4EBF SWAP2 PUSH2 0x54CE JUMP JUMPDEST PUSH2 0x4D79 JUMP JUMPDEST PUSH1 0x3A SLOAD SWAP2 POP PUSH2 0x4EB6 JUMP JUMPDEST PUSH1 0x4 DUP13 MLOAD PUSH32 0x73A8EE1800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH2 0x4F04 PUSH2 0x3F07 PUSH2 0x3077 JUMP JUMPDEST EQ ISZERO CODESIZE PUSH2 0x4D68 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x7963E2B500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x9A89C66A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x2C5211C600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP2 MLOAD PUSH2 0x490 SWAP3 PUSH2 0x2B3E SWAP3 SWAP2 PUSH1 0x41 SUB PUSH2 0x4FBD JUMPI PUSH2 0x4FB9 SWAP2 PUSH1 0x20 DUP3 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP5 ADD MLOAD SWAP4 ADD MLOAD PUSH1 0x0 BYTE SWAP1 PUSH2 0x2CCB JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP1 PUSH1 0x2 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP4 MSTORE PUSH1 0x3C DUP3 ADD MSTORE PUSH1 0x3C DUP2 MSTORE PUSH2 0x5004 DUP2 PUSH2 0xE16 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x0 SWAP1 DUP2 JUMPDEST DUP4 DUP2 LT PUSH2 0x501E JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x45 SWAP1 DUP2 SLOAD SWAP2 PUSH4 0xFFFFFFFF NOT PUSH4 0xFFFFFFFF SWAP4 PUSH1 0x1 SWAP5 DUP6 DUP2 DUP4 AND ADD AND SWAP2 DUP3 SWAP2 AND OR DUP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP1 ISZERO PUSH2 0x4654 JUMPI PUSH2 0x5076 PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x509C PUSH2 0x45BA PUSH2 0x45B6 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x50B9 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x7B PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP6 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x50D7 DUP10 PUSH2 0x3FB9 DUP5 PUSH1 0x0 MSTORE PUSH1 0x7A PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST DUP7 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP2 DUP1 LOG4 DUP4 PUSH2 0x5106 DUP9 PUSH2 0x41A0 JUMP JUMPDEST PUSH2 0x5112 JUMPI JUMPDEST POP ADD PUSH2 0x5010 JUMP JUMPDEST PUSH2 0x13FA PUSH2 0x13E4 PUSH2 0x5126 SWAP3 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST CODESIZE PUSH2 0x510B JUMP JUMPDEST DUP2 PUSH2 0x5136 SWAP2 PUSH2 0x4A41 JUMP JUMPDEST DUP1 MLOAD SWAP2 PUSH2 0x5141 JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 JUMPDEST DUP4 DUP2 LT PUSH2 0x5153 JUMPI POP POP POP POP JUMP JUMPDEST PUSH2 0x515D DUP2 DUP4 PUSH2 0x4A2D JUMP JUMPDEST MLOAD DUP4 MSTORE PUSH1 0x43 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SWAP1 PUSH1 0x1 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE ADD PUSH2 0x5146 JUMP JUMPDEST SWAP1 PUSH2 0xFFFF DUP1 SWAP3 AND PUSH2 0x2710 SUB SWAP2 DUP3 GT PUSH2 0x2292 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0xFF PUSH2 0x51CF DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND ISZERO PUSH2 0x52FC JUMPI PUSH2 0x5201 PUSH2 0x51F6 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x18 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x5236 PUSH2 0x5230 PUSH2 0x5225 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x8 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0x519B JUMP JUMPDEST SWAP3 PUSH2 0x5253 PUSH2 0x524B PUSH1 0x3A SLOAD PUSH2 0xFFFF DUP1 SWAP8 AND PUSH2 0x331F JUMP JUMPDEST PUSH2 0x2710 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH2 0x525D DUP4 DUP3 PUSH2 0x54CE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP5 DUP6 PUSH2 0x5276 JUMPI JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x52CA SWAP4 PUSH2 0x528F PUSH2 0x5294 SWAP4 PUSH2 0x524B SWAP4 PUSH2 0x52C2 SWAP7 AND PUSH2 0x331F JUMP JUMPDEST PUSH2 0x331F JUMP JUMPDEST SWAP3 PUSH2 0x52A9 PUSH2 0x52A4 DUP6 PUSH1 0x37 SLOAD PUSH2 0x23FE JUMP JUMPDEST PUSH1 0x37 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP3 SLOAD PUSH2 0x23FE JUMP JUMPDEST SWAP1 SSTORE PUSH32 0xF2F90295CDB5DAFD392BFC62D7868BCC79E8C6164C820C7CC195D6C8CDA8E674 PUSH1 0x0 DUP1 LOG2 CODESIZE DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x526E JUMP JUMPDEST PUSH1 0x0 DUP1 MSTORE PUSH1 0x39 PUSH1 0x20 MSTORE PUSH32 0x619FCD35F40C77DA8AA64D5F98C1FED669135ECC4F245CE6667721B157F7098F DUP1 SLOAD PUSH1 0x18 SHR PUSH2 0xFFFF AND SWAP3 SWAP1 PUSH2 0x5236 SWAP1 PUSH2 0x5230 SWAP1 PUSH2 0x5225 JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x20 SHR PUSH1 0xFF AND PUSH2 0x5350 DUP2 PUSH2 0x2B75 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x535B JUMPI POP JUMP JUMPDEST PUSH2 0x5364 DUP2 PUSH2 0x2B75 JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x53DE JUMPI POP PUSH1 0x3D SLOAD TIMESTAMP LT PUSH2 0x53B4 JUMPI PUSH2 0x53AA PUSH5 0x200000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH2 0x5E3 PUSH1 0x0 PUSH1 0x3D SSTORE JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xB3C0357700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP1 PUSH2 0x53EA PUSH1 0x4 SWAP3 PUSH2 0x2B75 JUMP JUMPDEST SUB PUSH2 0x542B JUMPI PUSH1 0x3D SLOAD TIMESTAMP LT PUSH2 0x53B4 JUMPI PUSH1 0x3E SLOAD TIMESTAMP LT PUSH2 0x5E3 JUMPI PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x734F1AD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0x63A2DE0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x78 SHR PUSH1 0xFF AND PUSH2 0x54A2 JUMPI DUP1 DUP1 DIV PUSH1 0x1 EQ DUP2 ISZERO OR ISZERO PUSH2 0x2292 JUMPI CALLVALUE SUB PUSH2 0x5478 JUMPI JUMP JUMPDEST PUSH1 0x4 PUSH1 0x40 MLOAD PUSH32 0xC288BF8F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP1 ISZERO PUSH2 0x54CB JUMPI DUP1 DUP1 DIV PUSH1 0x1 SUB PUSH2 0x2292 JUMPI PUSH2 0x5E3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 SLOAD AND ADDRESS SWAP1 CALLER SWAP1 PUSH2 0x5511 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x78 SHR PUSH1 0xFF AND PUSH2 0x54ED JUMPI SWAP1 PUSH2 0x54E5 SWAP2 PUSH2 0x331F JUMP JUMPDEST CALLVALUE SUB PUSH2 0x5478 JUMPI JUMP JUMPDEST DUP1 ISZERO PUSH2 0x22CE JUMPI PUSH2 0x5E3 SWAP2 PUSH2 0x5500 SWAP2 PUSH2 0x331F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 SLOAD AND ADDRESS SWAP1 CALLER SWAP1 JUMPDEST SWAP1 PUSH1 0x0 DUP1 PUSH2 0x55BC SWAP5 PUSH1 0x40 MLOAD SWAP5 PUSH1 0x20 SWAP8 DUP9 DUP8 ADD SWAP6 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 DUP1 SWAP3 AND PUSH1 0x24 DUP11 ADD MSTORE AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE PUSH1 0x64 DUP7 MSTORE PUSH2 0x5571 DUP7 PUSH2 0xE32 JUMP JUMPDEST AND SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x5580 DUP7 PUSH2 0xDFA JUMP JUMPDEST DUP8 DUP7 MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP9 DUP8 ADD MSTORE MLOAD SWAP1 DUP3 DUP6 GAS CALL PUSH2 0x55B6 PUSH2 0x424E JUMP JUMPDEST SWAP2 PUSH2 0x5660 JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 PUSH2 0x55C9 JUMPI POP POP POP JUMP JUMPDEST DUP3 DUP1 PUSH2 0x55D9 SWAP4 DUP4 ADD ADD SWAP2 ADD PUSH2 0x564B JUMP JUMPDEST ISZERO PUSH2 0x55E1 JUMPI POP JUMP JUMPDEST PUSH1 0x84 SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x304 JUMPI MLOAD PUSH2 0x490 DUP2 PUSH2 0x10CA JUMP JUMPDEST SWAP2 SWAP3 SWAP1 ISZERO PUSH2 0x56C1 JUMPI POP DUP2 MLOAD ISZERO PUSH2 0x5674 JUMPI POP SWAP1 JUMP JUMPDEST EXTCODESIZE ISZERO PUSH2 0x567D JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x56D4 JUMPI POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0xD69 SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH3 0x461BCD PUSH1 0xE5 SHL DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x47F JUMP JUMPDEST PUSH1 0x45 SLOAD PUSH1 0x28 SHR PUSH1 0xFF AND PUSH2 0x5702 DUP2 PUSH2 0x311D JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x5793 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xC617113400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 PUSH14 0xAAEB6D7670E522A718067333CD4E GAS STATICCALL DUP1 ISZERO PUSH2 0x1FB3 JUMPI PUSH2 0x576C JUMPI POP JUMP JUMPDEST PUSH2 0x54CB SWAP1 PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x578C JUMPI JUMPDEST PUSH2 0x5784 DUP2 DUP4 PUSH2 0xE4E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x564B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x577A JUMP JUMPDEST PUSH2 0x579C DUP2 PUSH2 0x311D JUMP JUMPDEST ISZERO PUSH2 0x57A4 JUMPI POP JUMP JUMPDEST PUSH14 0xAAEB6D7670E522A718067333CD4E DUP1 EXTCODESIZE PUSH2 0x57BD JUMPI POP POP JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO PUSH2 0x304 JUMPI PUSH1 0x40 MLOAD PUSH32 0x7D3E3DBE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x3CC6CDDA760B79BAFA08DF41ECFA224F810DCEB6 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP2 PUSH1 0x44 DUP2 DUP4 DUP7 GAS CALL SWAP1 DUP2 PUSH2 0x58BA JUMPI JUMPDEST POP ISZERO PUSH2 0x22CE JUMPI PUSH2 0x58A9 SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x585D PUSH6 0x10000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF PUSH1 0x45 SLOAD AND OR PUSH1 0x45 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC617113400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP3 DUP4 SWAP2 SWAP1 DUP3 SWAP1 DUP2 SWAP1 PUSH1 0x44 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL DUP1 ISZERO PUSH2 0x1FB3 JUMPI PUSH2 0x576C JUMPI POP JUMP JUMPDEST DUP1 PUSH2 0x58C7 PUSH2 0x58CD SWAP3 PUSH2 0xDE6 JUMP JUMPDEST DUP1 PUSH2 0x40E JUMP JUMPDEST CODESIZE PUSH2 0x581B JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE DUP2 DUP1 CALLDATACOPY DUP1 DUP1 CALLDATASIZE DUP2 PUSH32 0x0 GAS DELEGATECALL RETURNDATASIZE DUP3 DUP1 RETURNDATACOPY ISZERO PUSH2 0x590D JUMPI RETURNDATASIZE SWAP1 RETURN JUMPDEST RETURNDATASIZE SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD 0xE1 DUP9 SWAP2 0x2B 0x27 SWAP15 0x2D MUL PUSH24 0xF8541B78B77D258B9598F307032BCDC150B6BCCB40476473 PUSH16 0x6C634300081300330000000000000000 ","sourceMap":"5571:10440:46:-:0;;;;;;;;;-1:-1:-1;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;:::i;:::-;;10701:37;10686:52;;:92;;;;;5571:10440;;;;;;;;;;10686:92;2161:36:19;2146:51;;;-1:-1:-1;2146:126:19;;;;10686:92:46;2146:178:19;;;;10686:92:46;;;;;2146:178:19;1183:36:32;1168:51;;;2146:178:19;;;:126;2228:44;2213:59;;;-1:-1:-1;2146:126:19;;5571:10440:46;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;5571:10440:46;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;3018:5:19;5571:10440:46;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;3018:5:19;5571:10440:46;;;;;;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5571:10440:46;;;;;;;;-1:-1:-1;;;;;5571:10440:46;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;:::i;:::-;;;27714:8:47;;;:::i;:::-;4025:34:19;;;:::i;:::-;-1:-1:-1;;;;;5571:10440:46;;;;;;;4077:11:19;5571:10440:46;;929:10:27;4158:21:19;:62;;;;;5571:10440:46;;;;;4331:7:19;;;:::i;:::-;5571:10440:46;;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;4158:62:19;4183:37;929:10:27;;;4183:37:19;;:::i;:::-;4158:62;;;5571:10440:46;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;9683:15:44;5571:10440:46;9683:20:44;;;:64;;;5571:10440:46;;;;;;;;;;;9683:64:44;5571:10440:46;;9724:22:44;5571:10440:46;9708:12:44;5571:10440:46;;;;;;;:::i;:::-;9708:38:44;9683:64;;;;5571:10440:46;;-1:-1:-1;;5571:10440:46;;;;;7229:30:47;7245:10;5571:10440:46;7229:30:47;:::i;:::-;;;:::i;:::-;7296:12;5571:10440:46;;;;;;;;;:::i;:::-;7292:71:47;;7296:12;5571:10440:46;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;;;;;7296:12:47;5571:10440:46;;;;;;;-1:-1:-1;7397:65:47;;8818:7:46;5571:10440;;7488:10:47;8818:7:46;:::i;7397:65:47:-;5571:10440:46;;;7443:19:47;;;;7292:71;5571:10440:46;;;7343:20:47;;;;5571:10440:46;;;;;-1:-1:-1;;5571:10440:46;;;;;;;24254:11:47;5571:10440:46;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;10940:6:47;5571:10440:46;;;;;:::i;:::-;;;;10897:6:47;5571:10440:46;10885:10:47;5571:10440:46;10897:6:47;:::i;:::-;10940;:::i;5571:10440:46:-;;;-1:-1:-1;;5571:10440:46;;;;;12460:46:47;:26;12475:10;-1:-1:-1;;;;;5571:10440:46;;;12460:14:47;5571:10440:46;;;;;;;12460:26:47;:46;5571:10440:46;12475:10:47;5571:10440:46;;;;12460:14:47;5571:10440:46;;;;;;12589:19:47;;12585:49;;12460:46;12664:26;12475:10;-1:-1:-1;;;;;5571:10440:46;;;12460:14:47;5571:10440:46;;;;;;;12664:26:47;:46;5571:10440:46;12648:12:47;:62;;12644:114;;13433:5;12799:30;13449:34;12799:30;;12844:24;;;12840:323;;5571:10440:46;12475:10:47;;12460:46;13180:26;12475:10;-1:-1:-1;;;;;5571:10440:46;;;12460:14:47;5571:10440:46;;;;;;;13180:26:47;:46;5571:10440:46;12475:10:47;13244:26;12475:10;-1:-1:-1;;;;;5571:10440:46;;;12460:14:47;5571:10440:46;;;;;;;13244:26:47;5571:10440:46;13316:14:47;5571:10440:46;;;;;;;;13316:14:47;5571:10440:46;;13316:14:47;5571:10440:46;;;12475:10:47;13433:5;:::i;:::-;5571:10440:46;;13316:14:47;5571:10440:46;;;;;;;;13316:14:47;5571:10440:46;;13449:34:47;5571:10440:46;;12840:323:47;12911:71;12955:26;;12977:4;12955:26;12942:6;12648:12;12912:38;12911:71;:::i;:::-;12648:12;13003:30;;;12998:93;;12840:323;13126:25;12840:323;;;12998:93;13054:21;;;:::i;:::-;12998:93;;12644:114;5571:10440:46;;;12719:39:47;;;;12585:49;5571:10440:46;;;12617:17:47;;;;5571:10440:46;-1:-1:-1;;5571:10440:46;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;5395:7:19;5571:10440:46;;;:::i;:::-;27595:10:47;;;;:::i;:::-;5265:99:19;5273:41;27595:10:47;;5273:41:19;:::i;:::-;5265:99;:::i;:::-;5395:7;:::i;5571:10440:46:-;;;;;-1:-1:-1;;5571:10440:46;;;;;;25093:6:47;25066:23;5571:10440:46;25078:11:47;5571:10440:46;;;;;;25066:23:47;:::i;:::-;5571:10440:46;;;25050:4:47;;5571:10440:46;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;7930:20:8;;:::i;:::-;5571:10440:46;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5571:10440:46;;;;-1:-1:-1;5571:10440:46;3124:20:8;5571:10440:46;;;-1:-1:-1;5571:10440:46;2243:12:26;;2229:26;;5571:10440:46;;;2315:41:26;2747:53;2315:41;;:::i;:::-;5571:10440:46;;2416:15:26;-1:-1:-1;2441:18:26;;2480:1;2474:7;;2470:253;;5571:10440:46;2747:53:26;;;:::i;:::-;2818:63;:8;;;:63;;5571:10440:46;-1:-1:-1;2818:63:26;5571:10440:46;;;;;;;;2818:63:26;2833:41;:48;2866:7;;5571:10440:46;2866:7:26;;:::i;:::-;2833:41;7800:109;;;;;;7678:237;;2833:41;5571:10440:46;;;;;2833:48:26;2818:63;;2470:253;2517:25;;2511:31;2517:25;;;;;:::i;:::-;2511:31;;:::i;:::-;2566:37;2560:56;2566:50;:37;;;7800:109;;;;;;7678:237;;2566:37;5571:10440:46;;;;;2566:50:26;5571:10440:46;;;;2560:56:26;5571:10440:46;;;2560:56:26;2566:37;;;2636:10;2556:157;;2470:253;;;2556:157;2691:7;;;;;;:::i;:::-;2556:157;;;5571:10440:46;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27595:10:47;;;:::i;:::-;5571:10440:46;;;;;;;;;;;;;;;;7092:47:19;5571:10440:46;;;;;;27595:10:47;;;:::i;:::-;5881:99:19;5889:41;27595:10:47;;5889:41:19;:::i;5881:99::-;7066:7;;;;;:::i;:::-;7092:47;:::i;:::-;5571:10440:46;;;;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5571:10440:46;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;9465:6:47;9415:9;5571:10440:46;;;:::i;:::-;9415:9:47;;;;:::i;:::-;9465:6;:::i;5571:10440:46:-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;:::i;:::-;;;;;;;;;;14755:8:47;5571:10440:46;;;;;;:::i;:::-;;14702:15:47;14690:10;5571:10440:46;;;14702:15:47;;:::i;:::-;14755:8;:::i;5571:10440:46:-;;-1:-1:-1;;5571:10440:46;;;;;8898:6:47;5571:10440:46;;;;;:::i;:::-;;;;8851:6:47;5571:10440:46;8839:10:47;5571:10440:46;8851:6:47;:::i;5571:10440:46:-;;-1:-1:-1;;5571:10440:46;;;;;;;;;;:::i;:::-;;;;;;;;;;15431:8:47;5571:10440:46;;;;;;:::i;:::-;;15384:9:47;5571:10440:46;;;;;:::i;:::-;;;15384:9:47;:::i;5571:10440:46:-;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;5571:10440:46;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5773:2049;5571:10440;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;5773:2049;;:::i;5571:10440::-;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5571:10440:46;;;-1:-1:-1;5571:10440:46;4287:11:8;5571:10440:46;;;-1:-1:-1;5571:10440:46;;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;4526:9:8;5571:10440:46;;;;;:::i;:::-;929:10:27;4526:9:8;:::i;5571:10440:46:-;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;5571:10440:46;;;;;;;24460:14:47;5571:10440:46;;;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;24071:10:47;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;6328:14:6;6320:73;6328:14;;:::i;:::-;-1:-1:-1;;;;;5571:10440:46;6346:10:6;6328:28;6320:73;:::i;:::-;18080:12:47;5571:10440:46;;;;;;;;;;;:::i;:::-;18076:71:47;;18161:25;5571:10440:46;;;;;;;;;;18161:25:47;:::i;:::-;5571:10440:46;;;;-1:-1:-1;18157:75:47;;5571:10440:46;;18286:9:47;18096:22;18297:12;;;;;;5571:10440:46;18286:9:47;18362:5;;8818:7:46;18362:5:47;;5571:10440:46;18362:5:47;;;:::i;:::-;5571:10440:46;-1:-1:-1;;;;;5571:10440:46;;;18362:5:47;5571:10440:46;18369:13:47;5571:10440:46;;;;;;;;;;;;;;18369:13:47;;;5571:10440:46;;-1:-1:-1;;7296:12:47;5571:10440:46;;;7296:12:47;5571:10440:46;;18369:13:47;5571:10440:46;8818:7;;:::i;:::-;18417:45:47;;18286:9;5571:10440:46;18286:9:47;;18417:45;18432:30;:23;5571:10440:46;;;;;;;;;;;;18432:10:47;5571:10440:46;;;;;;;18432:23:47;18458:4;5571:10440:46;;;;;;;;18432:30:47;18417:45;;5571:10440:46;;-1:-1:-1;;5571:10440:46;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;17180:30:47;17196:10;5571:10440:46;17180:30:47;:::i;:::-;;;:::i;:::-;17247:12;5571:10440:46;;17263:22:47;5571:10440:46;;;;;;;;:::i;:::-;17247:38:47;17243:71;;7296:12;5571:10440:46;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;;;;;17247:12:47;5571:10440:46;;;;;;;-1:-1:-1;17348:65:47;;8818:7:46;5571:10440;;8818:7;;:::i;:::-;17490:45:47;;5571:10440:46;;;17555:32:47;5571:10440:46;17247:12:47;5571:10440:46;;;;;;;;;;17555:19:47;5571:10440:46;;;;;;;17555:32:47;5571:10440:46;;17490:45:47;17505:30;:23;5571:10440:46;17247:12:47;5571:10440:46;;;;;17505:30:47;17490:45;;5571:10440:46;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;5520:62:6;;:::i;:::-;5571:10440:46;;20236:12:47;;5571:10440:46;;20252:19:47;5571:10440:46;;;;;;;;:::i;:::-;20236:35:47;20232:68;;5571:10440:46;;;;;;;20315:31:47;5571:10440:46;;20315:31:47;;:::i;:::-;5571:10440:46;;;;-1:-1:-1;20311:81:47;;5571:10440:46;;20406:27:47;;20402:68;;5571:10440:46;20505:31:47;5571:10440:46;;;;;;;;-1:-1:-1;;7296:12:47;5571:10440:46;;;7296:12:47;5571:10440:46;;20505:31:47;-1:-1:-1;20573:12:47;;;;;;5571:10440:46;20562:9:47;20608:11;;;;:::i;:::-;5571:10440:46;20608:16:47;:49;;;;20562:9;20604:78;;20702:5;;8818:7:46;20702:5:47;;5571:10440:46;20702:5:47;;;:::i;:::-;20709:11;;;;:::i;:::-;5571:10440:46;8818:7;;:::i;:::-;20735:45:47;;20562:9;5571:10440:46;20562:9:47;;20735:45;20750:30;:23;20761:11;;;;:::i;:::-;5571:10440:46;;;20750:10:47;5571:10440:46;;;;;;;20750:30:47;20735:45;;20604:78;5571:10440:46;;;20666:16:47;;;;20608:49;20628:11;;;;;:::i;:::-;5571:10440:46;;;20628:29:47;;5571:10440:46;;;;;;20628:29:47;-1:-1:-1;20608:49:47;;20402:68;5571:10440:46;;;20442:28:47;;;;20311:81;5571:10440:46;;;20373:19:47;;;;20232:68;5571:10440:46;;;20280:20:47;;;;5571:10440:46;;;;;-1:-1:-1;;5571:10440:46;;;;;-1:-1:-1;;;;;5571:10440:46;;;;;:::i;:::-;;-1:-1:-1;5571:10440:46;7685:7:8;5571:10440:46;;;;-1:-1:-1;5571:10440:46;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;5571:10440:46;;;;;;;3789:12:8;3775:26;;5571:10440:46;;;2315:41:26;2747:53;2315:41;;:::i;:::-;3849:17:8;5571:10440:46;2416:15:26;-1:-1:-1;2441:18:26;;2480:1;2474:7;;2470:253;;5571:10440:46;2747:53:26;;:::i;:::-;2818:8;;;:63;5571:10440:46;-1:-1:-1;2818:63:26;5571:10440:46;;;;;;;;;2818:63:26;2833:48;:41;2866:7;5571:10440:46;2866:7:26;;:::i;:::-;3849:17:8;7800:109:26;;;;7678:237;;2833:48;2818:63;;2470:253;2517:25;;2511:31;2517:25;;;;;:::i;2511:31::-;3849:17:8;7800:109:26;;2566:37;2560:56;2566:50;7800:109;;;2566:37;7678:237;2560:56;5571:10440:46;;;2560:56:26;2566:37;;;2636:10;2556:157;;2470:253;;;2556:157;2691:7;;;;;;:::i;:::-;2556:157;;;5571:10440:46;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;8435:6:47;5571:10440:46;;8377:9:47;5571:10440:46;;;;;:::i;:::-;8377:9:47;;:::i;:::-;8423:10;8435:6;:::i;5571:10440:46:-;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;3182:7:19;5571:10440:46;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;3182:7:19;5571:10440:46;;;;;;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;-1:-1:-1;;;;;5571:10440:46;;;;;:::i;:::-;;-1:-1:-1;5571:10440:46;2743:20:8;5571:10440:46;;;;2743:38:8;5571:10440:46;-1:-1:-1;5571:10440:46;2743:38:8;:::i;:::-;5571:10440:46;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;5571:10440:46;;;;;7918:6:47;5571:10440:46;;7863:6:47;5571:10440:46;7851:10:47;5571:10440:46;7863:6:47;:::i;5571:10440:46:-;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;27714:8:47;;;:::i;:::-;-1:-1:-1;;;;;5571:10440:46;;929:10:27;;;13754:17:19;5571:10440:46;;929:10:27;13811:35:19;:46;929:10:27;;-1:-1:-1;5571:10440:46;13811:18:19;5571:10440:46;;;-1:-1:-1;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;;;;;;;;;;13811:35:19;5571:10440:46;;;;;;;;;;;;;;13811:46:19;5571:10440:46;;;;;;;929:10:27;;13872:41:19;;5571:10440:46;;13872:41:19;5571:10440:46;;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;7092:47:19;5571:10440:46;;;;;;;;;;;:::i;:::-;27595:10:47;;;;:::i;5571:10440:46:-;;;;:::i;:::-;5520:62:6;;;:::i;:::-;5571:10440:46;;;19026:12:47;5571:10440:46;;;;;;;;;;;:::i;:::-;19042:18:47;19026:34;;;19022:67;;5571:10440:46;;;;19105:22:47;;;;;;:::i;:::-;5571:10440:46;;;;-1:-1:-1;19100:74:47;;19209:31;5571:10440:46;;;;;;;;-1:-1:-1;;7296:12:47;5571:10440:46;;;7296:12:47;5571:10440:46;;19209:31:47;19292:16;:12;:16;:::i;:::-;19282:27;-1:-1:-1;19336:12:47;;;;;;5571:10440:46;19325:9:47;19387:29;;;;;;:::i;:::-;19436:5;8818:7:46;19436:5:47;;;;;;:::i;:::-;8818:7:46;:::i;:::-;19468:44:47;;19325:9;5571:10440:46;;19325:9:47;;19468:44;19483:22;:29;:22;5571:10440:46;;20750:10:47;5571:10440:46;;;;;;;19483:29:47;19468:44;;;5571:10440:46;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;4821:15:8;;:25;5571:10440:46;;4902:180:8;5092:59;5571:10440:46;5179:9:8;5571:10440:46;;;4967:58:8;;;;5571:10440:46;4967:58:8;;;;;;2211:71;;;;;-1:-1:-1;;;;;2211:71:8;;;5571:10440:46;2211:71:8;5571:10440:46;;;2211:71:8;;;5571:10440:46;2211:71:8;;;5571:10440:46;2211:71:8;5571:10440:46;2211:71:8;4967:58;;;;;;;;;:::i;:::-;4940:87;5571:10440:46;;;;;;;4957:69:8;;4940:87;:::i;:::-;4902:180;:::i;:::-;5109:17;;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;7456:7:8;5571:10440:46;;;-1:-1:-1;5571:10440:46;;;;;1061:1:28;5571:10440:46;;;;7325:214:8;5109:17;5100:26;5092:59;:::i;:::-;5179:9;:::i;5571:10440:46:-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;14077:53:19;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;8640:22:46;14077:53:19;:::i;:::-;5571:10440:46;;8419:48;5571:10440;8419:48;;5571:10440;8419:48;;5571:10440;-1:-1:-1;8439:4:46;;;5571:10440;8439:4;;8419:48;;;;;;;;;;;5571:10440;;;;;;;;:::i;8419:48::-;;;;;;;;;;;;:::i;:::-;;;5571:10440;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8419:48;;;5571:10440;;;;;;;;8419:48;;:::i;5571:10440::-;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;5448:4:48;5571:10440:46;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;11639:6:47;11593:9;5571:10440:46;;;:::i;2211:71:8:-;;;;:::o;:::-;;5571:10440:46;;-1:-1:-1;;;2211:71:8;;;;;;;;;;;5571:10440:46;2211:71:8;5571:10440:46;;;2211:71:8;;5374:313;5571:10440:46;-1:-1:-1;;;;;1691:18:23;5571:10440:46;;;-1:-1:-1;;5571:10440:46;;;;4287:11:8;5571:10440:46;;;;;;5506:32:8;5571:10440:46;;;;5506:32:8;;;5571:10440:46;-1:-1:-1;;;;;5571:10440:46;;;;;;;;;5506:32:8;5571:10440:46;;5554:48:8;;;;;;;1691:18:23;:::i;:::-;6514:10:8;;;;;:24;;;5374:313;6510:486;;5374:313;;;;;;:::o;6510:486::-;6558:18;6554:215;;6510:486;6786:16;;;6782:204;;6510:486;;;;;6782:204;6927:44;6861:24;;:43;:24;-1:-1:-1;;;;;5571:10440:46;;;6861:20:8;5571:10440:46;;;;;;;6861:24:8;:43;:::i;:::-;5571:10440:46;;;;;;;;;;;;;;6927:44:8;6782:204;;;;;6554:215;5571:10440:46;;;;;6635:20:8;5571:10440:46;;;;3719:12:26;;;;:::i;:::-;5571:10440:46;;;;;;;;;3197:42:26;3226:12;3197:42;:::i;:::-;2931:26:35;;;;5571:10440:46;;6708:46:8;5571:10440:46;6708:46:8;5571:10440:46;;3170:108:26;5571:10440:46;;3170:108:26;;:::i;:::-;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;6708:46:8;;;;6554:215;;;;5571:10440:46;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6514:24:8:-;6528:10;;;;6514:24;;6392:610;;-1:-1:-1;;;;;5571:10440:46;;;;;6514:10:8;;;;:24;;;6392:610;6510:486;;6392:610;;;:::o;6510:486::-;6558:18;6554:215;;6510:486;6786:16;;6782:204;;6510:486;6392:610;;:::o;6782:204::-;6861:43;:24;6927:44;6861:24;-1:-1:-1;;;;;5571:10440:46;;;6861:20:8;5571:10440:46;;;;;;;6861:24:8;:43;:::i;:::-;5571:10440:46;;;;;;;;;;;;;;6927:44:8;6392:610::o;6554:215::-;5571:10440:46;6574:1:8;5571:10440:46;6635:20:8;5571:10440:46;;;6574:1:8;5571:10440:46;;3719:12:26;;;;:::i;:::-;5571:10440:46;-1:-1:-1;;5571:10440:46;;;;;;;3197:42:26;3226:12;3197:42;:::i;:::-;2931:26:35;;;;5571:10440:46;;6708:46:8;5571:10440:46;6708:46:8;5571:10440:46;;3170:108:26;5571:10440:46;;3170:108:26;;:::i;6708:46:8:-;;;;6554:215;;;6514:24;;12265:1:19;6514:24:8;;5571:10440:46;;;;;;;;;;;;2697:1:26;5571:10440:46;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;-1:-1:-1;;5571:10440:46;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;2651:219:19;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;2785:56:19;2793:19;;;2785:56;:::i;4407:167::-;14077:53;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;14077:53;-1:-1:-1;5571:10440:46;4543:15:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;4407:167:19;:::o;3517:230:26:-;;5571:10440:46;3719:12:26;;;;;:::i;:::-;5571:10440:46;12265:1:19;5571:10440:46;;;;;;;3197:42:26;3226:12;3197:42;:::i;:::-;2931:26:35;;;;5571:10440:46;;;;;3170:108:26;5571:10440:46;;3170:108:26;;:::i;:::-;5571:10440:46;;;;3517:230:26;:::o;:::-;5571:10440:46;;3517:230:26;5571:10440:46;3719:12:26;3517:230;3719:12;:::i;:::-;5571:10440:46;;;;;;;;;3197:42:26;3226:12;3197:42;:::i;3517:230::-;5571:10440:46;3719:12:26;;;;:::i;:::-;5571:10440:46;12265:1:19;5571:10440:46;;;;;;;3197:42:26;3226:12;3197:42;:::i;:::-;2931:26:35;;;;5571:10440:46;;;;;3170:108:26;5571:10440:46;;3170:108:26;;:::i;3517:230::-;5571:10440:46;3719:12:26;;;;:::i;:::-;5571:10440:46;-1:-1:-1;;5571:10440:46;;;;;;;3197:42:26;3226:12;3197:42;:::i;3867:205::-;6088:17:8;5571:10440:46;3961:17:26;;4002:8;;;:63;;3961:17;3867:205;:::o;4002:63::-;5571:10440:46;-1:-1:-1;;5571:10440:46;;;;;6088:17:8;7800:109:26;;;;5571:10440:46;7800:109:26;5571:10440:46;3867:205:26;:::o;:::-;5571:10440:46;;3961:17:26;;4002:8;;;:63;;;3961:17;3867:205;:::o;4002:63::-;-1:-1:-1;;5571:10440:46;;;;;;;;7800:109:26;;;;;;;5571:10440:46;7800:109:26;5571:10440:46;3867:205:26;:::o;5571:10440:46:-;;;;;;;;;;;6088:17:8;5571:10440:46;;;;;;;;;;;;6088:17:8;5571:10440:46;;;;;;6088:17:8;-1:-1:-1;5571:10440:46;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5571:10440:46;;;;;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;5087:879:26;6088:17:8;5571:10440:46;5087:879:26;;;5273:7;;;;5571:10440:46;5393:7:26;;;5571:10440:46;5373:28:26;5393:7;5811:11;5393:7;;:::i;5373:28::-;5571:10440:46;:::i;:::-;;;;;;;;;;5468:60:26;5571:10440:46;;;;;;;;;5476:24:26;;5468:60;:::i;:::-;5592:24;5571:10440:46;;;;;;;5592:24:26;;;;5656:7;5636:28;5656:7;5636:43;5656:7;;:::i;5636:28::-;5571:10440:46;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;5636:43:26;5811:11;5571:10440:46;;;;;;5803:27:26;;:::o;5588:202::-;5571:10440:46;;5718:57:26;5571:10440:46;;5728:46:26;5571:10440:46;;:::i;:::-;;;;;;;;5728:46:26;5571:10440:46;;;5728:46:26;;;5571:10440:46;5718:57:26;:::i;:::-;5588:202;;5269:691;5571:10440:46;5861:57:26;5571:10440:46;5871:46:26;5571:10440:46;;:::i;5871:46:26:-;5571:10440:46;;;5871:46:26;;;5571:10440:46;5718:57:26;:::i;5861:::-;5279:1;5932:17;;:::o;5087:879::-;;;;;5571:10440:46;;;5273:7:26;;;5269:691;5273:7;;;5393;5811:11;5393:7;;;5571:10440:46;5373:28:26;5393:7;5571:10440:46;5393:7:26;;:::i;:::-;5373:28;7800:109;;;;;;7678:237;;5571:10440:46;;;;;;;;;;5468:60:26;5571:10440:46;;;;;;;;;5476:24:26;;5468:60;:::i;:::-;5592:24;5571:10440:46;;;;;;;5592:24:26;;;;5656:7;5636:43;5656:7;;5636:28;5656:7;;:::i;5588:202::-;5571:10440:46;;;5718:57:26;5571:10440:46;5728:46:26;5571:10440:46;;:::i;:::-;;;;;;;;5728:46:26;5571:10440:46;;;5728:46:26;;;5571:10440:46;5718:57:26;:::i;5269:691::-;5571:10440:46;;5861:57:26;5571:10440:46;5871:46:26;5571:10440:46;;:::i;5871:46:26:-;5571:10440:46;;;5871:46:26;;;5571:10440:46;5718:57:26;:::i;6297:449::-;;6477:10;;;;;;6728:11;;6297:449;:::o;6470:249::-;942:5:34;;;;;5571:10440:46;;952:5:34;;;5571:10440:46;;;;;;;;;3849:17:8;-1:-1:-1;7800:109:26;5571:10440:46;7800:109:26;;;;5571:10440:46;;;;;-1:-1:-1;6565:144:26;5571:10440:46;;;6632:10:26;;6565:144;;6470:249;;;6565:144;5571:10440:46;;;;;;;;;;;6565:144:26;;;6297:449;;;6477:10;;;;;;6728:11;;;6297:449;:::o;6470:249::-;942:5:34;;;;;;5571:10440:46;;952:5:34;;;5571:10440:46;;;;;;;;;-1:-1:-1;7800:109:26;;;;;;;;5571:10440:46;;;;;;;;-1:-1:-1;5571:10440:46;;;6632:10:26;;6565:144;;6470:249;;;;6565:144;5571:10440:46;;;;;;;;;;;6565:144:26;;;5571:10440:46;6947:23;5571:10440;:::o;6718:270:30:-;;6949:5;6718:270;;6902:25;6718:270;6902:25;:::i;:::-;6949:5;;;;:::i;5571:10440:46:-;;;;;;;;;;;;-1:-1:-1;5571:10440:46;;;:::o;:::-;;:::i;592:511:30:-;5571:10440:46;;;:::i;:::-;660:29:30;;;705:7;:::o;656:441::-;5571:10440:46;;;:::i;:::-;765:29:30;756:38;;765:29;;5571:10440:46;;-1:-1:-1;;;810:34:30;;5571:10440:46;810:34:30;;;5571:10440:46;;;;;;;;;;;;;;752:345:30;5571:10440:46;;;:::i;:::-;874:35:30;865:44;;874:35;;5571:10440:46;;-1:-1:-1;;;925:41:30;;5571:10440:46;925:41:30;;;5571:10440:46;;;;;;;;;;;;;;861:236:30;5571:10440:46;;996:30:30;5571:10440:46;;:::i;:::-;987:39:30;983:114;;592:511::o;983:114::-;5571:10440:46;;-1:-1:-1;;;1042:44:30;;5571:10440:46;1042:44:30;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5091:1494:30;;;;6141:66;6128:79;;6124:161;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6396:24:30;;;;;;;;;;;;;;-1:-1:-1;;;;;5571:10440:46;;6434:20:30;6430:101;;6541:37;5091:1494;:::o;6430:101::-;6470:50;6396:24;6470:50;:::o;6124:161::-;6223:51;;;;6239:1;6223:51;6243:30;6223:51;:::o;2851:160:31:-;5571:10440:46;;3193:73:31;;;5571:10440:46;1604:95:31;5571:10440:46;;11792:20;5571:10440;;;;11921:14;5571:10440;;;;3237:13:31;5571:10440:46;;;;3260:4:31;5571:10440:46;;;;;3193:73:31;;5571:10440:46;;;;;;;;;;;;;;;3183:84:31;;2851:160;:::o;3899:176::-;4035:20;;:::i;:::-;5571:10440:46;;;8503:57:30;;;;5571:10440:46;;;;;;;;;;;;;8503:57:30;;5571:10440:46;;;;;;;;;;;;;;;8493:68:30;;3899:176:31;:::o;5571:10440:46:-;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;6291:1642:34:-;6362:6;;6358:45;;7105:7;7905:10;7846:26;7797;7748;7699;7650;7601;7552;5571:10440:46;7893:23:34;7105:7;6367:1;5571:10440:46;;;;8521:16:34;8517:99;;6291:1642;5571:10440:46;;;;8633:15:34;8629:96;;6291:1642;5571:10440:46;;;;8742:15:34;8738:96;;6291:1642;5571:10440:46;;;;8851:15:34;8847:96;;6291:1642;5571:10440:46;;;;8960:14:34;8956:93;;6291:1642;5571:10440:46;;;;9066:14:34;9062:93;;6291:1642;5571:10440:46;;;;9172:14:34;9168:93;;6291:1642;5571:10440:46;;;9274:64:34;;6291:1642;5571:10440:46;;;7562:10:34;;;;:::i;:::-;5571:10440:46;;;;;7552:26:34;7611:10;;;;:::i;7601:26::-;7660:10;;;;:::i;7650:26::-;7709:10;;;;:::i;7699:26::-;7758:10;;;;:::i;7748:26::-;7807:10;;;;:::i;7797:26::-;7856:10;;;;:::i;7846:26::-;7905:10;;;:::i;:::-;7893:23;;:::i;9274:64::-;5571:10440:46;;9274:64:34;;9168:93;5571:10440:46;9206:11:34;;5571:10440:46;;9168:93:34;;;;9062;5571:10440:46;9100:11:34;;5571:10440:46;;9062:93:34;;;;8956;5571:10440:46;8994:11:34;;5571:10440:46;;8956:93:34;;;;8847:96;5571:10440:46;8886:12:34;;5571:10440:46;;8847:96:34;;;;8738;5571:10440:46;8777:12:34;;5571:10440:46;;8738:96:34;;;;8629;5571:10440:46;8668:12:34;;5571:10440:46;;8629:96:34;;;;8517:99;8557:13;;;5571:10440:46;8517:99:34;;;;6358:45;6384:8;6367:1;6384:8;:::o;599:104::-;;683:5;;;;;;:13;599:104;:::o;683:13::-;;;599:104;:::o;15275:187:35:-;5571:10440:46;15357:25:35;;;;5571:10440:46;;;15275:187:35;:::o;5571:10440:46:-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8214:257:44:-;5571:10440:46;;;;;8323:67:44;;8382:4;8323:67;;;5571:10440:46;8323:67:44;8340:8;5571:10440:46;8340:8:44;-1:-1:-1;;;;;8340:8:44;5571:10440:46;8323:67:44;;5571:10440:46;;8323:67:44;;;8214:257;8319:146;;;8214:257;:::o;8319:146::-;8431:14;-1:-1:-1;8431:14:44:o;8323:67::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5571:10440:46;;-1:-1:-1;5571:10440:46;;;:::o;3235:506:10:-;;;;;;;;;;;;;3291:13;5571:10440:46;;;;;;;3290:14:10;3336:34;;;;;;3235:506;3335:108;;;;3235:506;5571:10440:46;;;;3625:1:10;3525:16;;;5571:10440:46;;3291:13:10;5571:10440:46;;;3291:13:10;5571:10440:46;;3525:16:10;3551:65;;3625:1;:::i;:::-;3636:99;;3235:506::o;3636:99::-;3670:21;5571:10440:46;3291:13:10;5571:10440:46;;3291:13:10;5571:10440:46;;3670:21:10;5571:10440:46;;3540:1:10;5571:10440:46;;3710:14:10;;5571:10440:46;;3710:14:10;3235:506::o;3551:65::-;3585:20;5571:10440:46;;3291:13:10;5571:10440:46;;;3291:13:10;5571:10440:46;;3585:20:10;3625:1;:::i;5571:10440:46:-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;3335:108:10;3415:4;1476:19:25;:23;;-1:-1:-1;1476:23:25;3376:66:10;;3335:108;;;;;3376:66;3441:1;5571:10440:46;;;;3425:17:10;3376:66;;;3336:34;3369:1;5571:10440:46;;;3354:16:10;;-1:-1:-1;3336:34:10;;5571:10440:46;;;;:::i;:::-;;;6530:30;5571:10440;;;;;;;;6530:30;5571:10440;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5571:10440:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;7679:31;5571:10440;;7679:31;5571:10440;;;;;;;-1:-1:-1;7679:31:46;5571:10440;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;7679:31:46;5571:10440;;;;;;;;;;;;;;;;;;;;;;;;;;;5773:2049;;1605:149:19;5773:2049:46;;;;;;;;;;;1605:149:19;:::i;:::-;5571:10440:46;;;6281:17;6277:64;;6355:19;;;;;:51;;;5773:2049;6351:107;;6486:5;5571:10440;;;6472:19;6468:51;;6530:30;;5571:10440;;6530:30;5571:10440;;;;;;;;6530:30;5571:10440;;6530:30;6570:367;;;-1:-1:-1;6613:28:46;;;5571:10440;;;;:::i;:::-;6681:22;6665:38;;6661:99;;6947:23;6980:25;6609:255;6947:23;5571:10440;;6947:23;5571:10440;;6530:30;5571:10440;;;;;;;;6530:30;5571:10440;;6980:25;5571:10440;;;:::i;:::-;7019:38;7015:96;;6570:367;5571:10440;-1:-1:-1;;;;;5571:10440:46;;7120:144;;6570:367;7300:4;;5571:10440;;;;7277:27;7273:85;;6570:367;7372:27;7368:447;;6570:367;5773:2049;;;;:::o;7368:447::-;6297:1;7464:9;;7459:207;7475:27;;;;;;5571:10440;;;;;;;;:::i;:::-;7728:41;7724:80;;7368:447;;;;;7724:80;7778:26;5571:10440;;7778:26;;;;7464:9;7524:56;7550:19;;7524:56;7550:30;;:19;;;;;;:::i;:::-;:30;;:::i;:::-;5571:10440;;;;7524:56;;;:::i;:::-;5571:10440;;7464:9;;;7273:85;7320:27;5571:10440;;6530:30;5571:10440;;;6530:30;5571:10440;;7320:27;7273:85;;7120:144;7210:43;7174:22;;5571:10440;;6530:30;5571:10440;;;6530:30;5571:10440;;7174:22;-1:-1:-1;;;;;5571:10440:46;;7210:43;5571:10440;;;7210:43;5571:10440;;7210:43;7120:144;;;7015:96;7073:27;;;:::i;:::-;7015:96;;;6661:99;6732:28;5571:10440;;6732:28;;;;6609:255;6980:25;6799:50;;6947:23;6799:50;;5571:10440;;6570:367;6894:32;5571:10440;-1:-1:-1;6980:25:46;;6947:23;;;5571:10440;:::o;6468:51::-;6500:19;5571:10440;;6500:19;;;;6351:107;6415:43;5571:10440;;6415:43;;;;6355:51;6378:28;;;;6355:51;;6277:64;6307:34;5571:10440;;6307:34;;;;5571:10440;;;;:::o;:::-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;5317:125:10;;5355:69;5571:10440:46;5363:13:10;5571:10440:46;;;;5355:69:10;;;:::i;:::-;;:::i;:::-;5571:10440:46;;;;;;;;;;1873:13:19;5571:10440:46;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;5363:13:10;5571:10440:46;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;1873:13:19;5571:10440:46;;:::i;:::-;;;;-1:-1:-1;5571:10440:46;;;;;;;;;;;;1873:13:19;5571:10440:46;;;;;;;5363:13:10;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:13:19;5571:10440:46;;:::i;:::-;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;5571:10440:46;1873:13:19;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;5571:10440:46;;;;;;;;;;;;:::o;:::-;-1:-1:-1;5571:10440:46;1896:17:19;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;5571:10440:46;;;;;;;;;;;;;;;;1896:17:19;5571:10440:46;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;1896:17:19;5571:10440:46;:::o;:::-;;;;-1:-1:-1;5571:10440:46;;;;;;;;;;;1896:17:19;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1896:17:19;5571:10440:46;:::o;:::-;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11414:278;;-1:-1:-1;;;;;5571:10440:46;;2489:19:19;;5571:10440:46;;-1:-1:-1;5571:10440:46;2571:9:19;5571:10440:46;;;-1:-1:-1;5571:10440:46;;;11602:18;5571:10440;11586:12;5571:10440;;;;;;;:::i;:::-;11586:34;11582:104;;11414:278;:::o;11582:104::-;11647:21;;11636:39;11647:21;;-1:-1:-1;;;;;5571:10440:46;;;12460:14:47;5571:10440:46;;;;;;;11647:21;5571:10440;11636:39;;:::i;5571:10440::-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;13295:182:19;5571:10440:46;-1:-1:-1;5571:10440:46;13369:15:19;5571:10440:46;;13369:29:19;5571:10440:46;;-1:-1:-1;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;;;;;;;;;13369:29:19;-1:-1:-1;;;;;13422:34:19;;;;:::i;:::-;5571:10440:46;;;13413:57:19;;-1:-1:-1;13413:57:19;;13295:182::o;13325:296:46:-;-1:-1:-1;;;;;5571:10440:46;;;;5894:42:44;13467:23:46;;13463:40;;5797:42:44;13517:27:46;13513:44;;5571:10440;;4980:35:19;5571:10440:46;;-1:-1:-1;5571:10440:46;4980:18:19;5571:10440:46;;;-1:-1:-1;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;;;;;;;;;;4980:35:19;5571:10440:46;;13325:296;:::o;13513:44::-;13546:11;;;13553:4;13546:11;:::o;13463:40::-;13492:11;;;;13499:4;13492:11;:::o;5571:10440::-;;;;:::o;:::-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;8012:272:19;8137:34;;;:::i;:::-;5571:10440:46;-1:-1:-1;;;;;5571:10440:46;;;;;;;;8189:16:19;;:52;;;;;8012:272;8189:87;;;;;;8012:272;8181:96;;;8012:272;:::o;8189:87::-;8245:20;;;;;;:::i;:::-;5571:10440:46;8245:31:19;8189:87;;;;;:52;8209:32;;;;;:::i;:::-;8189:52;;;;;5571:10440:46;;;;:::o;:::-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;11928:1255:19;12047:92;11928:1255;12055:34;;;:::i;:::-;-1:-1:-1;;;;;5571:10440:46;;;;;;;;12055:42:19;;12047:92;:::i;:::-;5571:10440:46;;12157:16:19;;5571:10440:46;;13097:27:19;5571:10440:46;;;;;:::i;:::-;12359:92:19;12367:34;:42;:34;;;:::i;:::-;-1:-1:-1;;;;;5571:10440:46;;;12367:42:19;;12359:92;:::i;:::-;5571:10440:46;12520:24:19;;5571:10440:46;;12520:15:19;5571:10440:46;;;;;;;12520:24:19;5571:10440:46;;;;;;;;12988:15:19;;-1:-1:-1;;;;;5571:10440:46;;;12988:9:19;5571:10440:46;;;;;;;12988:15:19;-1:-1:-1;;5571:10440:46;;;;;13022:13:19;;-1:-1:-1;;;;;5571:10440:46;;;12988:9:19;5571:10440:46;;;;;;;13022:13:19;12265:1;5571:10440:46;;;;;13060:21:19;:16;;;5571:10440:46;;13060:7:19;5571:10440:46;;;;;;;13060:16:19;5571:10440:46;-1:-1:-1;;;;;5571:10440:46;;;;;;;;;13060:21:19;13097:27;12171:1;13097:27;;;:::i;5571:10440:46:-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;9090:391;-1:-1:-1;;;;;5571:10440:46;9270:18;;:84;;;;9090:391;9253:149;;;9090:391::o;9253:149::-;9372:30;5571:10440;;9372:30;;;;9270:84;5571:10440;;9286:1;5571:10440;9305:10;5571:10440;;;;9286:1;5571:10440;;;9305:48;;;;9270:84;;;;9305:48;5571:10440;;9333:20;5571:10440;;;;9305:48;;9487:399;6292:6:8;9487:399:46;-1:-1:-1;;;;;5571:10440:46;;;6054:18:8;;;6050:85;;9487:399:46;5571:10440;;;6148:16:8;;;6144:88;;9487:399:46;6070:1:8;5571:10440:46;4287:11:8;5571:10440:46;;;;6070:1:8;5571:10440:46;;;;6070:1:8;5571:10440:46;;6070:1:8;5571:10440:46;;;6292:6:8;;:::i;:::-;5571:10440:46;9767:14;5571:10440;;;;9767:19;;9763:117;;9487:399;;:::o;9763:117::-;9807:13;;;:::i;:::-;:30;9803:66;;9487:399::o;9803:66::-;9846:23;5571:10440;;9846:23;;;;6144:88:8;6180:41;;:::i;:::-;6144:88;;;;6050:85;6088:36;;:::i;:::-;6050:85;;;;9487:399:46;6088:36:8;;:::i;:::-;5571:10440:46;;6292:6:8;-1:-1:-1;;;;;5571:10440:46;;;6148:16:8;;;6144:88;;9487:399:46;4287:11:8;5571:10440:46;;;;;;;;;;;;;;;;;6292:6:8;:::i;6144:88::-;6180:41;;:::i;:::-;6144:88;;;;5571:10440:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;5571:10440:46;;;;:::o;:::-;;;:::o;14689:853:19:-;;;;;1476:19:25;;:23;14858:15:19;;14893:82;5571:10440:46;14893:82:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;;;;;;;;;14893:82:19;;;;929:10:27;14893:82:19;;;;:::i;:::-;;5571:10440:46;;14893:82:19;;5571:10440:46;;14893:82:19;;;14854:682;-1:-1:-1;14889:595:19;;15103:381;;:::i;:::-;5571:10440:46;;;15153:18:19;;;5571:10440:46;;-1:-1:-1;;;15195:60:19;;5571:10440:46;14893:82:19;15195:60;;5571:10440:46;;;;;;;;;;;;;;;;;;;15149:321:19;14893:82;15357:95;;14889:595;5571:10440:46;;15025:62:19;15018:69;:::o;14893:82::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5571:10440:46;;;;:::o;:::-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;9574:920:19;-1:-1:-1;;;;;5571:10440:46;;9653:16:19;;;5571:10440:46;;10396:33:19;8640:22:46;9716:58:19;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;8640:22:46;9724:17:19;9716:58;:::i;:::-;9920;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;9920:58;10320:13;;-1:-1:-1;;;;;5571:10440:46;;;12988:9:19;5571:10440:46;;;;;;;10320:13:19;9831:1;5571:10440:46;;;;;10359:21:19;:16;;;5571:10440:46;;13060:7:19;5571:10440:46;;;;;;;10359:21:19;-1:-1:-1;10396:33:19;;;;;:::i;5571:10440:46:-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;9485:302:47;;;;:::i;:::-;9593:12;5571:10440:46;;;;;;;;;;;:::i;:::-;9589:71:47;;5571:10440:46;;;;;;;;;;;;;;;;;;-1:-1:-1;9670:72:47;;-1:-1:-1;10216:9:47;;10227:10;;;;;;9485:302;;;;;;:::o;10216:9::-;5571:10440:46;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5571:10440:46;;9653:16:19;;5571:10440:46;;9716:58:19;9724:17;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;8640:22:46;9724:17:19;;5571:10440:46;9724:17:19;9716:58;:::i;:::-;9920;9928:17;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;9920:58;10320:13;;-1:-1:-1;;;;;5571:10440:46;;;12988:9:19;5571:10440:46;;;;;;;10320:13:19;5571:10440:46;;;;;;10359:21:19;:16;;;5571:10440:46;;13060:7:19;5571:10440:46;;;;;;;10359:21:19;10396:33;;;;;;;;:::i;:::-;5571:10440:46;10216:9:47;;5571:10440:46;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;11659:585:47;;;;:::i;:::-;11763:12;5571:10440:46;;11779:18:47;5571:10440:46;;;;;;;;:::i;:::-;11763:34:47;11759:67;;5571:10440:46;;;11840:22:47;5571:10440:46;;;;11840:22:47;:::i;:::-;5571:10440:46;;;;-1:-1:-1;11836:72:47;;12063:29;11984:12;12063:29;11984:12;11999:1;11984:12;5571:10440:46;11779:18:47;11943;;-1:-1:-1;;;;;5571:10440:46;;;12460:14:47;5571:10440:46;;;;;;;11943:18:47;:38;5571:10440:46;12014:18:47;;-1:-1:-1;;;;;5571:10440:46;;;12460:14:47;5571:10440:46;;;;;;;12014:18:47;5571:10440:46;;;;;;;;11763:12:47;5571:10440:46;;;;;;;;;;;12063:29:47;5571:10440:46;;-1:-1:-1;;7296:12:47;5571:10440:46;;;7296:12:47;5571:10440:46;;12063:29:47;11763:12;5571:10440:46;;;;;;;12113:117:47;;11659:585;;:::o;13496:346::-;;;;13600:10;;;13496:346;;;:::o;13593:243::-;13646:28;;;;:::i;:::-;5571:10440:46;-1:-1:-1;;;;;5571:10440:46;;9653:16:19;;;5571:10440:46;;-1:-1:-1;;8640:22:46;9716:58:19;9724:17;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;9716:58;9920;9928:17;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;9920:58;10320:13;;-1:-1:-1;;;;;5571:10440:46;;;12988:9:19;5571:10440:46;;;;;;;10320:13:19;9831:1;5571:10440:46;;;;;10359:21:19;:16;;;5571:10440:46;;13060:7:19;5571:10440:46;;;;;;;10359:21:19;5571:10440:46;10396:33:19;;;;;;;:::i;:::-;5571:10440:46;;13593:243:47;;13496:346;;;;13600:10;;;13496:346;;;;:::o;13593:243::-;13646:28;;;;:::i;:::-;5571:10440:46;-1:-1:-1;;;;;5571:10440:46;;9653:16:19;;;5571:10440:46;;8640:22;-1:-1:-1;;8640:22:46;9716:58:19;9724:17;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;9716:58;9920;9928:17;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;9920:58;10320:13;;-1:-1:-1;;;;;5571:10440:46;;;12988:9:19;5571:10440:46;;;;;;;10320:13:19;9831:1;5571:10440:46;;;;;10359:21:19;:16;;;5571:10440:46;;13060:7:19;5571:10440:46;;;;;;;10359:21:19;13609:1:47;10396:33:19;;;;;;;;:::i;:::-;13720:41:47;;13593:243;-1:-1:-1;5571:10440:46;;13593:243:47;;13720:41;13735:19;:26;:19;5571:10440:46;;20750:10:47;5571:10440:46;;;;;;;13735:26:47;13720:41;;;13848:352;;5571:10440:46;;13988:37:47;;;;5571:10440:46;;;;;;;;13988:37:47;;;;;:::i;:::-;5571:10440:46;13978:48:47;;5571:10440:46;14030:15:47;5571:10440:46;;;;;;;;;;;;13969:81:47;5571:10440:46;;13969:81:47;:::i;:::-;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;8640:22:46;14068:16:47;;;5571:10440:46;;;;14049:1:47;5571:10440:46;;;14061:133:47;;14068:16;;;;;13848:352::o;15453:328::-;;;;:::i;:::-;15581:12;5571:10440:46;15597:19:47;5571:10440:46;;;;;;;;:::i;:::-;15581:35:47;15577:68;;5571:10440:46;;;;;;;;;;;;;;;;;-1:-1:-1;15656:81:47;;15765:8;;;:::i;5571:10440:46:-;;;;;;;;;;;;;;;:::o;16223:505:47:-;5571:10440:46;;16403:34:47;5571:10440:46;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;;;;;;;;-1:-1:-1;16473:15:47;;;;;;16223:505;;;;;;:::o;16462:9::-;16524:11;;;;:::i;:::-;5571:10440:46;16554:12:47;;;:41;;;;16462:9;16550:70;;8818:7:46;5571:10440;8818:7;;;:::i;:::-;5571:10440;16462:9:47;;16550:70;16604:16;5571:10440:46;;16604:16:47;;;;16554:41;5571:10440:46;;;;;;;16570:25:47;;16554:41;;5571:10440:46;;;;:::o;:::-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;8477:287:44;5571:10440:46;;;;;8598:73:44;;8663:4;8598:73;;;5571:10440:46;8598:73:44;8615:8;5571:10440:46;8615:8:44;-1:-1:-1;;;;;8615:8:44;5571:10440:46;8598:73:44;;5571:10440:46;;8598:73:44;;;8594:164;;;8477:287;:::o;6125:128:6:-;6180:66;6188:7;;:::i;5571:10440:46:-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;22000:20:47;5571:10440:46;;;;;;;:::o;6130:51:44:-;;;;5571:10440:46;;;;;;;6130:51:44;;;;;;:::o;21670:2206:47:-;;;;;;;;;;21954:11;;21950:39;;5571:10440:46;;;;:::i;:::-;22000:41:47;5571:10440:46;;;22000:41:47;:::i;:::-;5571:10440:46;;;;;;;:::i;:::-;;22055:43:47;22051:79;;22145:11;5571:10440:46;;;;22145:20:47;5571:10440:46;;;;22145:20:47;:::i;:::-;5571:10440:46;;;;;-1:-1:-1;22141:70:47;;5571:10440:46;;;;;;;:::i;:::-;22226:33:47;22222:62;;5571:10440:46;;;;22438:448:47;;;;5571:10440:46;22438:448:47;;22640:13;;;;22568:4;;22438:448;;;;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22438:448:47;;;;;;;;;;;;;;:::i;:::-;5571:10440:46;22407:497:47;;22350:568;;;:::i;:::-;5571:10440:46;;;;;:::i;:::-;22312:639:47;;;:::i;:::-;-1:-1:-1;;;;;5571:10440:46;6138:42:44;22966:28:47;;;:49;;;;21670:2206;22962:81;;;23054:222;;;23090:9;;23086:57;;23054:222;22145:11;5571:10440:46;;;;;;;;:::i;:::-;23306:19:47;23290:35;;23306:19;;5571:10440:46;;;;;;;23346:25:47;23342:66;;23449:9;;;;;:::i;23342:66::-;23380:28;5571:10440:46;;23380:28:47;;;;23286:584;5571:10440:46;;;;;;;;;;;;:::i;:::-;23496:18:47;23480:34;;23496:18;;5571:10440:46;;6130:51:44;23555:27:47;23597:29;5571:10440:46;23597:29:47;5571:10440:46;23670:9:47;5571:10440:46;;;23555:27:47;;;5571:10440:46;23555:27:47;;6130:51:44;;;;:::i;:::-;23555:27:47;;;;;;;;:::i;:::-;5571:10440:46;23545:38:47;;5571:10440:46;;;;22145:11:47;5571:10440:46;;;;;;23597:29:47;:::i;:::-;23670:9;:::i;23476:394::-;5571:10440:46;;;;;;;;;;:::i;:::-;23701:38:47;;23783:9;;;;;:::i;23697:173::-;23832:27;5571:10440:46;;23832:27:47;;;;23086:57;23113:30;5571:10440:46;;23113:30:47;;;;23054:222;23179:14;;;23175:42;;23054:222;23258:6;;;:::i;:::-;23054:222;;23175:42;23207:10;5571:10440:46;;-1:-1:-1;23175:42:47;;22962:81;23024:19;5571:10440:46;;23024:19:47;;;;22966:49;23008:7;;22998:17;23008:7;;:::i;22998:17::-;;;22966:49;;;22222:62;22268:16;5571:10440:46;;22268:16:47;;;;22051:79;22107:23;5571:10440:46;;22107:23:47;;;;21950:39;21974:15;5571:10440:46;;21974:15:47;;;;3683:227:30;5571:10440:46;;3871:5:30;;3822:27;;3683:227;2305:2;2285:22;2305:2;;2768:25;2568:180;;;;;;;;;;;;;;-1:-1:-1;2568:180:30;2768:25;;:::i;:::-;2761:32;;:::o;2281:610::-;2824:56;;2840:1;2824:56;2844:35;2824:56;:::o;7278:265::-;5571:10440:46;;7477:58:30;;;5571:10440:46;;;;;;;;;7477:58:30;;;;;:::i;:::-;5571:10440:46;7467:69:30;;7278:265;:::o;9793:332:47:-;;-1:-1:-1;9885:9:47;;9896:10;;;;;;9793:332;;;;;:::o;9885:9::-;9962:13;5571:10440:46;;;;-1:-1:-1;;5571:10440:46;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5571:10440:46;;9653:16:19;;5571:10440:46;;9716:58:19;9724:17;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;9716:58;9920;9928:17;8640:22:46;;-1:-1:-1;5571:10440:46;7402:7:19;5571:10440:46;;-1:-1:-1;;;;;5571:10440:46;-1:-1:-1;5571:10440:46;;;7816:31:19;;7728:126;;9920:58;10320:13;;-1:-1:-1;;;;;5571:10440:46;;;12988:9:19;5571:10440:46;;;;;;;10320:13:19;5571:10440:46;;;;;;10359:21:19;:16;;;5571:10440:46;;13060:7:19;5571:10440:46;;;;;;;10359:21:19;10396:33;;;;;;;;;:::i;:::-;10004:45:47;;9885:9;5571:10440:46;;9885:9:47;;10004:45;10019:23;5571:10440:46;10019:30:47;5571:10440:46;;;;;;10019:30:47;10004:45;;;15787:430;;15929:8;15787:430;15929:8;:::i;:::-;5571:10440:46;;16003:208:47;;;15787:430;;:::o;16003:208::-;-1:-1:-1;16037:9:47;;16048:15;;;;;;16003:208;;15787:430;;:::o;16037:9::-;16096:11;;;;:::i;:::-;5571:10440:46;;;16085:10:47;5571:10440:46;;;;;16111:4:47;;5571:10440:46;;;;;;;;;;16037:9:47;;5571:10440:46;;;;;;;;;;;;;:::o;25114:1062:47:-;;5571:10440:46;25302:26:47;;-1:-1:-1;;;;;5571:10440:46;;;25302:15:47;5571:10440:46;;;;;;;25302:26:47;5571:10440:46;;;;;25374:39:47;:26;;-1:-1:-1;;;;;5571:10440:46;;;25302:15:47;5571:10440:46;;;;;;;25374:26:47;5571:10440:46;;;;;;;25374:39:47;25456:26;25736:28;25456:46;:26;;-1:-1:-1;;;;;5571:10440:46;;;25302:15:47;5571:10440:46;;;;;;;25456:26:47;5571:10440:46;;;;;;;25456:46:47;25298:398;25736:28;:::i;:::-;5571:10440:46;25734:54:47;25735:43;25768:10;5571:10440:46;;;;;25735:43:47;:::i;:::-;25736:6;5571:10440:46;;;;25734:54:47;25833:6;;;;:::i;:::-;-1:-1:-1;;;;;5571:10440:46;;25854:23:47;;25850:320;;25298:398;25114:1062;;;;;;:::o;25850:320::-;26062:54;5571:10440:46;25920:46:47;25919:66;5571:10440:46;25920:55:47;5571:10440:46;26062:35:47;5571:10440:46;;25920:46:47;:::i;:::-;:55;:::i;25919:66::-;5571:10440:46;25999:49:47;;5571:10440:46;25999:49:47;5571:10440:46;25999:49:47;:::i;:::-;;5571:10440:46;;25999:49:47;-1:-1:-1;;;;;5571:10440:46;;;26062:24:47;5571:10440:46;;;;;;;26062:35:47;5571:10440:46;;;26062:54:47;:::i;:::-;5571:10440:46;;26135:24:47;-1:-1:-1;26135:24:47;;25850:320;;;;;;;;25298:398;5571:10440:46;;;25302:15:47;5571:10440:46;;;;;;;;;;;25736:28:47;;25638:47;;:27;5571:10440:46;26182:806:47;26228:13;5571:10440:46;;;;;;;;:::i;:::-;26245:16:47;26228:33;;26224:758;;26182:806;:::o;26224:758::-;5571:10440:46;;;:::i;:::-;26298:19:47;26281:36;;26298:19;;-1:-1:-1;26360:18:47;5571:10440:46;26341:15:47;:37;26360:18;;26402:32;5571:10440:46;;26228:13:47;5571:10440:46;;;26228:13:47;5571:10440:46;;26402:32:47;5571:10440:46;26456:26:47;26360:18;5571:10440:46;;26337:237:47;26536:19;5571:10440:46;;26536:19:47;;;;26277:695;5571:10440:46;;26615:27:47;5571:10440:46;;:::i;:::-;26598:44:47;26615:27;;26684:18;5571:10440:46;26666:15:47;:36;26662:109;;26811:17;5571:10440:46;26666:15:47;26792:36;26277:695;26788:104;26615:27;5571:10440:46;;26859:14:47;;;;26594:378;26615:27;5571:10440:46;;26938:19:47;;;;26994:534;27079:15;5571:10440:46;;;;;;;;;;7257:1:47;5571:10440:46;;;;;;;27124:9:47;:35;27120:64;;26994:534::o;27120:64::-;27168:16;5571:10440:46;;27168:16:47;;;;27075:447;27220:16;;27216:29;;5571:10440:46;;;7257:1:47;5571:10440:46;;;27486:11:47;5571:10440:46;-1:-1:-1;;;;;27388:20:47;5571:10440:46;;27463:4:47;27427:10;;27486:11;;:::i;27216:29::-;27238:7;:::o;26994:534::-;27079:15;5571:10440:46;;;;;;;27138:20:47;;;;:::i;:::-;27124:9;:35;27120:64;;26994:534::o;27075:447::-;27220:16;;27216:29;;27486:11;27280:20;;;;:::i;:::-;-1:-1:-1;;;;;27388:20:47;5571:10440:46;;27463:4:47;27427:10;;27486:11;1040:252:18;;-1:-1:-1;1040:252:18;5341:69:25;1040:252:18;5571:10440:46;;1216:68:18;;;;;;;5571:10440:46;1216:68:18;;-1:-1:-1;;;;;5571:10440:46;;;;;1216:68:18;;;5571:10440:46;;;;;;;;;;;1216:68:18;;;;;:::i;:::-;5571:10440:46;;;;;;;;:::i;:::-;;;;;;;;;5293:31:25;;;;;;;;:::i;:::-;5341:69;;:::i;:::-;5571:10440:46;;4407:21:18;;4403:176;;1040:252;;;:::o;4403:176::-;4491:30;;;;;;;;;;:::i;:::-;5571:10440:46;;;1040:252:18;:::o;5571:10440:46:-;;;;;;-1:-1:-1;;;5571:10440:46;;;;;;;1216:68:18;5571:10440:46;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6589:628:25:-;;;;6793:418;;;5571:10440:46;;;6824:22:25;6820:286;;7119:17;;:::o;6820:286::-;1476:19;:23;5571:10440:46;;7119:17:25;:::o;5571:10440:46:-;;;;-1:-1:-1;;;5571:10440:46;;;;;;;;;;;;;;;;;;6793:418:25;5571:10440:46;;;;-1:-1:-1;7898:21:25;:17;;8070:142;;;;;;;7894:379;8242:20;5571:10440:46;;;8242:20:25;;;-1:-1:-1;;;8242:20:25;;;;;;:::i;27751:720:47:-;27819:21;5571:10440:46;;;;;;;;:::i;:::-;27844:35:47;27819:60;;27844:35;;-1:-1:-1;5571:10440:46;;;27896:65:47;;27945:4;27896:65;;;5571:10440:46;-1:-1:-1;;;;;5571:10440:46;;;;5688:51:44;;;5571:10440:46;27896:65:47;5571:10440:46;5688:51:44;5571:10440:46;6034:42:44;27896:65:47;;;;;;;;27815:648;27751:720::o;27896:65::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;27815:648;5571:10440:46;;;:::i;:::-;27983:69:47;27979:484;;27815:648;27751:720::o;27979:484::-;6034:42:44;28073:43:47;;28069:384;;27979:484;27238:7;:::o;28069:384::-;28144:80;;;;;5571:10440:46;;;28144:80:47;;28196:4;28144:80;;;5571:10440:46;5696:42:44;5688:51;;;5571:10440:46;-1:-1:-1;5571:10440:46;5688:51:44;5571:10440:46;-1:-1:-1;28144:80:47;;;;;;;28069:384;28140:299;;28069:384;28140:299;28329:65;28248:59;28329:65;28248:59;;5688:51:44;;27819:21:47;5688:51:44;;;27819:21:47;5688:51:44;;28248:59:47;5571:10440:46;;;28329:65:47;;28196:4;28144:80;28329:65;;5571:10440:46;-1:-1:-1;;;;;5571:10440:46;;;5688:51:44;;;5571:10440:46;;;;;-1:-1:-1;5571:10440:46;;;;5688:51:44;;;;;28329:65:47;;;;;;;;;;;6392:610:8;:::o;28144:80:47:-;;;;;;:::i;:::-;;;:::i;:::-;;;;28477:604;28570:505;;;;;;;;28544:15;;28570:505;;;;;;;;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"4571000","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite","DOMAIN_SEPARATOR()":"655","airdropRandom(address[],bool)":"infinite","airdropSequential(address[],bool)":"infinite","airdropSpecify(address[],uint256[],bool)":"infinite","approve(address,uint256)":"infinite","balanceOf(address)":"7487","delegate(address)":"infinite","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"infinite","delegates(address)":"2837","getApproved(uint256)":"4680","getPastTotalSupply(uint256)":"infinite","getPastVotes(address,uint256)":"infinite","getVotes(address)":"5392","initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":"infinite","isApprovedForAll(address,address)":"infinite","isMetadataFixed()":"4577","maxPerAddress()":"2758","mint()":"infinite","mint(uint256)":"infinite","mint(uint256,address)":"infinite","mintCustomURITo(address,bytes32,bool)":"infinite","mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":"infinite","mintPrice()":"2768","mintRandomTo(address,uint256)":"infinite","mintRandomTo(address,uint256,address)":"infinite","mintSpecifyTo(address,uint256[])":"infinite","mintSpecifyTo(address,uint256[],address)":"infinite","mintTo(address,uint256)":"infinite","mintTo(address,uint256,address)":"infinite","n2mVersion()":"1061","name()":"infinite","nonces(address)":"3026","owner()":"infinite","ownerOf(uint256)":"2927","redeemRandom()":"infinite","royaltyInfo(uint256,uint256)":"2605","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"infinite","supportsInterface(bytes4)":"384","symbol()":"infinite","tokenURI(uint256)":"infinite","totalSupply()":"2400","transferFrom(address,address,uint256)":"infinite"},"internal":{"_EIP712NameHash()":"infinite","_EIP712VersionHash()":"infinite","_afterTokenTransfer(address,address,uint256,uint256)":"infinite","_beforeTokenTransfer(address,address,uint256,uint256)":"infinite","_burn(uint256)":"infinite","_exists(uint256)":"infinite","_mint(address,uint256)":"infinite"}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","airdropRandom(address[],bool)":"be172edf","airdropSequential(address[],bool)":"68fdda33","airdropSpecify(address[],uint256[],bool)":"71e6775f","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","delegate(address)":"5c19a95c","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"c3cda520","delegates(address)":"587cde1e","getApproved(uint256)":"081812fc","getPastTotalSupply(uint256)":"8e539e8c","getPastVotes(address,uint256)":"3a46b1a8","getVotes(address)":"9ab24eb0","initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":"5066e5c2","isApprovedForAll(address,address)":"e985e9c5","isMetadataFixed()":"0de77eb8","maxPerAddress()":"639814e0","mint()":"1249c58b","mint(uint256)":"a0712d68","mint(uint256,address)":"94bf804d","mintCustomURITo(address,bytes32,bool)":"6ad54240","mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":"9d13a5ba","mintPrice()":"6817c76c","mintRandomTo(address,uint256)":"1d7df191","mintRandomTo(address,uint256,address)":"fefa5d72","mintSpecifyTo(address,uint256[])":"4402d254","mintSpecifyTo(address,uint256[],address)":"4a50aa85","mintTo(address,uint256)":"449a52f8","mintTo(address,uint256,address)":"438b1b4b","n2mVersion()":"cb93c48f","name()":"06fdde03","nonces(address)":"7ecebe00","owner()":"8da5cb5b","ownerOf(uint256)":"6352211e","redeemRandom()":"1ff4cc7d","royaltyInfo(uint256,uint256)":"2a55205a","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"libraryAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"factoryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filtered\",\"type\":\"address\"}],\"name\":\"AddressFiltered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantLowerCurrentPercentages\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantRevealYetWaitABitToBeAbleToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSetBaseURIAndPlaceholderAtTheSameTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CollectionSoldOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractMetadataURIAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputSizeMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDropDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputSizesDontMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFeeForFreeMinting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercentageOrDiscountValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPhaseWithoutDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevenuePercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerAddressExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetadataAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBaseURICantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPlaceholderCantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseURINorPlaceholderSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonTransferrableSoulboundNFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughAmountToMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAffiliateOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOwnerOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleInvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PublicSaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoyaltyFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaleFinished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyMinted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WaitUntilDropDate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"AffiliateSell\",\"type\":\"event\"},{\"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\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSequential\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSpecify\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"iMintPrice\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"baseURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"placeholderImageCIDHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"percentage\",\"type\":\"uint16\"}],\"internalType\":\"struct IN2M_ERCStorage.RevenueAddress[]\",\"name\":\"revenueAddresses\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"iErc20PaymentAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"iTotalSupply\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"iRoyaltyFee\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"soulboundCollection\",\"type\":\"bool\"},{\"internalType\":\"enum IN2M_ERCStorage.MintingType\",\"name\":\"iMintingType\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":[],\"name\":\"isMetadataFixed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPerAddress\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"customURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"mintCustomURITo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"freeMinting\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"customFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"mintPresale\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"collectionOwner\",\"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\":[],\"name\":\"redeemRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"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\":\"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\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":\"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\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"The NFTs2Me Team\",\"custom:security-contact\":\"security@nfts2me.com\",\"custom:terms-of-service\":\"https://nfts2me.com/terms-of-service/\",\"custom:website\":\"https://nfts2me.com/\",\"events\":{\"AffiliateSell(address)\":{\"params\":{\"affiliate\":\"The affiliate address\"}},\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"DelegateChanged(address,address,address)\":{\"details\":\"Emitted when an account changes their delegate.\"},\"DelegateVotesChanged(address,uint256,uint256)\":{\"details\":\"Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the contract's {EIP712} domain separator.\"},\"airdropRandom(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSequential(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSpecify(address[],uint256[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"operator\":\"The new approved NFT controller\",\"tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"owner\":\"An address for whom to query the balance\"},\"returns\":{\"balance\":\"The number of NFTs owned by `owner`, possibly zero\"}},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at the end of a past block (`blockNumber`). NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `blockNumber` must have been already mined\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at the end of a past block (`blockNumber`). Requirements: - `blockNumber` must have been already mined\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"isApprovedForAll(address,address)\":{\"params\":{\"operator\":\"The address that acts on behalf of the owner\",\"owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `operator` is an approved operator for `owner`, false otherwise\"}},\"maxPerAddress()\":{\"returns\":{\"_0\":\"Max per address allowed.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint\"}},\"mint(uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint\"}},\"mintCustomURITo(address,bytes32,bool)\":{\"params\":{\"customURICIDHash\":\"The CID of the given token.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The address of the NFTs receiver\"}},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"amount\":\"Amount to mint.\",\"customFee\":\"Zero is fee is different from `mintingPrice`.\",\"freeMinting\":\"True is minting is free\",\"maxAmount\":\"Max Amount to be minted with the given `signature`.\",\"signature\":\"Valid `signature` for the presale/whitelist.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\"}},\"mintPrice()\":{\"returns\":{\"_0\":\"Mint price for one NFT in native coin or ERC-20.\"}},\"mintRandomTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintRandomTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintSpecifyTo(address,uint256[])\":{\"params\":{\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintSpecifyTo(address,uint256[],address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"nonces(address)\":{\"details\":\"Returns an address nonce.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"royaltyInfo(uint256,uint256)\":{\"params\":{\"salePrice\":\"The sale price\"},\"returns\":{\"receiver\":\"the receiver of the royalties.\",\"royaltyAmount\":\"the amount of the royalties for the given input.\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"from\":\"The current owner of the NFT\",\"to\":\"The new owner\",\"tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `from` is not the current owner. Throws if `to` is the zero address. Throws if `tokenId` is not a valid NFT. When transfer is complete, this function checks if `to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`\",\"from\":\"The current owner of the NFT\",\"to\":\"The new owner\",\"tokenId\":\"The NFT to transfer\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"approved\":\"True if the operator is approved, false to revoke approval\",\"operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceId\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceId` and `interfaceId` is not 0xffffffff, `false` otherwise\"}},\"symbol()\":{\"returns\":{\"_0\":\"the collection symbol\"}},\"tokenURI(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \\\"ERC721 Metadata JSON Schema\\\".\"},\"totalSupply()\":{\"returns\":{\"_0\":\"Current total supply.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `from` is not the current owner. Throws if `to` is the zero address. Throws if `tokenId` is not a valid NFT.\",\"params\":{\"from\":\"The current owner of the NFT\",\"to\":\"The new owner\",\"tokenId\":\"The NFT to transfer\"}}},\"title\":\"NFTs2Me.com Smart Contracts for ERC-721.\",\"version\":1},\"userdoc\":{\"errors\":{\"AddressFiltered(address)\":[{\"notice\":\"Operator address is filtered\"}],\"CantLowerCurrentPercentages()\":[{\"notice\":\"Can't lower current percentages\"}],\"CantRevealYetWaitABitToBeAbleToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets too soon\"}],\"CantSetBaseURIAndPlaceholderAtTheSameTime()\":[{\"notice\":\"Can't set BaseURI and Placeholder at the same time\"}],\"CollectionSoldOut()\":[{\"notice\":\"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\"}],\"ContractMetadataURIAlreadyFixed()\":[{\"notice\":\"Contract MetadataURI already fixed\"}],\"InputSizeMismatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidAmount()\":[{\"notice\":\"Error thrown when the input amount is not valid\"}],\"InvalidDropDate()\":[{\"notice\":\"Invalid drop date\"}],\"InvalidInputSizesDontMatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidMintFee()\":[{\"notice\":\"Error thrown when the sent amount is not valid\"}],\"InvalidMintFeeForFreeMinting()\":[{\"notice\":\"Error thrown when sending funds to a free minting\"}],\"InvalidMintingType()\":[{\"notice\":\"Invalid collection minting type for the current minting function\"}],\"InvalidPercentageOrDiscountValues()\":[{\"notice\":\"Invalid percentage or discount values\"}],\"InvalidPhaseWithoutDate()\":[{\"notice\":\"Invalid phase can't be set without giving a date, use the proper functions\"}],\"InvalidRevenuePercentage()\":[{\"notice\":\"The input revenue percentages are not valid\"}],\"InvalidTokenId()\":[{\"notice\":\"Error thrown when trying to mint a token with a given invalid id\"}],\"MaxPerAddressExceeded()\":[{\"notice\":\"The address exceeded the max per address amount\"}],\"MetadataAlreadyFixed()\":[{\"notice\":\"Metadata is already fixed. Can't change metadata once fixed\"}],\"NewBaseURICantBeEmpty()\":[{\"notice\":\"New BaseURI can't be empty\"}],\"NewPlaceholderCantBeEmpty()\":[{\"notice\":\"New Placeholder can't be empty\"}],\"NoBaseURINorPlaceholderSet()\":[{\"notice\":\"No BaseURI nor Placeholder set\"}],\"NonTransferrableSoulboundNFT()\":[{\"notice\":\"Can't transfer a Soulbound Token (SBT)\"}],\"NotEnoughAmountToMint()\":[{\"notice\":\"Error thrown when trying to mint more than the allowance to mint\"}],\"NothingToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets with no amount to redeem\"}],\"OnlyAffiliateOrN2M()\":[{\"notice\":\"Only the given affiliate or N2M can call this function\"}],\"OnlyOwnerOrN2M()\":[{\"notice\":\"Only owner of N2M can call this function\"}],\"PresaleInvalidMintingType()\":[{\"notice\":\"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\"}],\"PresaleNotOpen()\":[{\"notice\":\"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\"}],\"PublicSaleNotOpen()\":[{\"notice\":\"Error thrown when trying to mint and the collection current phase is not `open`\"}],\"ReentrancyGuard()\":[{\"notice\":\"Reentrancy Guard protection\"}],\"RoyaltyFeeTooHigh()\":[{\"notice\":\"Royalty fee can't be higher than 10%\"}],\"SaleFinished()\":[{\"notice\":\"Error thrown when trying to mint but the sale has already finished\"}],\"SignatureExpired()\":[{\"notice\":\"The signature has expired\"}],\"SignatureMismatch()\":[{\"notice\":\"The given signature doesn't match the input values\"}],\"TokenAlreadyMinted()\":[{\"notice\":\"Error thrown when trying to mint a token with a given id which is already minted\"}],\"TotalSupplyMustBeGreaterThanZero()\":[{\"notice\":\"Invalid input. Total supply must be greater than zero\"}],\"WaitUntilDropDate()\":[{\"notice\":\"Can't mint until specified drop date\"}]},\"events\":{\"AffiliateSell(address)\":{\"notice\":\"This event is emitted when a token is minted using an affiliate\"}},\"kind\":\"user\",\"methods\":{\"airdropRandom(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\"},\"airdropSequential(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\"},\"airdropSpecify(address[],uint256[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\"},\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)\":{\"notice\":\"To be called to create the collection. Can only be called once.\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"isMetadataFixed()\":{\"notice\":\"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\"},\"maxPerAddress()\":{\"notice\":\"Max amount of NFTs to be hold per address.\"},\"mint()\":{\"notice\":\"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256,address)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintCustomURITo(address,bytes32,bool)\":{\"notice\":\"Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\"},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\"},\"mintPrice()\":{\"notice\":\"Returns the minting price of one NFT.\"},\"mintRandomTo(address,uint256)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintRandomTo(address,uint256,address)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintSpecifyTo(address,uint256[])\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintSpecifyTo(address,uint256[],address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256)\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256,address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"n2mVersion()\":{\"notice\":\"Current version of the nfts2me.com contracts.\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"owner()\":{\"notice\":\"Returns the address of the current collection owner.\"},\"redeemRandom()\":{\"notice\":\"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\"},\"royaltyInfo(uint256,uint256)\":{\"notice\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"totalSupply()\":{\"notice\":\"Returns the current total supply.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"notice\":\"Read our terms of service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/N2MERC721.sol\":\"N2MERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IN2MCrossFactory {\\n function getN2MTreasuryAddress() external pure returns (address);\\n function ownerOf(uint256 tokenId) external view returns (address);\\n function strictOwnerOf(uint256 tokenId) external view returns (address);\\n}\\n\",\"keccak256\":\"0xa82780a2da4848f8c0f93e1a2da64e9b7e90869803050e6921863fe5683af43d\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCBase is IERC2981Upgradeable, IN2M_ERCStorage {\\n /// @notice To be called to create the collection. Can only be called once.\\n function initialize\\n (\\n string memory tokenName,\\n string memory tokenSymbol,\\n uint256 iMintPrice,\\n bytes32 baseURICIDHash,\\n bytes32 placeholderImageCIDHash,\\n RevenueAddress[] calldata revenueAddresses,\\n address iErc20PaymentAddress,\\n uint32 iTotalSupply,\\n uint16 iRoyaltyFee,\\n bool soulboundCollection,\\n MintingType iMintingType\\n ) external payable;\\n\\n /// @notice A descriptive name for a collection of NFTs in this contract\\n function name() external view returns (string memory);\\n\\n /// @notice An abbreviated name for NFTs in this contract\\n /// @return the collection symbol\\n function symbol() external view returns (string memory);\\n\\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\\n /// 3986. The URI may point to a JSON file that conforms to the \\\"ERC721\\n /// Metadata JSON Schema\\\".\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable; \\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds) external payable; \\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) external payable; \\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(address[] memory to, uint256[] memory tokenIds, bool soulbound) external payable;\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale (\\n address to, \\n uint256[] memory tokenIds,\\n bool freeMinting, \\n uint256 customFee, \\n uint256 maxAmount,\\n uint256 amount, \\n bool soulbound,\\n bytes calldata signature) payable external;\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256);\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256);\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view returns (uint16);\\n\\n}\\n\\n\",\"keccak256\":\"0xfded09e330fd4f048b81b38352d7c4480b09f691dc1360a6857f1b5d9681b7f4\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"../important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0xfda5b953ecaa603de1c1b1c789767ea9aa2e1b9d5e12b7e1af68c581e35c225f\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IOperatorFilterRegistry {\\n function isOperatorAllowed(address registrant, address operator) external view returns (bool);\\n function register(address registrant) external;\\n function registerAndSubscribe(address registrant, address subscription) external;\\n function registerAndCopyEntries(address registrant, address registrantToCopy) external;\\n function updateOperator(address registrant, address operator, bool filtered) external;\\n function updateOperators(address registrant, address[] calldata operators, bool filtered) external;\\n function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;\\n function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;\\n function subscribe(address registrant, address registrantToSubscribe) external;\\n function unsubscribe(address registrant, bool copyExistingEntries) external;\\n function subscriptionOf(address addr) external returns (address registrant);\\n function subscribers(address registrant) external returns (address[] memory);\\n function subscriberAt(address registrant, uint256 index) external returns (address);\\n function copyEntriesOf(address registrant, address registrantToCopy) external;\\n function isOperatorFiltered(address registrant, address operator) external returns (bool);\\n function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);\\n function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);\\n function filteredOperators(address addr) external returns (address[] memory);\\n function filteredCodeHashes(address addr) external returns (bytes32[] memory);\\n function filteredOperatorAt(address registrant, uint256 index) external returns (address);\\n function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);\\n function isRegistered(address addr) external view returns (bool);\\n function codeHashOf(address addr) external view returns (bytes32);\\n}\",\"keccak256\":\"0x94297c604eea7c0dcac072ec8257d58f3927fc2c1f22b41c9f78d82e4a8cf5a5\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract NFTOwnableUpgradeable is Initializable, ContextUpgradeable {\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n modifier onlyStrictOwner() {\\n _checkStrictOwner();\\n _;\\n }\\n\\n modifier onlyOwnerOrN2M() {\\n _checkOwnerOrN2M();\\n _;\\n }\\n\\n modifier onlyN2M() {\\n _checkN2M();\\n _;\\n }\\n\\n /// @notice Returns the address of the current collection owner.\\n /// @return The address of the owner.\\n function owner() public view virtual returns (address);\\n function _strictOwner() internal view virtual returns (address);\\n function _getN2MFeeAddress() internal view virtual returns (address);\\n\\n function _checkOwner() internal view virtual {\\n require(owner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkStrictOwner() internal view virtual {\\n require(_strictOwner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkOwnerOrN2M() internal view virtual {\\n require(owner() == msg.sender || _getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkN2M() internal view virtual {\\n require(_getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n}\",\"keccak256\":\"0x0b3a2ca7a3f09ec6c3e387f9102e32bf755baf64986076d114f584fea0f17b38\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/IVotes.sol)\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\\n *\\n * _Available since v4.5._\\n */\\ninterface IVotesUpgradeable {\\n /**\\n * @dev Emitted when an account changes their delegate.\\n */\\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\\n\\n /**\\n * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\\n */\\n event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance);\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n */\\n function getPastVotes(address account, uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n */\\n function getPastTotalSupply(uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) external view returns (address);\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) external;\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n}\\n\",\"keccak256\":\"0xe8e2d2f70db1913260634f710cc057d669b06eccf4dca27e18b79c3bbb101da6\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (governance/utils/Votes.sol)\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/CountersUpgradeable.sol\\\";\\nimport \\\"../../utils/CheckpointsUpgradeable.sol\\\";\\nimport \\\"../../utils/cryptography/EIP712Upgradeable.sol\\\";\\nimport \\\"./IVotesUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This is a base abstract contract that tracks voting units, which are a measure of voting power that can be\\n * transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of\\n * \\\"representative\\\" that will pool delegated voting units from different accounts and can then use it to vote in\\n * decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to\\n * delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative.\\n *\\n * This contract is often combined with a token contract such that voting units correspond to token units. For an\\n * example, see {ERC721Votes}.\\n *\\n * The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed\\n * at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the\\n * cost of this history tracking optional.\\n *\\n * When using this module the derived contract must implement {_getVotingUnits} (for example, make it return\\n * {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the\\n * previous example, it would be included in {ERC721-_beforeTokenTransfer}).\\n *\\n * _Available since v4.5._\\n */\\nabstract contract VotesUpgradeable is Initializable, IVotesUpgradeable, ContextUpgradeable, EIP712Upgradeable {\\n function __Votes_init() internal onlyInitializing {\\n }\\n\\n function __Votes_init_unchained() internal onlyInitializing {\\n }\\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\\n using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n bytes32 private constant _DELEGATION_TYPEHASH =\\n keccak256(\\\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\\\");\\n\\n mapping(address => address) private _delegation;\\n mapping(address => CheckpointsUpgradeable.History) private _delegateCheckpoints;\\n CheckpointsUpgradeable.History private _totalCheckpoints;\\n\\n mapping(address => CountersUpgradeable.Counter) private _nonces;\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) public view virtual override returns (uint256) {\\n return _delegateCheckpoints[account].latest();\\n }\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n *\\n * Requirements:\\n *\\n * - `blockNumber` must have been already mined\\n */\\n function getPastVotes(address account, uint256 blockNumber) public view virtual override returns (uint256) {\\n return _delegateCheckpoints[account].getAtProbablyRecentBlock(blockNumber);\\n }\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n *\\n * Requirements:\\n *\\n * - `blockNumber` must have been already mined\\n */\\n function getPastTotalSupply(uint256 blockNumber) public view virtual override returns (uint256) {\\n require(blockNumber < block.number, \\\"Votes: block not yet mined\\\");\\n return _totalCheckpoints.getAtProbablyRecentBlock(blockNumber);\\n }\\n\\n /**\\n * @dev Returns the current total supply of votes.\\n */\\n function _getTotalSupply() internal view virtual returns (uint256) {\\n return _totalCheckpoints.latest();\\n }\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) public view virtual override returns (address) {\\n return _delegation[account];\\n }\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) public virtual override {\\n address account = _msgSender();\\n _delegate(account, delegatee);\\n }\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public virtual override {\\n require(block.timestamp <= expiry, \\\"Votes: signature expired\\\");\\n address signer = ECDSAUpgradeable.recover(\\n _hashTypedDataV4(keccak256(abi.encode(_DELEGATION_TYPEHASH, delegatee, nonce, expiry))),\\n v,\\n r,\\n s\\n );\\n require(nonce == _useNonce(signer), \\\"Votes: invalid nonce\\\");\\n _delegate(signer, delegatee);\\n }\\n\\n /**\\n * @dev Delegate all of `account`'s voting units to `delegatee`.\\n *\\n * Emits events {IVotes-DelegateChanged} and {IVotes-DelegateVotesChanged}.\\n */\\n function _delegate(address account, address delegatee) internal virtual {\\n address oldDelegate = delegates(account);\\n _delegation[account] = delegatee;\\n\\n emit DelegateChanged(account, oldDelegate, delegatee);\\n _moveDelegateVotes(oldDelegate, delegatee, _getVotingUnits(account));\\n }\\n\\n /**\\n * @dev Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to`\\n * should be zero. Total supply of voting units will be adjusted with mints and burns.\\n */\\n function _transferVotingUnits(\\n address from,\\n address to,\\n uint256 amount\\n ) internal virtual {\\n if (from == address(0)) {\\n _totalCheckpoints.push(_add, amount);\\n }\\n if (to == address(0)) {\\n _totalCheckpoints.push(_subtract, amount);\\n }\\n _moveDelegateVotes(delegates(from), delegates(to), amount);\\n }\\n\\n /**\\n * @dev Moves delegated votes from one delegate to another.\\n */\\n function _moveDelegateVotes(\\n address from,\\n address to,\\n uint256 amount\\n ) private {\\n if (from != to && amount > 0) {\\n if (from != address(0)) {\\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[from].push(_subtract, amount);\\n emit DelegateVotesChanged(from, oldValue, newValue);\\n }\\n if (to != address(0)) {\\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[to].push(_add, amount);\\n emit DelegateVotesChanged(to, oldValue, newValue);\\n }\\n }\\n }\\n\\n function _add(uint256 a, uint256 b) private pure returns (uint256) {\\n return a + b;\\n }\\n\\n function _subtract(uint256 a, uint256 b) private pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Consumes a nonce.\\n *\\n * Returns the current value and increments nonce.\\n */\\n function _useNonce(address owner) internal virtual returns (uint256 current) {\\n CountersUpgradeable.Counter storage nonce = _nonces[owner];\\n current = nonce.current();\\n nonce.increment();\\n }\\n\\n /**\\n * @dev Returns an address nonce.\\n */\\n function nonces(address owner) public view virtual returns (uint256) {\\n return _nonces[owner].current();\\n }\\n\\n /**\\n * @dev Returns the contract's {EIP712} domain separator.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32) {\\n return _domainSeparatorV4();\\n }\\n\\n /**\\n * @dev Must return the voting units held by an account.\\n */\\n function _getVotingUnits(address) internal view virtual returns (uint256);\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[46] private __gap;\\n}\\n\",\"keccak256\":\"0x03d4e5b8237229d370c92981f6642e67c075c3cc4f759a76ea4c73a2b27d36e5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n */\\n function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n external\\n view\\n returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xcc70d8e2281fb3ff69e8ab242500f10142cd0a7fa8dd9e45882be270d4d09024\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/draft-IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n function safeTransfer(\\n IERC20Upgradeable token,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n function safeTransferFrom(\\n IERC20Upgradeable token,\\n address from,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n function safeIncreaseAllowance(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n uint256 newAllowance = token.allowance(address(this), spender) + value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n function safeDecreaseAllowance(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n uint256 newAllowance = oldAllowance - value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n }\\n\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n if (returndata.length > 0) {\\n // Return data is optional\\n require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n }\\n}\\n\",\"keccak256\":\"0x220c4a5af915e656be2aaa85ca57505d102418e476b1e2ef6c62e0c6ac143871\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.2) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n using AddressUpgradeable for address;\\n using StringsUpgradeable for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n __ERC721_init_unchained(name_, symbol_);\\n }\\n\\n function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n return\\n interfaceId == type(IERC721Upgradeable).interfaceId ||\\n interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0xac29c453f4cf43afe4c9599374b6e1ed493c18644d814554e8a5969aaa6f3486\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/extensions/ERC721URIStorage.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC721Upgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev ERC721 token with storage based token URI management.\\n */\\nabstract contract ERC721URIStorageUpgradeable is Initializable, ERC721Upgradeable {\\n function __ERC721URIStorage_init() internal onlyInitializing {\\n }\\n\\n function __ERC721URIStorage_init_unchained() internal onlyInitializing {\\n }\\n using StringsUpgradeable for uint256;\\n\\n // Optional mapping for token URIs\\n mapping(uint256 => string) private _tokenURIs;\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory _tokenURI = _tokenURIs[tokenId];\\n string memory base = _baseURI();\\n\\n // If there is no base URI, return the token URI.\\n if (bytes(base).length == 0) {\\n return _tokenURI;\\n }\\n // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\\n if (bytes(_tokenURI).length > 0) {\\n return string(abi.encodePacked(base, _tokenURI));\\n }\\n\\n return super.tokenURI(tokenId);\\n }\\n\\n /**\\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\\n require(_exists(tokenId), \\\"ERC721URIStorage: URI set of nonexistent token\\\");\\n _tokenURIs[tokenId] = _tokenURI;\\n }\\n\\n /**\\n * @dev See {ERC721-_burn}. This override additionally checks to see if a\\n * token-specific URI was set for the token, and if so, it deletes the token URI from\\n * the storage mapping.\\n */\\n function _burn(uint256 tokenId) internal virtual override {\\n super._burn(tokenId);\\n\\n if (bytes(_tokenURIs[tokenId]).length != 0) {\\n delete _tokenURIs[tokenId];\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/extensions/ERC721Votes.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC721Upgradeable.sol\\\";\\nimport \\\"../../../governance/utils/VotesUpgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Extension of ERC721 to support voting and delegation as implemented by {Votes}, where each individual NFT counts\\n * as 1 vote unit.\\n *\\n * Tokens do not count as votes until they are delegated, because votes must be tracked which incurs an additional cost\\n * on every transfer. Token holders can either delegate to a trusted representative who will decide how to make use of\\n * the votes in governance decisions, or they can delegate to themselves to be their own representative.\\n *\\n * _Available since v4.5._\\n */\\nabstract contract ERC721VotesUpgradeable is Initializable, ERC721Upgradeable, VotesUpgradeable {\\n function __ERC721Votes_init() internal onlyInitializing {\\n }\\n\\n function __ERC721Votes_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {ERC721-_afterTokenTransfer}. Adjusts votes when tokens are transferred.\\n *\\n * Emits a {IVotes-DelegateVotesChanged} event.\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual override {\\n _transferVotingUnits(from, to, batchSize);\\n super._afterTokenTransfer(from, to, firstTokenId, batchSize);\\n }\\n\\n /**\\n * @dev Returns the balance of `account`.\\n */\\n function _getVotingUnits(address account) internal view virtual override returns (uint256) {\\n return balanceOf(account);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x63df902b937900c1a0ed022ff39a8e995f1fdf5cbdddbba92c4db3f47661dcda\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(History storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _blockNumber,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace224 storage self,\\n uint32 key,\\n uint224 value\\n ) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _key,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint224[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint224 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace160 storage self,\\n uint96 key,\\n uint160 value\\n ) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint96 _key,\\n uint160 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint160 value\\n ) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint160[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint160 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x92fe8e1836627ba1baa62a2d4bd76c52ccfe53fec6650b609af33918be967a82\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n}\\n\",\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x12f297cafe6e2847ae0378502f155654d0764b532a9873c8afe4350950fa7971\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/EIP712.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ECDSAUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * _Available since v3.4._\\n *\\n * @custom:storage-size 52\\n */\\nabstract contract EIP712Upgradeable is Initializable {\\n /* solhint-disable var-name-mixedcase */\\n bytes32 private _HASHED_NAME;\\n bytes32 private _HASHED_VERSION;\\n bytes32 private constant _TYPE_HASH = keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\");\\n\\n /* solhint-enable var-name-mixedcase */\\n\\n /**\\n * @dev Initializes the domain separator and parameter caches.\\n *\\n * The meaning of `name` and `version` is specified in\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n *\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n * - `version`: the current major version of the signing domain.\\n *\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n * contract upgrade].\\n */\\n function __EIP712_init(string memory name, string memory version) internal onlyInitializing {\\n __EIP712_init_unchained(name, version);\\n }\\n\\n function __EIP712_init_unchained(string memory name, string memory version) internal onlyInitializing {\\n bytes32 hashedName = keccak256(bytes(name));\\n bytes32 hashedVersion = keccak256(bytes(version));\\n _HASHED_NAME = hashedName;\\n _HASHED_VERSION = hashedVersion;\\n }\\n\\n /**\\n * @dev Returns the domain separator for the current chain.\\n */\\n function _domainSeparatorV4() internal view returns (bytes32) {\\n return _buildDomainSeparator(_TYPE_HASH, _EIP712NameHash(), _EIP712VersionHash());\\n }\\n\\n function _buildDomainSeparator(\\n bytes32 typeHash,\\n bytes32 nameHash,\\n bytes32 versionHash\\n ) private view returns (bytes32) {\\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\\n }\\n\\n /**\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\n *\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n *\\n * ```solidity\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n * keccak256(\\\"Mail(address to,string contents)\\\"),\\n * mailTo,\\n * keccak256(bytes(mailContents))\\n * )));\\n * address signer = ECDSA.recover(digest, signature);\\n * ```\\n */\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n return ECDSAUpgradeable.toTypedDataHash(_domainSeparatorV4(), structHash);\\n }\\n\\n /**\\n * @dev The hash of the name parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712NameHash() internal virtual view returns (bytes32) {\\n return _HASHED_NAME;\\n }\\n\\n /**\\n * @dev The hash of the version parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712VersionHash() internal virtual view returns (bytes32) {\\n return _HASHED_VERSION;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x3017aded62c4a2b9707f5f06f92934e592c1c9b6f384b91b51340a6d5f841931\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"contracts/N2MCommonStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\\\";\\nimport \\\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\\\";\\nimport \\\"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\\\";\\nimport {IOperatorFilterRegistry} from \\\"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\\\";\\nimport \\\"./N2MVersion.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MCommonStorage is\\n NFTOwnableUpgradeable,\\n IN2M_ERCStorage,\\n N2MVersion\\n{\\n /// CONSTANTS\\n address internal constant DEFAULT_SUBSCRIPTION = address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6);\\n address internal constant OPENSEA_CONDUIT = address(0x1E0049783F008A0085193E00003D00cd54003c71);\\n address internal constant N2M_CONDUIT = address(0x88899DC0B84C6E726840e00DFb94ABc6248825eC);\\n IOperatorFilterRegistry internal constant operatorFilterRegistry = IOperatorFilterRegistry(0x000000000000AAeB6D7670E522A718067333cd4E);\\n address internal constant N2M_PRESALE_SIGNER = address(0xC0ffee06CE3D6689305035601a055A96acd619c6);\\n address internal constant N2M_TREASURY = address(0x955aF4de9Ca03f84c9462457D075aCABf1A8AfC8);\\n uint256 internal constant N2M_FEE = 5_00;\\n uint256 internal constant MAX_AFFILIATE_DISCOUNT = 100_00;\\n uint256 internal constant MAX_AFFILIATE_PERCENTAGE = 100_00;\\n uint256 internal constant NOT_ENTERED = 0;\\n\\n /// IMMUTABLE \\n address payable internal immutable _factory;\\n\\n bytes32 internal _baseURICIDHash;\\n bytes32 internal _placeholderImageCIDHash;\\n bytes32 internal _contractURIMetadataCIDHash;\\n\\n mapping(address => uint256) internal _pendingAffiliateBalance;\\n uint256 internal _pendingTotalAffiliatesBalance;\\n\\n RevenueAddress[] internal _revenueInfo;\\n mapping(address => AffiliateInformation) internal _affiliatesInfo;\\n\\n uint256 internal _mintPrice;\\n uint256 internal _withdrawnAmount;\\n uint256 internal _reentrancyEntered;\\n uint256 internal _dropDateTimestamp;\\n uint256 internal _endDateTimestamp; \\n\\n mapping(address => uint256) internal _withdrawnERC20Amount;\\n address internal _erc20PaymentAddress;\\n\\n mapping(address => RandomTicket) internal _randomTickets;\\n mapping(bytes => uint256) internal _usedAmountSignature;\\n mapping(uint256 => bool) internal _soulbound;\\n mapping(uint256 => bytes32) internal _customURICIDHashes;\\n\\n uint32 internal _soldTokens;\\n SalePhase internal _currentPhase;\\n OperatorFilterStatus internal _operatorFilterStatus;\\n MintingType internal _mintingType; \\n uint16 internal _royaltyFee;\\n uint16 internal _maxPerAddress; \\n uint32 internal _collectionSize;\\n bool internal _isERC20Payment;\\n bool internal _soulboundCollection;\\n\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(address payable factoryAddress) {\\n _factory = factoryAddress;\\n _disableInitializers();\\n }\\n\\n /// @notice Returns the address of the current collection owner.\\n function owner() public view override(NFTOwnableUpgradeable) returns (address collectionOwner) {\\n try IN2MCrossFactory(_factory).ownerOf(uint256(uint160(address(this)))) returns (address ownerOf) {\\n return ownerOf;\\n } catch {}\\n }\\n\\n function _strictOwner() internal view override(NFTOwnableUpgradeable) returns (address ownerStrictAddress) {\\n try IN2MCrossFactory(_factory).strictOwnerOf(uint256(uint160(address(this)))) returns (address strictOwnerOf) {\\n return strictOwnerOf;\\n } catch {}\\n }\\n\\n function _getN2MFeeAddress() internal view override(NFTOwnableUpgradeable) returns (address) {\\n\\n try IN2MCrossFactory(_factory).getN2MTreasuryAddress() returns (address n2mTreasuryAddress) {\\n return n2mTreasuryAddress;\\n } catch {\\n return N2M_TREASURY;\\n }\\n } \\n\\n modifier nonReentrant() {\\n _nonReentrantBefore();\\n _;\\n _nonReentrantAfter();\\n }\\n\\n function _nonReentrantBefore() private {\\n if (_reentrancyEntered != 0) revert ReentrancyGuard();\\n _reentrancyEntered = 1;\\n }\\n\\n function _nonReentrantAfter() private {\\n delete(_reentrancyEntered);\\n } \\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() public view override returns (bool) {\\n return (_baseURICIDHash != 0 || (_mintingType == MintingType.CUSTOM_URI));\\n }\\n\\n}\\n\",\"keccak256\":\"0xa72fa45c4464fb3dc36a3c7385c79b0af244fb8f8c654f6c75f10035efdb2e88\",\"license\":\"UNLICENSED\"},\"contracts/N2MERC721.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport \\\"./N2MTokenCommon.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts for ERC-721.\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ncontract N2MERC721 is\\n N2MTokenCommon,\\n ERC721Upgradeable,\\n EIP712Upgradeable,\\n ERC721VotesUpgradeable\\n{\\n\\n /// @notice To be called to create the collection. Can only be called once.\\n function initialize(\\n string memory tokenName,\\n string memory tokenSymbol,\\n uint256 iMintPrice,\\n bytes32 baseURICIDHash,\\n bytes32 placeholderImageCIDHash,\\n RevenueAddress[] calldata revenueAddresses,\\n address iErc20PaymentAddress,\\n uint32 iTotalSupply,\\n uint16 iRoyaltyFee,\\n bool soulboundCollection,\\n MintingType iMintingType\\n ) public payable override initializer {\\n __ERC721_init(tokenName, tokenSymbol);\\n\\n if (iTotalSupply == 0) revert TotalSupplyMustBeGreaterThanZero();\\n if (baseURICIDHash != 0 && placeholderImageCIDHash != 0) revert CantSetBaseURIAndPlaceholderAtTheSameTime();\\n if (iRoyaltyFee > 50_00) revert RoyaltyFeeTooHigh();\\n\\n _collectionSize = iTotalSupply;\\n if (baseURICIDHash == 0) {\\n if (placeholderImageCIDHash == 0) {\\n if (iMintingType != MintingType.CUSTOM_URI)\\n revert NoBaseURINorPlaceholderSet();\\n } else {\\n _placeholderImageCIDHash = placeholderImageCIDHash;\\n }\\n } else {\\n _baseURICIDHash = baseURICIDHash;\\n }\\n\\n _mintPrice = iMintPrice;\\n _royaltyFee = iRoyaltyFee;\\n if (iMintingType != MintingType.SEQUENTIAL) {\\n _mintingType = iMintingType;\\n }\\n if (iErc20PaymentAddress != address(0)) {\\n _isERC20Payment = true;\\n _erc20PaymentAddress = iErc20PaymentAddress;\\n }\\n if (soulboundCollection == true) {\\n _soulboundCollection = true;\\n }\\n\\n if (revenueAddresses.length > 0) {\\n uint256 revenuePercentageTotal;\\n for (uint256 i; i < revenueAddresses.length; ) {\\n revenuePercentageTotal += revenueAddresses[i].percentage;\\n unchecked {\\n ++i;\\n }\\n }\\n _revenueInfo = revenueAddresses;\\n if (revenuePercentageTotal > 100_00 - N2M_FEE) revert InvalidRevenuePercentage();\\n }\\n\\n }\\n\\n constructor(address libraryAddress, address payable factoryAddress) N2MTokenCommon(libraryAddress, factoryAddress) {}\\n\\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\\n /// 3986. The URI may point to a JSON file that conforms to the \\\"ERC721\\n /// Metadata JSON Schema\\\".\\n function tokenURI(uint256 tokenId)\\n public\\n view\\n override(N2MTokenCommon, ERC721Upgradeable)\\n returns (string memory)\\n {\\n _requireMinted(tokenId);\\n return IN2MLibrary(address(this)).tokenURIImpl(tokenId);\\n }\\n\\n function _exists(uint256 tokenId)\\n internal\\n view\\n override(ERC721Upgradeable, N2MTokenCommon)\\n returns (bool)\\n {\\n return super._exists(tokenId);\\n }\\n\\n function _mint(address to, uint256 tokenId)\\n internal\\n override(ERC721Upgradeable, N2MTokenCommon)\\n {\\n super._mint(to, tokenId);\\n }\\n\\n /// @notice A descriptive name for a collection of NFTs in this contract\\n function name()\\n public\\n view\\n override(ERC721Upgradeable, N2MTokenCommon)\\n returns (string memory)\\n {\\n return super.name();\\n }\\n\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal override {\\n if (\\n from != address(0) &&\\n (_soulbound[firstTokenId] || _soulboundCollection)\\n ) revert NonTransferrableSoulboundNFT();\\n\\n super._beforeTokenTransfer(from, to, firstTokenId, batchSize);\\n }\\n\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal override(ERC721Upgradeable, ERC721VotesUpgradeable) {\\n super._afterTokenTransfer(from, to, firstTokenId, batchSize);\\n\\n if (_maxPerAddress != 0) {\\n\\n if (balanceOf(to) > _maxPerAddress) revert MaxPerAddressExceeded();\\n }\\n }\\n\\n function _burn(uint256 tokenId)\\n internal\\n override(ERC721Upgradeable)\\n {\\n super._burn(tokenId);\\n if (_customURICIDHashes[tokenId] != 0) {\\n delete _customURICIDHashes[tokenId];\\n } \\n }\\n\\n /// @notice Query if a contract implements an interface\\n /// @param interfaceId The interface identifier, as specified in ERC-165\\n /// @dev Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\\n /// @return `true` if the contract implements `interfaceId` and `interfaceId` is not 0xffffffff, `false` otherwise\\n function supportsInterface(bytes4 interfaceId)\\n public\\n view\\n override(ERC721Upgradeable, IERC165Upgradeable)\\n returns (bool)\\n {\\n return (\\n\\n interfaceId == type(IERC2981Upgradeable).interfaceId || super.supportsInterface(interfaceId));\\n }\\n\\n /// @notice An abbreviated name for NFTs in this contract\\n /// @return the collection symbol\\n function symbol()\\n public\\n view\\n virtual\\n override(IN2M_ERCBase, ERC721Upgradeable)\\n returns (string memory)\\n {\\n return super.symbol();\\n }\\n\\n /// @notice Count all NFTs assigned to an owner\\n /// @dev NFTs assigned to the zero address are considered invalid, and this\\n /// function throws for queries about the zero address.\\n /// @param owner An address for whom to query the balance\\n /// @return balance The number of NFTs owned by `owner`, possibly zero\\n function balanceOf(address owner) public view override(ERC721Upgradeable, N2MTokenCommon) returns (uint256 balance) {\\n balance = super.balanceOf(owner);\\n if (_mintingType == MintingType.RANDOM) {\\n balance += _randomTickets[owner].amount;\\n }\\n }\\n\\n function _EIP712NameHash() internal virtual override view returns (bytes32) {\\n\\n return keccak256(\\\"NFTs2Me\\\");\\n }\\n\\n function _EIP712VersionHash() internal virtual override view returns (bytes32) {\\n return keccak256(\\\"1\\\");\\n } \\n\\n /// @notice Enable or disable approval for a third party (\\\"operator\\\") to manage\\n /// all of `msg.sender`'s assets\\n /// @dev Emits the ApprovalForAll event. The contract MUST allow\\n /// multiple operators per owner.\\n /// @param operator Address to add to the set of authorized operators\\n /// @param approved True if the operator is approved, false to revoke approval\\n function setApprovalForAll(address operator, bool approved) public override onlyAllowedOperatorApproval(operator) {\\n super.setApprovalForAll(operator, approved);\\n }\\n\\n /// @notice Change or reaffirm the approved address for an NFT\\n /// @dev The zero address indicates there is no approved address.\\n /// Throws unless `msg.sender` is the current NFT owner, or an authorized\\n /// operator of the current owner.\\n /// @param operator The new approved NFT controller\\n /// @param tokenId The NFT to approve\\n function approve(address operator, uint256 tokenId) public override onlyAllowedOperatorApproval(operator) {\\n super.approve(operator, tokenId);\\n }\\n\\n /// @notice Query if an address is an authorized operator for another address\\n /// @param owner The address that owns the NFTs\\n /// @param operator The address that acts on behalf of the owner\\n /// @return True if `operator` is an approved operator for `owner`, false otherwise\\n function isApprovedForAll(address owner, address operator)\\n public\\n view\\n virtual\\n override\\n returns (bool)\\n {\\n\\n if (operator == N2M_CONDUIT) return true;\\n if (operator == OPENSEA_CONDUIT) return true;\\n\\n return super.isApprovedForAll(owner, operator);\\n }\\n\\n /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE\\n /// TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE\\n /// THEY MAY BE PERMANENTLY LOST\\n /// @dev Throws unless `msg.sender` is the current owner, an authorized\\n /// operator, or the approved address for this NFT. Throws if `from` is\\n /// not the current owner. Throws if `to` is the zero address. Throws if\\n /// `tokenId` is not a valid NFT.\\n /// @param from The current owner of the NFT\\n /// @param to The new owner\\n /// @param tokenId The NFT to transfer\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public override onlyAllowedOperator() {\\n super.transferFrom(from, to, tokenId);\\n }\\n\\n /// @notice Transfers the ownership of an NFT from one address to another address\\n /// @dev This works identically to the other function with an extra data parameter,\\n /// except this function just sets data to \\\"\\\".\\n /// @param from The current owner of the NFT\\n /// @param to The new owner\\n /// @param tokenId The NFT to transfer\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public override onlyAllowedOperator() {\\n super.safeTransferFrom(from, to, tokenId);\\n }\\n\\n /// @notice Transfers the ownership of an NFT from one address to another address\\n /// @dev Throws unless `msg.sender` is the current owner, an authorized\\n /// operator, or the approved address for this NFT. Throws if `from` is\\n /// not the current owner. Throws if `to` is the zero address. Throws if\\n /// `tokenId` is not a valid NFT. When transfer is complete, this function\\n /// checks if `to` is a smart contract (code size > 0). If so, it calls\\n /// `onERC721Received` on `to` and throws if the return value is not\\n /// `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\\n /// @param from The current owner of the NFT\\n /// @param to The new owner\\n /// @param tokenId The NFT to transfer\\n /// @param data Additional data with no specified format, sent in call to `to`\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public override onlyAllowedOperator() {\\n super.safeTransferFrom(from, to, tokenId, data);\\n }\\n\\n}\\n\",\"keccak256\":\"0xec74ce4baf120321a6acd55af4b89f7cd88bb8912f9df901ec2d9cca08617073\",\"license\":\"UNLICENSED\"},\"contracts/N2MTokenCommon.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\\\";\\n\\n/// Utils\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport \\\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\\\";\\nimport \\\"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol\\\";\\nimport \\\"./N2MCommonStorage.sol\\\";\\n\\ninterface IN2MLibrary {\\n function tokenURIImpl(uint256 tokenId) external view returns (string memory);\\n}\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MTokenCommon is N2MCommonStorage, IN2M_ERCBase {\\n /// IMMUTABLE\\n address internal immutable LIBRARY_ADDRESS;\\n\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(address libraryAddress, address payable factoryAddress) N2MCommonStorage(factoryAddress) {\\n LIBRARY_ADDRESS = libraryAddress;\\n }\\n\\n function _mint(address to, uint256 tokenId) internal virtual;\\n\\n function _exists(uint256 tokenId) internal view virtual returns (bool);\\n\\n function name() external view virtual override returns (string memory);\\n\\n function tokenURI(uint256 tokenId) external view virtual override returns (string memory);\\n\\n function balanceOf(address owner) public view virtual returns (uint256 balance); \\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable override {\\n _requirePayment(_mintPrice, 1);\\n _checkPhase();\\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\\n unchecked {\\n if ((++_soldTokens) > _collectionSize) revert CollectionSoldOut();\\n }\\n _mint(msg.sender, _soldTokens);\\n }\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable override {\\n _requirePayment(_mintPrice, amount);\\n _mintSequentialWithChecks(msg.sender, amount);\\n }\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable override {\\n _requirePaymentWithAffiliates(amount, affiliate);\\n _mintSequentialWithChecks(msg.sender, amount);\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable override {\\n _requirePayment(_mintPrice, amount);\\n _mintSequentialWithChecks(to, amount);\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable override {\\n _requirePaymentWithAffiliates(amount, affiliate);\\n _mintSequentialWithChecks(to, amount);\\n }\\n\\n function _mintSequentialWithChecks(address to, uint256 amount) private {\\n _checkPhase();\\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\\n if ((_soldTokens + amount) > _collectionSize) revert CollectionSoldOut();\\n\\n _mintSequential(to, amount);\\n }\\n\\n function _mintSequential(address to, uint256 amount, bool soulbound) private {\\n for (uint256 i; i < amount; ) {\\n unchecked {\\n _mint(to, ++_soldTokens);\\n }\\n if (soulbound) _soulbound[_soldTokens] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n function _mintSequential(address to, uint256 amount) internal virtual {\\n for (uint256 i; i < amount; ) {\\n unchecked {\\n _mint(to, ++_soldTokens);\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable override {\\n _requirePayment(_mintPrice, amount);\\n _mintRandomWithChecks(to, amount);\\n }\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable override {\\n _requirePaymentWithAffiliates(amount, affiliate);\\n _mintRandomWithChecks(to, amount);\\n }\\n\\n function _mintRandomWithChecks(address to, uint256 amount) private {\\n _checkPhase();\\n if (_mintingType != MintingType.RANDOM) revert InvalidMintingType();\\n if (_soldTokens + (amount) > _collectionSize) revert CollectionSoldOut();\\n\\n unchecked {\\n _randomTickets[to].blockNumberToReveal = block.number + 2;\\n _randomTickets[to].amount += amount;\\n _soldTokens += uint32(amount);\\n }\\n\\n if (_maxPerAddress != 0) {\\n\\n if (balanceOf(to) > _maxPerAddress) revert MaxPerAddressExceeded();\\n } \\n }\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable override {\\n uint256 blockNumberToReveal = _randomTickets[msg.sender].blockNumberToReveal;\\n uint256 amountToRedeem = _randomTickets[msg.sender].amount;\\n\\n if (amountToRedeem == 0) revert NothingToRedeem();\\n if (block.number <= _randomTickets[msg.sender].blockNumberToReveal) revert CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n bytes32 seedFromBlockNumber = blockhash(blockNumberToReveal);\\n\\n if (seedFromBlockNumber == 0) {\\n\\n uint256 newBlockNumber = ((block.number & uint256(int256(-0x100))) + (blockNumberToReveal & 0xff));\\n\\n if ((newBlockNumber >= block.number)) {\\n newBlockNumber -= 256;\\n\\n }\\n seedFromBlockNumber = blockhash(newBlockNumber);\\n\\n }\\n\\n delete(_randomTickets[msg.sender].blockNumberToReveal);\\n delete(_randomTickets[msg.sender].amount);\\n\\n uint16 maxPerAddressTemp = _maxPerAddress;\\n delete(_maxPerAddress);\\n _mintRandom(msg.sender, amountToRedeem, seedFromBlockNumber, false);\\n _maxPerAddress = maxPerAddressTemp;\\n }\\n\\n function _mintRandom(address to, uint256 amount, bytes32 seed, bool soulbound) private {\\n for (; amount > 0; ) {\\n uint256 tokenId = _randomTokenId(seed, amount);\\n _mint(to, tokenId);\\n if (soulbound) _soulbound[tokenId] = true;\\n unchecked {\\n --amount;\\n }\\n }\\n }\\n\\n function _randomTokenId(bytes32 seed, uint256 extraModifier) private view returns (uint256 tokenId) {\\n\\n tokenId = (uint256(keccak256(abi.encodePacked(seed, extraModifier))) % _collectionSize) + 1;\\n\\n while (_exists(tokenId)) {\\n unchecked {\\n tokenId = (tokenId % _collectionSize) + 1;\\n }\\n }\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds)\\n external\\n payable\\n override\\n {\\n _requirePayment(_mintPrice, tokenIds.length);\\n _mintSpecifyWithChecks(to, tokenIds);\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) \\n external\\n payable\\n override\\n {\\n _requirePaymentWithAffiliates(tokenIds.length, affiliate);\\n _mintSpecifyWithChecks(to, tokenIds);\\n }\\n\\n function _mintSpecifyWithChecks(address to, uint256[] memory tokenIds)\\n private\\n {\\n _checkPhase();\\n if (_mintingType != MintingType.SPECIFY) revert InvalidMintingType();\\n\\n if (_soldTokens + (tokenIds.length) > _collectionSize) revert CollectionSoldOut();\\n\\n _mintSpecify(to, tokenIds);\\n }\\n\\n function _mintSpecify(\\n address to,\\n uint256[] memory tokenIds,\\n bool soulbound\\n ) private {\\n _mintSpecify(to, tokenIds);\\n uint256 inputLength = tokenIds.length; \\n if (soulbound) {\\n for (uint256 i; i < inputLength; ) {\\n _soulbound[tokenIds[i]] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n }\\n\\n function _mintSpecify(address to, uint256[] memory tokenIds)\\n internal\\n virtual\\n {\\n\\n uint256 inputLength = tokenIds.length;\\n unchecked {\\n _soldTokens += uint32(inputLength);\\n }\\n for (uint256 i; i < inputLength; ) {\\n uint256 tokenId = tokenIds[i];\\n\\n if (tokenId == 0 || tokenId > _collectionSize) revert InvalidTokenId();\\n _mint(to, tokenId);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound)\\n external\\n payable\\n override\\n {\\n _requirePayment(_mintPrice, 1);\\n _checkPhase();\\n if (_mintingType != MintingType.CUSTOM_URI) revert InvalidMintingType();\\n unchecked {\\n if ((++_soldTokens) > _collectionSize) revert CollectionSoldOut();\\n }\\n _mint(to, _soldTokens);\\n\\n unchecked {\\n if (soulbound) _soulbound[_soldTokens] = true;\\n }\\n _customURICIDHashes[_soldTokens] = customURICIDHash;\\n }\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound)\\n external\\n payable\\n override\\n onlyStrictOwner\\n {\\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\\n if (_soldTokens + (to.length) > _collectionSize) revert CollectionSoldOut();\\n\\n uint256 toLength = to.length;\\n for (uint256 i; i < toLength; ) {\\n\\n unchecked {\\n _mint(to[i], ++_soldTokens); \\n if (soulbound) _soulbound[_soldTokens] = true;\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound)\\n external\\n payable\\n override\\n onlyOwner\\n {\\n uint256 toLength = to.length;\\n if (_mintingType != MintingType.RANDOM) revert InvalidMintingType();\\n\\n if ((_soldTokens + toLength) > _collectionSize) revert CollectionSoldOut();\\n\\n unchecked {\\n _soldTokens += uint32(toLength);\\n }\\n\\n bytes32 randomSeed = blockhash(block.number - 1);\\n\\n for (uint256 i; i < toLength; ) {\\n uint256 newTokenId = _randomTokenId(randomSeed, i);\\n _mint(to[i], newTokenId);\\n if (soulbound) _soulbound[newTokenId] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(\\n address[] memory to,\\n uint256[] memory tokenIds,\\n bool soulbound\\n ) external payable override onlyOwner {\\n uint256 toLength = to.length;\\n if (_mintingType != MintingType.SPECIFY) revert InvalidMintingType();\\n\\n if (_soldTokens + (tokenIds.length) > _collectionSize) revert CollectionSoldOut();\\n if (toLength != tokenIds.length) revert InvalidInputSizesDontMatch();\\n\\n unchecked {\\n _soldTokens += uint32(toLength);\\n }\\n\\n for (uint256 i; i < toLength; ) {\\n\\n if (tokenIds[i] == 0 || tokenIds[i] > _collectionSize) revert InvalidTokenId();\\n _mint(to[i], tokenIds[i]);\\n if (soulbound) _soulbound[tokenIds[i]] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale(\\n address to,\\n uint256[] memory tokenIds,\\n bool freeMinting,\\n uint256 customFee,\\n uint256 maxAmount,\\n uint256 amount,\\n bool soulbound,\\n bytes calldata signature\\n ) external payable override {\\n if (amount == 0) revert InvalidAmount();\\n\\n _usedAmountSignature[signature] += amount;\\n if (_usedAmountSignature[signature] > maxAmount) revert NotEnoughAmountToMint();\\n\\n if (_soldTokens + amount > _collectionSize) revert CollectionSoldOut();\\n\\n if (_currentPhase == SalePhase.CLOSED) revert PresaleNotOpen();\\n\\n address signer = ECDSAUpgradeable.recover(\\n ECDSAUpgradeable.toEthSignedMessageHash(\\n keccak256(\\n abi.encodePacked(\\n this.mintPresale.selector, \\n address(this), \\n block.chainid, \\n to,\\n freeMinting,\\n customFee,\\n maxAmount,\\n soulbound\\n )\\n )\\n ),\\n signature\\n );\\n\\n if (signer != N2M_PRESALE_SIGNER && signer != owner()) revert SignatureMismatch();\\n\\n if (freeMinting) {\\n\\n if (msg.value != 0) revert InvalidMintFeeForFreeMinting();\\n } else {\\n\\n if (customFee == 0) customFee = _mintPrice;\\n _requirePayment(customFee, amount);\\n }\\n\\n if (_mintingType == MintingType.SPECIFY) {\\n\\n if (tokenIds.length != amount) revert InvalidInputSizesDontMatch();\\n _mintSpecify(to, tokenIds, soulbound);\\n } else if (_mintingType == MintingType.RANDOM) {\\n bytes32 seed = keccak256(abi.encodePacked(signature));\\n _soldTokens += uint32(amount);\\n _mintRandom(to, amount, seed, soulbound);\\n } else if (_mintingType == MintingType.SEQUENTIAL) {\\n _mintSequential(to, amount, soulbound);\\n } else {\\n\\n revert PresaleInvalidMintingType();\\n }\\n }\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256) {\\n return _mintPrice;\\n }\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256) {\\n return _soldTokens;\\n }\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view override returns (uint16) {\\n return _maxPerAddress;\\n }\\n\\n /// @notice Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n /// @param salePrice The sale price\\n /// @return receiver the receiver of the royalties.\\n /// @return royaltyAmount the amount of the royalties for the given input.\\n function royaltyInfo(\\n uint256, \\n uint256 salePrice\\n ) external view virtual returns (address receiver, uint256 royaltyAmount) {\\n\\n return (address(this), uint256((salePrice * _royaltyFee) / 100_00));\\n }\\n\\n function _requirePaymentWithAffiliates(uint256 amount, address affiliate)\\n internal\\n {\\n uint16 currentUserDiscount;\\n uint16 currentAffiliatePercentage;\\n if (_affiliatesInfo[affiliate].enabled) {\\n currentUserDiscount = _affiliatesInfo[affiliate].userDiscount;\\n currentAffiliatePercentage = _affiliatesInfo[affiliate].affiliatePercentage;\\n } else {\\n currentUserDiscount = _affiliatesInfo[address(0)].userDiscount;\\n currentAffiliatePercentage = _affiliatesInfo[address(0)].affiliatePercentage;\\n }\\n\\n uint256 discountMintPrice = ((100_00 - currentUserDiscount) * _mintPrice) / 100_00;\\n _requirePayment(discountMintPrice, amount);\\n if (affiliate != address(0)) {\\n uint256 affiliateAmount = (currentAffiliatePercentage * discountMintPrice * amount) / 100_00;\\n _pendingTotalAffiliatesBalance += affiliateAmount;\\n _pendingAffiliateBalance[affiliate] += affiliateAmount;\\n emit AffiliateSell(affiliate);\\n }\\n }\\n\\n function _checkPhase() private {\\n\\n if (_currentPhase != SalePhase.PUBLIC) {\\n if (_currentPhase == SalePhase.DROP_DATE) {\\n if (block.timestamp >= _dropDateTimestamp) {\\n _currentPhase = SalePhase.PUBLIC;\\n delete(_dropDateTimestamp);\\n } else {\\n revert WaitUntilDropDate();\\n }\\n } else if (_currentPhase == SalePhase.DROP_AND_END_DATE) {\\n if (block.timestamp < _dropDateTimestamp) {\\n revert WaitUntilDropDate();\\n }\\n if (block.timestamp >= _endDateTimestamp) {\\n revert SaleFinished();\\n }\\n } else {\\n\\n revert PublicSaleNotOpen();\\n }\\n }\\n }\\n\\n function _requirePayment(uint256 p_mintPrice, uint256 amount) internal {\\n if (_isERC20Payment == false) {\\n\\n if (msg.value != (p_mintPrice * amount)) revert InvalidMintFee();\\n } else {\\n\\n if (p_mintPrice == 0) return;\\n uint256 totalAmount = p_mintPrice * amount;\\n\\n SafeERC20Upgradeable.safeTransferFrom(\\n IERC20Upgradeable(_erc20PaymentAddress),\\n msg.sender,\\n address(this),\\n totalAmount\\n );\\n }\\n }\\n\\n modifier onlyAllowedOperator() {\\n\\n _isOperatorAllowed(msg.sender);\\n _;\\n }\\n\\n modifier onlyAllowedOperatorApproval(address operator) {\\n _isOperatorAllowed(operator);\\n _;\\n } \\n\\n function _isOperatorAllowed(address operator) private {\\n if (_operatorFilterStatus == OperatorFilterStatus.ENABLED_EXISTS) {\\n\\n operatorFilterRegistry.isOperatorAllowed(address(this), operator);\\n\\n } else if (_operatorFilterStatus == OperatorFilterStatus.ENABLED_NOT_INITIALIZED) {\\n\\n if (address(operatorFilterRegistry).code.length > 0) {\\n try operatorFilterRegistry.registerAndSubscribe(address(this), DEFAULT_SUBSCRIPTION) {\\n\\n _operatorFilterStatus = OperatorFilterStatus.ENABLED_EXISTS;\\n operatorFilterRegistry.isOperatorAllowed(address(this), operator);\\n } catch {\\n }\\n }\\n } \\n\\n }\\n\\n fallback() external payable\\n {\\n address libraryAddress = LIBRARY_ADDRESS;\\n\\n assembly {\\n\\n calldatacopy(0, 0, calldatasize())\\n\\n let result := delegatecall(\\n gas(),\\n libraryAddress,\\n 0,\\n calldatasize(),\\n 0,\\n 0\\n )\\n\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n receive() external payable {} \\n}\\n\",\"keccak256\":\"0x09ef4519412ea229a36b4bb34068dabe9e31633840d134197271c5de99e6c3c2\",\"license\":\"UNLICENSED\"},\"contracts/N2MVersion.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts Version\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MVersion is Readme {\\n /// @notice Current version of the nfts2me.com contracts.\\n function n2mVersion() virtual external pure returns (uint256) {\\n return 1000;\\n }\\n\\n}\\n\",\"keccak256\":\"0x2e406a5b00c59cdc4000c829e039e6eb23af09e50e9176dd5a3f68b5a2fb734b\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10280,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_baseURICIDHash","offset":0,"slot":"51","type":"t_bytes32"},{"astId":10282,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_placeholderImageCIDHash","offset":0,"slot":"52","type":"t_bytes32"},{"astId":10284,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_contractURIMetadataCIDHash","offset":0,"slot":"53","type":"t_bytes32"},{"astId":10288,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_pendingAffiliateBalance","offset":0,"slot":"54","type":"t_mapping(t_address,t_uint256)"},{"astId":10290,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_pendingTotalAffiliatesBalance","offset":0,"slot":"55","type":"t_uint256"},{"astId":10294,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_revenueInfo","offset":0,"slot":"56","type":"t_array(t_struct(RevenueAddress)394_storage)dyn_storage"},{"astId":10299,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_affiliatesInfo","offset":0,"slot":"57","type":"t_mapping(t_address,t_struct(AffiliateInformation)401_storage)"},{"astId":10301,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_mintPrice","offset":0,"slot":"58","type":"t_uint256"},{"astId":10303,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_withdrawnAmount","offset":0,"slot":"59","type":"t_uint256"},{"astId":10305,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_reentrancyEntered","offset":0,"slot":"60","type":"t_uint256"},{"astId":10307,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_dropDateTimestamp","offset":0,"slot":"61","type":"t_uint256"},{"astId":10309,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_endDateTimestamp","offset":0,"slot":"62","type":"t_uint256"},{"astId":10313,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_withdrawnERC20Amount","offset":0,"slot":"63","type":"t_mapping(t_address,t_uint256)"},{"astId":10315,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_erc20PaymentAddress","offset":0,"slot":"64","type":"t_address"},{"astId":10320,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_randomTickets","offset":0,"slot":"65","type":"t_mapping(t_address,t_struct(RandomTicket)389_storage)"},{"astId":10324,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_usedAmountSignature","offset":0,"slot":"66","type":"t_mapping(t_bytes_memory_ptr,t_uint256)"},{"astId":10328,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_soulbound","offset":0,"slot":"67","type":"t_mapping(t_uint256,t_bool)"},{"astId":10332,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_customURICIDHashes","offset":0,"slot":"68","type":"t_mapping(t_uint256,t_bytes32)"},{"astId":10334,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_soldTokens","offset":0,"slot":"69","type":"t_uint32"},{"astId":10337,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_currentPhase","offset":4,"slot":"69","type":"t_enum(SalePhase)407"},{"astId":10340,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_operatorFilterStatus","offset":5,"slot":"69","type":"t_enum(OperatorFilterStatus)417"},{"astId":10343,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_mintingType","offset":6,"slot":"69","type":"t_enum(MintingType)412"},{"astId":10345,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_royaltyFee","offset":7,"slot":"69","type":"t_uint16"},{"astId":10347,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_maxPerAddress","offset":9,"slot":"69","type":"t_uint16"},{"astId":10349,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_collectionSize","offset":11,"slot":"69","type":"t_uint32"},{"astId":10351,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_isERC20Payment","offset":15,"slot":"69","type":"t_bool"},{"astId":10353,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_soulboundCollection","offset":16,"slot":"69","type":"t_bool"},{"astId":7292,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"__gap","offset":0,"slot":"70","type":"t_array(t_uint256)50_storage"},{"astId":3490,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_name","offset":0,"slot":"120","type":"t_string_storage"},{"astId":3492,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_symbol","offset":0,"slot":"121","type":"t_string_storage"},{"astId":3496,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_owners","offset":0,"slot":"122","type":"t_mapping(t_uint256,t_address)"},{"astId":3500,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_balances","offset":0,"slot":"123","type":"t_mapping(t_address,t_uint256)"},{"astId":3504,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_tokenApprovals","offset":0,"slot":"124","type":"t_mapping(t_uint256,t_address)"},{"astId":3510,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_operatorApprovals","offset":0,"slot":"125","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":4412,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"__gap","offset":0,"slot":"126","type":"t_array(t_uint256)44_storage"},{"astId":7108,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_HASHED_NAME","offset":0,"slot":"170","type":"t_bytes32"},{"astId":7110,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_HASHED_VERSION","offset":0,"slot":"171","type":"t_bytes32"},{"astId":7248,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"__gap","offset":0,"slot":"172","type":"t_array(t_uint256)50_storage"},{"astId":850,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_delegation","offset":0,"slot":"222","type":"t_mapping(t_address,t_address)"},{"astId":855,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_delegateCheckpoints","offset":0,"slot":"223","type":"t_mapping(t_address,t_struct(History)5086_storage)"},{"astId":858,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_totalCheckpoints","offset":0,"slot":"224","type":"t_struct(History)5086_storage"},{"astId":863,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_nonces","offset":0,"slot":"225","type":"t_mapping(t_address,t_struct(Counter)6495_storage)"},{"astId":1277,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"__gap","offset":0,"slot":"226","type":"t_array(t_uint256)46_storage"},{"astId":4764,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"__gap","offset":0,"slot":"272","type":"t_array(t_uint256)50_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Checkpoint)5091_storage)dyn_storage":{"base":"t_struct(Checkpoint)5091_storage","encoding":"dynamic_array","label":"struct CheckpointsUpgradeable.Checkpoint[]","numberOfBytes":"32"},"t_array(t_struct(RevenueAddress)394_storage)dyn_storage":{"base":"t_struct(RevenueAddress)394_storage","encoding":"dynamic_array","label":"struct IN2M_ERCStorage.RevenueAddress[]","numberOfBytes":"32"},"t_array(t_uint256)44_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[44]","numberOfBytes":"1408"},"t_array(t_uint256)46_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[46]","numberOfBytes":"1472"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_memory_ptr":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_enum(MintingType)412":{"encoding":"inplace","label":"enum IN2M_ERCStorage.MintingType","numberOfBytes":"1"},"t_enum(OperatorFilterStatus)417":{"encoding":"inplace","label":"enum IN2M_ERCStorage.OperatorFilterStatus","numberOfBytes":"1"},"t_enum(SalePhase)407":{"encoding":"inplace","label":"enum IN2M_ERCStorage.SalePhase","numberOfBytes":"1"},"t_mapping(t_address,t_address)":{"encoding":"mapping","key":"t_address","label":"mapping(address => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_struct(AffiliateInformation)401_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct IN2M_ERCStorage.AffiliateInformation)","numberOfBytes":"32","value":"t_struct(AffiliateInformation)401_storage"},"t_mapping(t_address,t_struct(Counter)6495_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct CountersUpgradeable.Counter)","numberOfBytes":"32","value":"t_struct(Counter)6495_storage"},"t_mapping(t_address,t_struct(History)5086_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct CheckpointsUpgradeable.History)","numberOfBytes":"32","value":"t_struct(History)5086_storage"},"t_mapping(t_address,t_struct(RandomTicket)389_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct IN2M_ERCStorage.RandomTicket)","numberOfBytes":"32","value":"t_struct(RandomTicket)389_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes_memory_ptr,t_uint256)":{"encoding":"mapping","key":"t_bytes_memory_ptr","label":"mapping(bytes => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_bool)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_uint256,t_bytes32)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_struct(AffiliateInformation)401_storage":{"encoding":"inplace","label":"struct IN2M_ERCStorage.AffiliateInformation","members":[{"astId":396,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"enabled","offset":0,"slot":"0","type":"t_bool"},{"astId":398,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"affiliatePercentage","offset":1,"slot":"0","type":"t_uint16"},{"astId":400,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"userDiscount","offset":3,"slot":"0","type":"t_uint16"}],"numberOfBytes":"32"},"t_struct(Checkpoint)5091_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.Checkpoint","members":[{"astId":5088,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_blockNumber","offset":0,"slot":"0","type":"t_uint32"},{"astId":5090,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_value","offset":4,"slot":"0","type":"t_uint224"}],"numberOfBytes":"32"},"t_struct(Counter)6495_storage":{"encoding":"inplace","label":"struct CountersUpgradeable.Counter","members":[{"astId":6494,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_struct(History)5086_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.History","members":[{"astId":5085,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"_checkpoints","offset":0,"slot":"0","type":"t_array(t_struct(Checkpoint)5091_storage)dyn_storage"}],"numberOfBytes":"32"},"t_struct(RandomTicket)389_storage":{"encoding":"inplace","label":"struct IN2M_ERCStorage.RandomTicket","members":[{"astId":386,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"amount","offset":0,"slot":"0","type":"t_uint256"},{"astId":388,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"blockNumberToReveal","offset":0,"slot":"1","type":"t_uint256"}],"numberOfBytes":"64"},"t_struct(RevenueAddress)394_storage":{"encoding":"inplace","label":"struct IN2M_ERCStorage.RevenueAddress","members":[{"astId":391,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"to","offset":0,"slot":"0","type":"t_address"},{"astId":393,"contract":"contracts/N2MERC721.sol:N2MERC721","label":"percentage","offset":20,"slot":"0","type":"t_uint16"}],"numberOfBytes":"32"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint224":{"encoding":"inplace","label":"uint224","numberOfBytes":"28"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"AddressFiltered(address)":[{"notice":"Operator address is filtered"}],"CantLowerCurrentPercentages()":[{"notice":"Can't lower current percentages"}],"CantRevealYetWaitABitToBeAbleToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets too soon"}],"CantSetBaseURIAndPlaceholderAtTheSameTime()":[{"notice":"Can't set BaseURI and Placeholder at the same time"}],"CollectionSoldOut()":[{"notice":"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"}],"ContractMetadataURIAlreadyFixed()":[{"notice":"Contract MetadataURI already fixed"}],"InputSizeMismatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidAmount()":[{"notice":"Error thrown when the input amount is not valid"}],"InvalidDropDate()":[{"notice":"Invalid drop date"}],"InvalidInputSizesDontMatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidMintFee()":[{"notice":"Error thrown when the sent amount is not valid"}],"InvalidMintFeeForFreeMinting()":[{"notice":"Error thrown when sending funds to a free minting"}],"InvalidMintingType()":[{"notice":"Invalid collection minting type for the current minting function"}],"InvalidPercentageOrDiscountValues()":[{"notice":"Invalid percentage or discount values"}],"InvalidPhaseWithoutDate()":[{"notice":"Invalid phase can't be set without giving a date, use the proper functions"}],"InvalidRevenuePercentage()":[{"notice":"The input revenue percentages are not valid"}],"InvalidTokenId()":[{"notice":"Error thrown when trying to mint a token with a given invalid id"}],"MaxPerAddressExceeded()":[{"notice":"The address exceeded the max per address amount"}],"MetadataAlreadyFixed()":[{"notice":"Metadata is already fixed. Can't change metadata once fixed"}],"NewBaseURICantBeEmpty()":[{"notice":"New BaseURI can't be empty"}],"NewPlaceholderCantBeEmpty()":[{"notice":"New Placeholder can't be empty"}],"NoBaseURINorPlaceholderSet()":[{"notice":"No BaseURI nor Placeholder set"}],"NonTransferrableSoulboundNFT()":[{"notice":"Can't transfer a Soulbound Token (SBT)"}],"NotEnoughAmountToMint()":[{"notice":"Error thrown when trying to mint more than the allowance to mint"}],"NothingToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets with no amount to redeem"}],"OnlyAffiliateOrN2M()":[{"notice":"Only the given affiliate or N2M can call this function"}],"OnlyOwnerOrN2M()":[{"notice":"Only owner of N2M can call this function"}],"PresaleInvalidMintingType()":[{"notice":"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"}],"PresaleNotOpen()":[{"notice":"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"}],"PublicSaleNotOpen()":[{"notice":"Error thrown when trying to mint and the collection current phase is not `open`"}],"ReentrancyGuard()":[{"notice":"Reentrancy Guard protection"}],"RoyaltyFeeTooHigh()":[{"notice":"Royalty fee can't be higher than 10%"}],"SaleFinished()":[{"notice":"Error thrown when trying to mint but the sale has already finished"}],"SignatureExpired()":[{"notice":"The signature has expired"}],"SignatureMismatch()":[{"notice":"The given signature doesn't match the input values"}],"TokenAlreadyMinted()":[{"notice":"Error thrown when trying to mint a token with a given id which is already minted"}],"TotalSupplyMustBeGreaterThanZero()":[{"notice":"Invalid input. Total supply must be greater than zero"}],"WaitUntilDropDate()":[{"notice":"Can't mint until specified drop date"}]},"events":{"AffiliateSell(address)":{"notice":"This event is emitted when a token is minted using an affiliate"}},"kind":"user","methods":{"airdropRandom(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`."},"airdropSequential(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`."},"airdropSpecify(address[],uint256[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`."},"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":{"notice":"To be called to create the collection. Can only be called once."},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"isMetadataFixed()":{"notice":"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."},"maxPerAddress()":{"notice":"Max amount of NFTs to be hold per address."},"mint()":{"notice":"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256)":{"notice":"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256,address)":{"notice":"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintCustomURITo(address,bytes32,bool)":{"notice":"Mints one NFT to `to` address. Requires `minting type` to be `customURI`."},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"notice":"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale."},"mintPrice()":{"notice":"Returns the minting price of one NFT."},"mintRandomTo(address,uint256)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintRandomTo(address,uint256,address)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintSpecifyTo(address,uint256[])":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintSpecifyTo(address,uint256[],address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256)":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256,address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"n2mVersion()":{"notice":"Current version of the nfts2me.com contracts."},"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"owner()":{"notice":"Returns the address of the current collection owner."},"redeemRandom()":{"notice":"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs."},"royaltyInfo(uint256,uint256)":{"notice":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"},"tokenURI(uint256)":{"notice":"A distinct Uniform Resource Identifier (URI) for a given asset."},"totalSupply()":{"notice":"Returns the current total supply."},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"notice":"Read our terms of service","version":1}}},"contracts/N2MTokenCommon.sol":{"IN2MLibrary":{"abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURIImpl","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"tokenURIImpl(uint256)":"01284a46"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURIImpl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/N2MTokenCommon.sol\":\"IN2MLibrary\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IN2MCrossFactory {\\n function getN2MTreasuryAddress() external pure returns (address);\\n function ownerOf(uint256 tokenId) external view returns (address);\\n function strictOwnerOf(uint256 tokenId) external view returns (address);\\n}\\n\",\"keccak256\":\"0xa82780a2da4848f8c0f93e1a2da64e9b7e90869803050e6921863fe5683af43d\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCBase is IERC2981Upgradeable, IN2M_ERCStorage {\\n /// @notice To be called to create the collection. Can only be called once.\\n function initialize\\n (\\n string memory tokenName,\\n string memory tokenSymbol,\\n uint256 iMintPrice,\\n bytes32 baseURICIDHash,\\n bytes32 placeholderImageCIDHash,\\n RevenueAddress[] calldata revenueAddresses,\\n address iErc20PaymentAddress,\\n uint32 iTotalSupply,\\n uint16 iRoyaltyFee,\\n bool soulboundCollection,\\n MintingType iMintingType\\n ) external payable;\\n\\n /// @notice A descriptive name for a collection of NFTs in this contract\\n function name() external view returns (string memory);\\n\\n /// @notice An abbreviated name for NFTs in this contract\\n /// @return the collection symbol\\n function symbol() external view returns (string memory);\\n\\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\\n /// 3986. The URI may point to a JSON file that conforms to the \\\"ERC721\\n /// Metadata JSON Schema\\\".\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable; \\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds) external payable; \\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) external payable; \\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(address[] memory to, uint256[] memory tokenIds, bool soulbound) external payable;\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale (\\n address to, \\n uint256[] memory tokenIds,\\n bool freeMinting, \\n uint256 customFee, \\n uint256 maxAmount,\\n uint256 amount, \\n bool soulbound,\\n bytes calldata signature) payable external;\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256);\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256);\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view returns (uint16);\\n\\n}\\n\\n\",\"keccak256\":\"0xfded09e330fd4f048b81b38352d7c4480b09f691dc1360a6857f1b5d9681b7f4\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"../important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0xfda5b953ecaa603de1c1b1c789767ea9aa2e1b9d5e12b7e1af68c581e35c225f\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IOperatorFilterRegistry {\\n function isOperatorAllowed(address registrant, address operator) external view returns (bool);\\n function register(address registrant) external;\\n function registerAndSubscribe(address registrant, address subscription) external;\\n function registerAndCopyEntries(address registrant, address registrantToCopy) external;\\n function updateOperator(address registrant, address operator, bool filtered) external;\\n function updateOperators(address registrant, address[] calldata operators, bool filtered) external;\\n function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;\\n function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;\\n function subscribe(address registrant, address registrantToSubscribe) external;\\n function unsubscribe(address registrant, bool copyExistingEntries) external;\\n function subscriptionOf(address addr) external returns (address registrant);\\n function subscribers(address registrant) external returns (address[] memory);\\n function subscriberAt(address registrant, uint256 index) external returns (address);\\n function copyEntriesOf(address registrant, address registrantToCopy) external;\\n function isOperatorFiltered(address registrant, address operator) external returns (bool);\\n function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);\\n function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);\\n function filteredOperators(address addr) external returns (address[] memory);\\n function filteredCodeHashes(address addr) external returns (bytes32[] memory);\\n function filteredOperatorAt(address registrant, uint256 index) external returns (address);\\n function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);\\n function isRegistered(address addr) external view returns (bool);\\n function codeHashOf(address addr) external view returns (bytes32);\\n}\",\"keccak256\":\"0x94297c604eea7c0dcac072ec8257d58f3927fc2c1f22b41c9f78d82e4a8cf5a5\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract NFTOwnableUpgradeable is Initializable, ContextUpgradeable {\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n modifier onlyStrictOwner() {\\n _checkStrictOwner();\\n _;\\n }\\n\\n modifier onlyOwnerOrN2M() {\\n _checkOwnerOrN2M();\\n _;\\n }\\n\\n modifier onlyN2M() {\\n _checkN2M();\\n _;\\n }\\n\\n /// @notice Returns the address of the current collection owner.\\n /// @return The address of the owner.\\n function owner() public view virtual returns (address);\\n function _strictOwner() internal view virtual returns (address);\\n function _getN2MFeeAddress() internal view virtual returns (address);\\n\\n function _checkOwner() internal view virtual {\\n require(owner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkStrictOwner() internal view virtual {\\n require(_strictOwner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkOwnerOrN2M() internal view virtual {\\n require(owner() == msg.sender || _getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkN2M() internal view virtual {\\n require(_getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n}\",\"keccak256\":\"0x0b3a2ca7a3f09ec6c3e387f9102e32bf755baf64986076d114f584fea0f17b38\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/IVotes.sol)\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\\n *\\n * _Available since v4.5._\\n */\\ninterface IVotesUpgradeable {\\n /**\\n * @dev Emitted when an account changes their delegate.\\n */\\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\\n\\n /**\\n * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\\n */\\n event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance);\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n */\\n function getPastVotes(address account, uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n */\\n function getPastTotalSupply(uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) external view returns (address);\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) external;\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n}\\n\",\"keccak256\":\"0xe8e2d2f70db1913260634f710cc057d669b06eccf4dca27e18b79c3bbb101da6\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (governance/utils/Votes.sol)\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/CountersUpgradeable.sol\\\";\\nimport \\\"../../utils/CheckpointsUpgradeable.sol\\\";\\nimport \\\"../../utils/cryptography/EIP712Upgradeable.sol\\\";\\nimport \\\"./IVotesUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This is a base abstract contract that tracks voting units, which are a measure of voting power that can be\\n * transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of\\n * \\\"representative\\\" that will pool delegated voting units from different accounts and can then use it to vote in\\n * decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to\\n * delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative.\\n *\\n * This contract is often combined with a token contract such that voting units correspond to token units. For an\\n * example, see {ERC721Votes}.\\n *\\n * The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed\\n * at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the\\n * cost of this history tracking optional.\\n *\\n * When using this module the derived contract must implement {_getVotingUnits} (for example, make it return\\n * {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the\\n * previous example, it would be included in {ERC721-_beforeTokenTransfer}).\\n *\\n * _Available since v4.5._\\n */\\nabstract contract VotesUpgradeable is Initializable, IVotesUpgradeable, ContextUpgradeable, EIP712Upgradeable {\\n function __Votes_init() internal onlyInitializing {\\n }\\n\\n function __Votes_init_unchained() internal onlyInitializing {\\n }\\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\\n using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n bytes32 private constant _DELEGATION_TYPEHASH =\\n keccak256(\\\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\\\");\\n\\n mapping(address => address) private _delegation;\\n mapping(address => CheckpointsUpgradeable.History) private _delegateCheckpoints;\\n CheckpointsUpgradeable.History private _totalCheckpoints;\\n\\n mapping(address => CountersUpgradeable.Counter) private _nonces;\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) public view virtual override returns (uint256) {\\n return _delegateCheckpoints[account].latest();\\n }\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n *\\n * Requirements:\\n *\\n * - `blockNumber` must have been already mined\\n */\\n function getPastVotes(address account, uint256 blockNumber) public view virtual override returns (uint256) {\\n return _delegateCheckpoints[account].getAtProbablyRecentBlock(blockNumber);\\n }\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n *\\n * Requirements:\\n *\\n * - `blockNumber` must have been already mined\\n */\\n function getPastTotalSupply(uint256 blockNumber) public view virtual override returns (uint256) {\\n require(blockNumber < block.number, \\\"Votes: block not yet mined\\\");\\n return _totalCheckpoints.getAtProbablyRecentBlock(blockNumber);\\n }\\n\\n /**\\n * @dev Returns the current total supply of votes.\\n */\\n function _getTotalSupply() internal view virtual returns (uint256) {\\n return _totalCheckpoints.latest();\\n }\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) public view virtual override returns (address) {\\n return _delegation[account];\\n }\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) public virtual override {\\n address account = _msgSender();\\n _delegate(account, delegatee);\\n }\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public virtual override {\\n require(block.timestamp <= expiry, \\\"Votes: signature expired\\\");\\n address signer = ECDSAUpgradeable.recover(\\n _hashTypedDataV4(keccak256(abi.encode(_DELEGATION_TYPEHASH, delegatee, nonce, expiry))),\\n v,\\n r,\\n s\\n );\\n require(nonce == _useNonce(signer), \\\"Votes: invalid nonce\\\");\\n _delegate(signer, delegatee);\\n }\\n\\n /**\\n * @dev Delegate all of `account`'s voting units to `delegatee`.\\n *\\n * Emits events {IVotes-DelegateChanged} and {IVotes-DelegateVotesChanged}.\\n */\\n function _delegate(address account, address delegatee) internal virtual {\\n address oldDelegate = delegates(account);\\n _delegation[account] = delegatee;\\n\\n emit DelegateChanged(account, oldDelegate, delegatee);\\n _moveDelegateVotes(oldDelegate, delegatee, _getVotingUnits(account));\\n }\\n\\n /**\\n * @dev Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to`\\n * should be zero. Total supply of voting units will be adjusted with mints and burns.\\n */\\n function _transferVotingUnits(\\n address from,\\n address to,\\n uint256 amount\\n ) internal virtual {\\n if (from == address(0)) {\\n _totalCheckpoints.push(_add, amount);\\n }\\n if (to == address(0)) {\\n _totalCheckpoints.push(_subtract, amount);\\n }\\n _moveDelegateVotes(delegates(from), delegates(to), amount);\\n }\\n\\n /**\\n * @dev Moves delegated votes from one delegate to another.\\n */\\n function _moveDelegateVotes(\\n address from,\\n address to,\\n uint256 amount\\n ) private {\\n if (from != to && amount > 0) {\\n if (from != address(0)) {\\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[from].push(_subtract, amount);\\n emit DelegateVotesChanged(from, oldValue, newValue);\\n }\\n if (to != address(0)) {\\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[to].push(_add, amount);\\n emit DelegateVotesChanged(to, oldValue, newValue);\\n }\\n }\\n }\\n\\n function _add(uint256 a, uint256 b) private pure returns (uint256) {\\n return a + b;\\n }\\n\\n function _subtract(uint256 a, uint256 b) private pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Consumes a nonce.\\n *\\n * Returns the current value and increments nonce.\\n */\\n function _useNonce(address owner) internal virtual returns (uint256 current) {\\n CountersUpgradeable.Counter storage nonce = _nonces[owner];\\n current = nonce.current();\\n nonce.increment();\\n }\\n\\n /**\\n * @dev Returns an address nonce.\\n */\\n function nonces(address owner) public view virtual returns (uint256) {\\n return _nonces[owner].current();\\n }\\n\\n /**\\n * @dev Returns the contract's {EIP712} domain separator.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32) {\\n return _domainSeparatorV4();\\n }\\n\\n /**\\n * @dev Must return the voting units held by an account.\\n */\\n function _getVotingUnits(address) internal view virtual returns (uint256);\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[46] private __gap;\\n}\\n\",\"keccak256\":\"0x03d4e5b8237229d370c92981f6642e67c075c3cc4f759a76ea4c73a2b27d36e5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n */\\n function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n external\\n view\\n returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xcc70d8e2281fb3ff69e8ab242500f10142cd0a7fa8dd9e45882be270d4d09024\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/draft-IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n function safeTransfer(\\n IERC20Upgradeable token,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n function safeTransferFrom(\\n IERC20Upgradeable token,\\n address from,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n function safeIncreaseAllowance(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n uint256 newAllowance = token.allowance(address(this), spender) + value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n function safeDecreaseAllowance(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n uint256 newAllowance = oldAllowance - value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n }\\n\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n if (returndata.length > 0) {\\n // Return data is optional\\n require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n }\\n}\\n\",\"keccak256\":\"0x220c4a5af915e656be2aaa85ca57505d102418e476b1e2ef6c62e0c6ac143871\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.2) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n using AddressUpgradeable for address;\\n using StringsUpgradeable for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n __ERC721_init_unchained(name_, symbol_);\\n }\\n\\n function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n return\\n interfaceId == type(IERC721Upgradeable).interfaceId ||\\n interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0xac29c453f4cf43afe4c9599374b6e1ed493c18644d814554e8a5969aaa6f3486\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/extensions/ERC721URIStorage.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC721Upgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev ERC721 token with storage based token URI management.\\n */\\nabstract contract ERC721URIStorageUpgradeable is Initializable, ERC721Upgradeable {\\n function __ERC721URIStorage_init() internal onlyInitializing {\\n }\\n\\n function __ERC721URIStorage_init_unchained() internal onlyInitializing {\\n }\\n using StringsUpgradeable for uint256;\\n\\n // Optional mapping for token URIs\\n mapping(uint256 => string) private _tokenURIs;\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory _tokenURI = _tokenURIs[tokenId];\\n string memory base = _baseURI();\\n\\n // If there is no base URI, return the token URI.\\n if (bytes(base).length == 0) {\\n return _tokenURI;\\n }\\n // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\\n if (bytes(_tokenURI).length > 0) {\\n return string(abi.encodePacked(base, _tokenURI));\\n }\\n\\n return super.tokenURI(tokenId);\\n }\\n\\n /**\\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\\n require(_exists(tokenId), \\\"ERC721URIStorage: URI set of nonexistent token\\\");\\n _tokenURIs[tokenId] = _tokenURI;\\n }\\n\\n /**\\n * @dev See {ERC721-_burn}. This override additionally checks to see if a\\n * token-specific URI was set for the token, and if so, it deletes the token URI from\\n * the storage mapping.\\n */\\n function _burn(uint256 tokenId) internal virtual override {\\n super._burn(tokenId);\\n\\n if (bytes(_tokenURIs[tokenId]).length != 0) {\\n delete _tokenURIs[tokenId];\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/extensions/ERC721Votes.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC721Upgradeable.sol\\\";\\nimport \\\"../../../governance/utils/VotesUpgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Extension of ERC721 to support voting and delegation as implemented by {Votes}, where each individual NFT counts\\n * as 1 vote unit.\\n *\\n * Tokens do not count as votes until they are delegated, because votes must be tracked which incurs an additional cost\\n * on every transfer. Token holders can either delegate to a trusted representative who will decide how to make use of\\n * the votes in governance decisions, or they can delegate to themselves to be their own representative.\\n *\\n * _Available since v4.5._\\n */\\nabstract contract ERC721VotesUpgradeable is Initializable, ERC721Upgradeable, VotesUpgradeable {\\n function __ERC721Votes_init() internal onlyInitializing {\\n }\\n\\n function __ERC721Votes_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {ERC721-_afterTokenTransfer}. Adjusts votes when tokens are transferred.\\n *\\n * Emits a {IVotes-DelegateVotesChanged} event.\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual override {\\n _transferVotingUnits(from, to, batchSize);\\n super._afterTokenTransfer(from, to, firstTokenId, batchSize);\\n }\\n\\n /**\\n * @dev Returns the balance of `account`.\\n */\\n function _getVotingUnits(address account) internal view virtual override returns (uint256) {\\n return balanceOf(account);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x63df902b937900c1a0ed022ff39a8e995f1fdf5cbdddbba92c4db3f47661dcda\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(History storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _blockNumber,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace224 storage self,\\n uint32 key,\\n uint224 value\\n ) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _key,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint224[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint224 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace160 storage self,\\n uint96 key,\\n uint160 value\\n ) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint96 _key,\\n uint160 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint160 value\\n ) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint160[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint160 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x92fe8e1836627ba1baa62a2d4bd76c52ccfe53fec6650b609af33918be967a82\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n}\\n\",\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x12f297cafe6e2847ae0378502f155654d0764b532a9873c8afe4350950fa7971\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/EIP712.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ECDSAUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * _Available since v3.4._\\n *\\n * @custom:storage-size 52\\n */\\nabstract contract EIP712Upgradeable is Initializable {\\n /* solhint-disable var-name-mixedcase */\\n bytes32 private _HASHED_NAME;\\n bytes32 private _HASHED_VERSION;\\n bytes32 private constant _TYPE_HASH = keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\");\\n\\n /* solhint-enable var-name-mixedcase */\\n\\n /**\\n * @dev Initializes the domain separator and parameter caches.\\n *\\n * The meaning of `name` and `version` is specified in\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n *\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n * - `version`: the current major version of the signing domain.\\n *\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n * contract upgrade].\\n */\\n function __EIP712_init(string memory name, string memory version) internal onlyInitializing {\\n __EIP712_init_unchained(name, version);\\n }\\n\\n function __EIP712_init_unchained(string memory name, string memory version) internal onlyInitializing {\\n bytes32 hashedName = keccak256(bytes(name));\\n bytes32 hashedVersion = keccak256(bytes(version));\\n _HASHED_NAME = hashedName;\\n _HASHED_VERSION = hashedVersion;\\n }\\n\\n /**\\n * @dev Returns the domain separator for the current chain.\\n */\\n function _domainSeparatorV4() internal view returns (bytes32) {\\n return _buildDomainSeparator(_TYPE_HASH, _EIP712NameHash(), _EIP712VersionHash());\\n }\\n\\n function _buildDomainSeparator(\\n bytes32 typeHash,\\n bytes32 nameHash,\\n bytes32 versionHash\\n ) private view returns (bytes32) {\\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\\n }\\n\\n /**\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\n *\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n *\\n * ```solidity\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n * keccak256(\\\"Mail(address to,string contents)\\\"),\\n * mailTo,\\n * keccak256(bytes(mailContents))\\n * )));\\n * address signer = ECDSA.recover(digest, signature);\\n * ```\\n */\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n return ECDSAUpgradeable.toTypedDataHash(_domainSeparatorV4(), structHash);\\n }\\n\\n /**\\n * @dev The hash of the name parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712NameHash() internal virtual view returns (bytes32) {\\n return _HASHED_NAME;\\n }\\n\\n /**\\n * @dev The hash of the version parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712VersionHash() internal virtual view returns (bytes32) {\\n return _HASHED_VERSION;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x3017aded62c4a2b9707f5f06f92934e592c1c9b6f384b91b51340a6d5f841931\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"contracts/N2MCommonStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\\\";\\nimport \\\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\\\";\\nimport \\\"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\\\";\\nimport {IOperatorFilterRegistry} from \\\"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\\\";\\nimport \\\"./N2MVersion.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MCommonStorage is\\n NFTOwnableUpgradeable,\\n IN2M_ERCStorage,\\n N2MVersion\\n{\\n /// CONSTANTS\\n address internal constant DEFAULT_SUBSCRIPTION = address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6);\\n address internal constant OPENSEA_CONDUIT = address(0x1E0049783F008A0085193E00003D00cd54003c71);\\n address internal constant N2M_CONDUIT = address(0x88899DC0B84C6E726840e00DFb94ABc6248825eC);\\n IOperatorFilterRegistry internal constant operatorFilterRegistry = IOperatorFilterRegistry(0x000000000000AAeB6D7670E522A718067333cd4E);\\n address internal constant N2M_PRESALE_SIGNER = address(0xC0ffee06CE3D6689305035601a055A96acd619c6);\\n address internal constant N2M_TREASURY = address(0x955aF4de9Ca03f84c9462457D075aCABf1A8AfC8);\\n uint256 internal constant N2M_FEE = 5_00;\\n uint256 internal constant MAX_AFFILIATE_DISCOUNT = 100_00;\\n uint256 internal constant MAX_AFFILIATE_PERCENTAGE = 100_00;\\n uint256 internal constant NOT_ENTERED = 0;\\n\\n /// IMMUTABLE \\n address payable internal immutable _factory;\\n\\n bytes32 internal _baseURICIDHash;\\n bytes32 internal _placeholderImageCIDHash;\\n bytes32 internal _contractURIMetadataCIDHash;\\n\\n mapping(address => uint256) internal _pendingAffiliateBalance;\\n uint256 internal _pendingTotalAffiliatesBalance;\\n\\n RevenueAddress[] internal _revenueInfo;\\n mapping(address => AffiliateInformation) internal _affiliatesInfo;\\n\\n uint256 internal _mintPrice;\\n uint256 internal _withdrawnAmount;\\n uint256 internal _reentrancyEntered;\\n uint256 internal _dropDateTimestamp;\\n uint256 internal _endDateTimestamp; \\n\\n mapping(address => uint256) internal _withdrawnERC20Amount;\\n address internal _erc20PaymentAddress;\\n\\n mapping(address => RandomTicket) internal _randomTickets;\\n mapping(bytes => uint256) internal _usedAmountSignature;\\n mapping(uint256 => bool) internal _soulbound;\\n mapping(uint256 => bytes32) internal _customURICIDHashes;\\n\\n uint32 internal _soldTokens;\\n SalePhase internal _currentPhase;\\n OperatorFilterStatus internal _operatorFilterStatus;\\n MintingType internal _mintingType; \\n uint16 internal _royaltyFee;\\n uint16 internal _maxPerAddress; \\n uint32 internal _collectionSize;\\n bool internal _isERC20Payment;\\n bool internal _soulboundCollection;\\n\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(address payable factoryAddress) {\\n _factory = factoryAddress;\\n _disableInitializers();\\n }\\n\\n /// @notice Returns the address of the current collection owner.\\n function owner() public view override(NFTOwnableUpgradeable) returns (address collectionOwner) {\\n try IN2MCrossFactory(_factory).ownerOf(uint256(uint160(address(this)))) returns (address ownerOf) {\\n return ownerOf;\\n } catch {}\\n }\\n\\n function _strictOwner() internal view override(NFTOwnableUpgradeable) returns (address ownerStrictAddress) {\\n try IN2MCrossFactory(_factory).strictOwnerOf(uint256(uint160(address(this)))) returns (address strictOwnerOf) {\\n return strictOwnerOf;\\n } catch {}\\n }\\n\\n function _getN2MFeeAddress() internal view override(NFTOwnableUpgradeable) returns (address) {\\n\\n try IN2MCrossFactory(_factory).getN2MTreasuryAddress() returns (address n2mTreasuryAddress) {\\n return n2mTreasuryAddress;\\n } catch {\\n return N2M_TREASURY;\\n }\\n } \\n\\n modifier nonReentrant() {\\n _nonReentrantBefore();\\n _;\\n _nonReentrantAfter();\\n }\\n\\n function _nonReentrantBefore() private {\\n if (_reentrancyEntered != 0) revert ReentrancyGuard();\\n _reentrancyEntered = 1;\\n }\\n\\n function _nonReentrantAfter() private {\\n delete(_reentrancyEntered);\\n } \\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() public view override returns (bool) {\\n return (_baseURICIDHash != 0 || (_mintingType == MintingType.CUSTOM_URI));\\n }\\n\\n}\\n\",\"keccak256\":\"0xa72fa45c4464fb3dc36a3c7385c79b0af244fb8f8c654f6c75f10035efdb2e88\",\"license\":\"UNLICENSED\"},\"contracts/N2MTokenCommon.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\\\";\\n\\n/// Utils\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport \\\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\\\";\\nimport \\\"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol\\\";\\nimport \\\"./N2MCommonStorage.sol\\\";\\n\\ninterface IN2MLibrary {\\n function tokenURIImpl(uint256 tokenId) external view returns (string memory);\\n}\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MTokenCommon is N2MCommonStorage, IN2M_ERCBase {\\n /// IMMUTABLE\\n address internal immutable LIBRARY_ADDRESS;\\n\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(address libraryAddress, address payable factoryAddress) N2MCommonStorage(factoryAddress) {\\n LIBRARY_ADDRESS = libraryAddress;\\n }\\n\\n function _mint(address to, uint256 tokenId) internal virtual;\\n\\n function _exists(uint256 tokenId) internal view virtual returns (bool);\\n\\n function name() external view virtual override returns (string memory);\\n\\n function tokenURI(uint256 tokenId) external view virtual override returns (string memory);\\n\\n function balanceOf(address owner) public view virtual returns (uint256 balance); \\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable override {\\n _requirePayment(_mintPrice, 1);\\n _checkPhase();\\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\\n unchecked {\\n if ((++_soldTokens) > _collectionSize) revert CollectionSoldOut();\\n }\\n _mint(msg.sender, _soldTokens);\\n }\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable override {\\n _requirePayment(_mintPrice, amount);\\n _mintSequentialWithChecks(msg.sender, amount);\\n }\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable override {\\n _requirePaymentWithAffiliates(amount, affiliate);\\n _mintSequentialWithChecks(msg.sender, amount);\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable override {\\n _requirePayment(_mintPrice, amount);\\n _mintSequentialWithChecks(to, amount);\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable override {\\n _requirePaymentWithAffiliates(amount, affiliate);\\n _mintSequentialWithChecks(to, amount);\\n }\\n\\n function _mintSequentialWithChecks(address to, uint256 amount) private {\\n _checkPhase();\\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\\n if ((_soldTokens + amount) > _collectionSize) revert CollectionSoldOut();\\n\\n _mintSequential(to, amount);\\n }\\n\\n function _mintSequential(address to, uint256 amount, bool soulbound) private {\\n for (uint256 i; i < amount; ) {\\n unchecked {\\n _mint(to, ++_soldTokens);\\n }\\n if (soulbound) _soulbound[_soldTokens] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n function _mintSequential(address to, uint256 amount) internal virtual {\\n for (uint256 i; i < amount; ) {\\n unchecked {\\n _mint(to, ++_soldTokens);\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable override {\\n _requirePayment(_mintPrice, amount);\\n _mintRandomWithChecks(to, amount);\\n }\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable override {\\n _requirePaymentWithAffiliates(amount, affiliate);\\n _mintRandomWithChecks(to, amount);\\n }\\n\\n function _mintRandomWithChecks(address to, uint256 amount) private {\\n _checkPhase();\\n if (_mintingType != MintingType.RANDOM) revert InvalidMintingType();\\n if (_soldTokens + (amount) > _collectionSize) revert CollectionSoldOut();\\n\\n unchecked {\\n _randomTickets[to].blockNumberToReveal = block.number + 2;\\n _randomTickets[to].amount += amount;\\n _soldTokens += uint32(amount);\\n }\\n\\n if (_maxPerAddress != 0) {\\n\\n if (balanceOf(to) > _maxPerAddress) revert MaxPerAddressExceeded();\\n } \\n }\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable override {\\n uint256 blockNumberToReveal = _randomTickets[msg.sender].blockNumberToReveal;\\n uint256 amountToRedeem = _randomTickets[msg.sender].amount;\\n\\n if (amountToRedeem == 0) revert NothingToRedeem();\\n if (block.number <= _randomTickets[msg.sender].blockNumberToReveal) revert CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n bytes32 seedFromBlockNumber = blockhash(blockNumberToReveal);\\n\\n if (seedFromBlockNumber == 0) {\\n\\n uint256 newBlockNumber = ((block.number & uint256(int256(-0x100))) + (blockNumberToReveal & 0xff));\\n\\n if ((newBlockNumber >= block.number)) {\\n newBlockNumber -= 256;\\n\\n }\\n seedFromBlockNumber = blockhash(newBlockNumber);\\n\\n }\\n\\n delete(_randomTickets[msg.sender].blockNumberToReveal);\\n delete(_randomTickets[msg.sender].amount);\\n\\n uint16 maxPerAddressTemp = _maxPerAddress;\\n delete(_maxPerAddress);\\n _mintRandom(msg.sender, amountToRedeem, seedFromBlockNumber, false);\\n _maxPerAddress = maxPerAddressTemp;\\n }\\n\\n function _mintRandom(address to, uint256 amount, bytes32 seed, bool soulbound) private {\\n for (; amount > 0; ) {\\n uint256 tokenId = _randomTokenId(seed, amount);\\n _mint(to, tokenId);\\n if (soulbound) _soulbound[tokenId] = true;\\n unchecked {\\n --amount;\\n }\\n }\\n }\\n\\n function _randomTokenId(bytes32 seed, uint256 extraModifier) private view returns (uint256 tokenId) {\\n\\n tokenId = (uint256(keccak256(abi.encodePacked(seed, extraModifier))) % _collectionSize) + 1;\\n\\n while (_exists(tokenId)) {\\n unchecked {\\n tokenId = (tokenId % _collectionSize) + 1;\\n }\\n }\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds)\\n external\\n payable\\n override\\n {\\n _requirePayment(_mintPrice, tokenIds.length);\\n _mintSpecifyWithChecks(to, tokenIds);\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) \\n external\\n payable\\n override\\n {\\n _requirePaymentWithAffiliates(tokenIds.length, affiliate);\\n _mintSpecifyWithChecks(to, tokenIds);\\n }\\n\\n function _mintSpecifyWithChecks(address to, uint256[] memory tokenIds)\\n private\\n {\\n _checkPhase();\\n if (_mintingType != MintingType.SPECIFY) revert InvalidMintingType();\\n\\n if (_soldTokens + (tokenIds.length) > _collectionSize) revert CollectionSoldOut();\\n\\n _mintSpecify(to, tokenIds);\\n }\\n\\n function _mintSpecify(\\n address to,\\n uint256[] memory tokenIds,\\n bool soulbound\\n ) private {\\n _mintSpecify(to, tokenIds);\\n uint256 inputLength = tokenIds.length; \\n if (soulbound) {\\n for (uint256 i; i < inputLength; ) {\\n _soulbound[tokenIds[i]] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n }\\n\\n function _mintSpecify(address to, uint256[] memory tokenIds)\\n internal\\n virtual\\n {\\n\\n uint256 inputLength = tokenIds.length;\\n unchecked {\\n _soldTokens += uint32(inputLength);\\n }\\n for (uint256 i; i < inputLength; ) {\\n uint256 tokenId = tokenIds[i];\\n\\n if (tokenId == 0 || tokenId > _collectionSize) revert InvalidTokenId();\\n _mint(to, tokenId);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound)\\n external\\n payable\\n override\\n {\\n _requirePayment(_mintPrice, 1);\\n _checkPhase();\\n if (_mintingType != MintingType.CUSTOM_URI) revert InvalidMintingType();\\n unchecked {\\n if ((++_soldTokens) > _collectionSize) revert CollectionSoldOut();\\n }\\n _mint(to, _soldTokens);\\n\\n unchecked {\\n if (soulbound) _soulbound[_soldTokens] = true;\\n }\\n _customURICIDHashes[_soldTokens] = customURICIDHash;\\n }\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound)\\n external\\n payable\\n override\\n onlyStrictOwner\\n {\\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\\n if (_soldTokens + (to.length) > _collectionSize) revert CollectionSoldOut();\\n\\n uint256 toLength = to.length;\\n for (uint256 i; i < toLength; ) {\\n\\n unchecked {\\n _mint(to[i], ++_soldTokens); \\n if (soulbound) _soulbound[_soldTokens] = true;\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound)\\n external\\n payable\\n override\\n onlyOwner\\n {\\n uint256 toLength = to.length;\\n if (_mintingType != MintingType.RANDOM) revert InvalidMintingType();\\n\\n if ((_soldTokens + toLength) > _collectionSize) revert CollectionSoldOut();\\n\\n unchecked {\\n _soldTokens += uint32(toLength);\\n }\\n\\n bytes32 randomSeed = blockhash(block.number - 1);\\n\\n for (uint256 i; i < toLength; ) {\\n uint256 newTokenId = _randomTokenId(randomSeed, i);\\n _mint(to[i], newTokenId);\\n if (soulbound) _soulbound[newTokenId] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(\\n address[] memory to,\\n uint256[] memory tokenIds,\\n bool soulbound\\n ) external payable override onlyOwner {\\n uint256 toLength = to.length;\\n if (_mintingType != MintingType.SPECIFY) revert InvalidMintingType();\\n\\n if (_soldTokens + (tokenIds.length) > _collectionSize) revert CollectionSoldOut();\\n if (toLength != tokenIds.length) revert InvalidInputSizesDontMatch();\\n\\n unchecked {\\n _soldTokens += uint32(toLength);\\n }\\n\\n for (uint256 i; i < toLength; ) {\\n\\n if (tokenIds[i] == 0 || tokenIds[i] > _collectionSize) revert InvalidTokenId();\\n _mint(to[i], tokenIds[i]);\\n if (soulbound) _soulbound[tokenIds[i]] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale(\\n address to,\\n uint256[] memory tokenIds,\\n bool freeMinting,\\n uint256 customFee,\\n uint256 maxAmount,\\n uint256 amount,\\n bool soulbound,\\n bytes calldata signature\\n ) external payable override {\\n if (amount == 0) revert InvalidAmount();\\n\\n _usedAmountSignature[signature] += amount;\\n if (_usedAmountSignature[signature] > maxAmount) revert NotEnoughAmountToMint();\\n\\n if (_soldTokens + amount > _collectionSize) revert CollectionSoldOut();\\n\\n if (_currentPhase == SalePhase.CLOSED) revert PresaleNotOpen();\\n\\n address signer = ECDSAUpgradeable.recover(\\n ECDSAUpgradeable.toEthSignedMessageHash(\\n keccak256(\\n abi.encodePacked(\\n this.mintPresale.selector, \\n address(this), \\n block.chainid, \\n to,\\n freeMinting,\\n customFee,\\n maxAmount,\\n soulbound\\n )\\n )\\n ),\\n signature\\n );\\n\\n if (signer != N2M_PRESALE_SIGNER && signer != owner()) revert SignatureMismatch();\\n\\n if (freeMinting) {\\n\\n if (msg.value != 0) revert InvalidMintFeeForFreeMinting();\\n } else {\\n\\n if (customFee == 0) customFee = _mintPrice;\\n _requirePayment(customFee, amount);\\n }\\n\\n if (_mintingType == MintingType.SPECIFY) {\\n\\n if (tokenIds.length != amount) revert InvalidInputSizesDontMatch();\\n _mintSpecify(to, tokenIds, soulbound);\\n } else if (_mintingType == MintingType.RANDOM) {\\n bytes32 seed = keccak256(abi.encodePacked(signature));\\n _soldTokens += uint32(amount);\\n _mintRandom(to, amount, seed, soulbound);\\n } else if (_mintingType == MintingType.SEQUENTIAL) {\\n _mintSequential(to, amount, soulbound);\\n } else {\\n\\n revert PresaleInvalidMintingType();\\n }\\n }\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256) {\\n return _mintPrice;\\n }\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256) {\\n return _soldTokens;\\n }\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view override returns (uint16) {\\n return _maxPerAddress;\\n }\\n\\n /// @notice Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n /// @param salePrice The sale price\\n /// @return receiver the receiver of the royalties.\\n /// @return royaltyAmount the amount of the royalties for the given input.\\n function royaltyInfo(\\n uint256, \\n uint256 salePrice\\n ) external view virtual returns (address receiver, uint256 royaltyAmount) {\\n\\n return (address(this), uint256((salePrice * _royaltyFee) / 100_00));\\n }\\n\\n function _requirePaymentWithAffiliates(uint256 amount, address affiliate)\\n internal\\n {\\n uint16 currentUserDiscount;\\n uint16 currentAffiliatePercentage;\\n if (_affiliatesInfo[affiliate].enabled) {\\n currentUserDiscount = _affiliatesInfo[affiliate].userDiscount;\\n currentAffiliatePercentage = _affiliatesInfo[affiliate].affiliatePercentage;\\n } else {\\n currentUserDiscount = _affiliatesInfo[address(0)].userDiscount;\\n currentAffiliatePercentage = _affiliatesInfo[address(0)].affiliatePercentage;\\n }\\n\\n uint256 discountMintPrice = ((100_00 - currentUserDiscount) * _mintPrice) / 100_00;\\n _requirePayment(discountMintPrice, amount);\\n if (affiliate != address(0)) {\\n uint256 affiliateAmount = (currentAffiliatePercentage * discountMintPrice * amount) / 100_00;\\n _pendingTotalAffiliatesBalance += affiliateAmount;\\n _pendingAffiliateBalance[affiliate] += affiliateAmount;\\n emit AffiliateSell(affiliate);\\n }\\n }\\n\\n function _checkPhase() private {\\n\\n if (_currentPhase != SalePhase.PUBLIC) {\\n if (_currentPhase == SalePhase.DROP_DATE) {\\n if (block.timestamp >= _dropDateTimestamp) {\\n _currentPhase = SalePhase.PUBLIC;\\n delete(_dropDateTimestamp);\\n } else {\\n revert WaitUntilDropDate();\\n }\\n } else if (_currentPhase == SalePhase.DROP_AND_END_DATE) {\\n if (block.timestamp < _dropDateTimestamp) {\\n revert WaitUntilDropDate();\\n }\\n if (block.timestamp >= _endDateTimestamp) {\\n revert SaleFinished();\\n }\\n } else {\\n\\n revert PublicSaleNotOpen();\\n }\\n }\\n }\\n\\n function _requirePayment(uint256 p_mintPrice, uint256 amount) internal {\\n if (_isERC20Payment == false) {\\n\\n if (msg.value != (p_mintPrice * amount)) revert InvalidMintFee();\\n } else {\\n\\n if (p_mintPrice == 0) return;\\n uint256 totalAmount = p_mintPrice * amount;\\n\\n SafeERC20Upgradeable.safeTransferFrom(\\n IERC20Upgradeable(_erc20PaymentAddress),\\n msg.sender,\\n address(this),\\n totalAmount\\n );\\n }\\n }\\n\\n modifier onlyAllowedOperator() {\\n\\n _isOperatorAllowed(msg.sender);\\n _;\\n }\\n\\n modifier onlyAllowedOperatorApproval(address operator) {\\n _isOperatorAllowed(operator);\\n _;\\n } \\n\\n function _isOperatorAllowed(address operator) private {\\n if (_operatorFilterStatus == OperatorFilterStatus.ENABLED_EXISTS) {\\n\\n operatorFilterRegistry.isOperatorAllowed(address(this), operator);\\n\\n } else if (_operatorFilterStatus == OperatorFilterStatus.ENABLED_NOT_INITIALIZED) {\\n\\n if (address(operatorFilterRegistry).code.length > 0) {\\n try operatorFilterRegistry.registerAndSubscribe(address(this), DEFAULT_SUBSCRIPTION) {\\n\\n _operatorFilterStatus = OperatorFilterStatus.ENABLED_EXISTS;\\n operatorFilterRegistry.isOperatorAllowed(address(this), operator);\\n } catch {\\n }\\n }\\n } \\n\\n }\\n\\n fallback() external payable\\n {\\n address libraryAddress = LIBRARY_ADDRESS;\\n\\n assembly {\\n\\n calldatacopy(0, 0, calldatasize())\\n\\n let result := delegatecall(\\n gas(),\\n libraryAddress,\\n 0,\\n calldatasize(),\\n 0,\\n 0\\n )\\n\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n receive() external payable {} \\n}\\n\",\"keccak256\":\"0x09ef4519412ea229a36b4bb34068dabe9e31633840d134197271c5de99e6c3c2\",\"license\":\"UNLICENSED\"},\"contracts/N2MVersion.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts Version\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MVersion is Readme {\\n /// @notice Current version of the nfts2me.com contracts.\\n function n2mVersion() virtual external pure returns (uint256) {\\n return 1000;\\n }\\n\\n}\\n\",\"keccak256\":\"0x2e406a5b00c59cdc4000c829e039e6eb23af09e50e9176dd5a3f68b5a2fb734b\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"N2MTokenCommon":{"abi":[{"inputs":[{"internalType":"address","name":"filtered","type":"address"}],"name":"AddressFiltered","type":"error"},{"inputs":[],"name":"CantLowerCurrentPercentages","type":"error"},{"inputs":[],"name":"CantRevealYetWaitABitToBeAbleToRedeem","type":"error"},{"inputs":[],"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","type":"error"},{"inputs":[],"name":"CollectionSoldOut","type":"error"},{"inputs":[],"name":"ContractMetadataURIAlreadyFixed","type":"error"},{"inputs":[],"name":"InputSizeMismatch","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidDropDate","type":"error"},{"inputs":[],"name":"InvalidInputSizesDontMatch","type":"error"},{"inputs":[],"name":"InvalidMintFee","type":"error"},{"inputs":[],"name":"InvalidMintFeeForFreeMinting","type":"error"},{"inputs":[],"name":"InvalidMintingType","type":"error"},{"inputs":[],"name":"InvalidPercentageOrDiscountValues","type":"error"},{"inputs":[],"name":"InvalidPhaseWithoutDate","type":"error"},{"inputs":[],"name":"InvalidRevenuePercentage","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MaxPerAddressExceeded","type":"error"},{"inputs":[],"name":"MetadataAlreadyFixed","type":"error"},{"inputs":[],"name":"NewBaseURICantBeEmpty","type":"error"},{"inputs":[],"name":"NewPlaceholderCantBeEmpty","type":"error"},{"inputs":[],"name":"NoBaseURINorPlaceholderSet","type":"error"},{"inputs":[],"name":"NonTransferrableSoulboundNFT","type":"error"},{"inputs":[],"name":"NotEnoughAmountToMint","type":"error"},{"inputs":[],"name":"NothingToRedeem","type":"error"},{"inputs":[],"name":"OnlyAffiliateOrN2M","type":"error"},{"inputs":[],"name":"OnlyOwnerOrN2M","type":"error"},{"inputs":[],"name":"PresaleInvalidMintingType","type":"error"},{"inputs":[],"name":"PresaleNotOpen","type":"error"},{"inputs":[],"name":"PublicSaleNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"RoyaltyFeeTooHigh","type":"error"},{"inputs":[],"name":"SaleFinished","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[],"name":"SignatureMismatch","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TotalSupplyMustBeGreaterThanZero","type":"error"},{"inputs":[],"name":"WaitUntilDropDate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"affiliate","type":"address"}],"name":"AffiliateSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSequential","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSpecify","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"iMintPrice","type":"uint256"},{"internalType":"bytes32","name":"baseURICIDHash","type":"bytes32"},{"internalType":"bytes32","name":"placeholderImageCIDHash","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint16","name":"percentage","type":"uint16"}],"internalType":"struct IN2M_ERCStorage.RevenueAddress[]","name":"revenueAddresses","type":"tuple[]"},{"internalType":"address","name":"iErc20PaymentAddress","type":"address"},{"internalType":"uint32","name":"iTotalSupply","type":"uint32"},{"internalType":"uint16","name":"iRoyaltyFee","type":"uint16"},{"internalType":"bool","name":"soulboundCollection","type":"bool"},{"internalType":"enum IN2M_ERCStorage.MintingType","name":"iMintingType","type":"uint8"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"isMetadataFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"customURICIDHash","type":"bytes32"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"mintCustomURITo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"freeMinting","type":"bool"},{"internalType":"uint256","name":"customFee","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"soulbound","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mintPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"collectionOwner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeemRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","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":"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"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"author":"The NFTs2Me Team","custom:security-contact":"security@nfts2me.com","custom:terms-of-service":"https://nfts2me.com/terms-of-service/","custom:website":"https://nfts2me.com/","events":{"AffiliateSell(address)":{"params":{"affiliate":"The affiliate address"}},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"airdropRandom(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSequential(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSpecify(address[],uint256[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"maxPerAddress()":{"returns":{"_0":"Max per address allowed."}},"mint(uint256)":{"params":{"amount":"The number of NFTs to mint"}},"mint(uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint"}},"mintCustomURITo(address,bytes32,bool)":{"params":{"customURICIDHash":"The CID of the given token.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The address of the NFTs receiver"}},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"params":{"amount":"Amount to mint.","customFee":"Zero is fee is different from `mintingPrice`.","freeMinting":"True is minting is free","maxAmount":"Max Amount to be minted with the given `signature`.","signature":"Valid `signature` for the presale/whitelist.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`."}},"mintPrice()":{"returns":{"_0":"Mint price for one NFT in native coin or ERC-20."}},"mintRandomTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintRandomTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintSpecifyTo(address,uint256[])":{"params":{"to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintSpecifyTo(address,uint256[],address)":{"params":{"affiliate":"The affiliate address","to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"royaltyInfo(uint256,uint256)":{"params":{"salePrice":"The sale price"},"returns":{"receiver":"the receiver of the royalties.","royaltyAmount":"the amount of the royalties for the given input."}},"supportsInterface(bytes4)":{"details":"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."},"symbol()":{"returns":{"_0":"the collection symbol"}},"tokenURI(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\"."},"totalSupply()":{"returns":{"_0":"Current total supply."}}},"title":"NFTs2Me.com Smart Contracts","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"airdropRandom(address[],bool)":"be172edf","airdropSequential(address[],bool)":"68fdda33","airdropSpecify(address[],uint256[],bool)":"71e6775f","balanceOf(address)":"70a08231","initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":"5066e5c2","isMetadataFixed()":"0de77eb8","maxPerAddress()":"639814e0","mint()":"1249c58b","mint(uint256)":"a0712d68","mint(uint256,address)":"94bf804d","mintCustomURITo(address,bytes32,bool)":"6ad54240","mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":"9d13a5ba","mintPrice()":"6817c76c","mintRandomTo(address,uint256)":"1d7df191","mintRandomTo(address,uint256,address)":"fefa5d72","mintSpecifyTo(address,uint256[])":"4402d254","mintSpecifyTo(address,uint256[],address)":"4a50aa85","mintTo(address,uint256)":"449a52f8","mintTo(address,uint256,address)":"438b1b4b","n2mVersion()":"cb93c48f","name()":"06fdde03","owner()":"8da5cb5b","redeemRandom()":"1ff4cc7d","royaltyInfo(uint256,uint256)":"2a55205a","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filtered\",\"type\":\"address\"}],\"name\":\"AddressFiltered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantLowerCurrentPercentages\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantRevealYetWaitABitToBeAbleToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSetBaseURIAndPlaceholderAtTheSameTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CollectionSoldOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractMetadataURIAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputSizeMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDropDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputSizesDontMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFeeForFreeMinting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercentageOrDiscountValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPhaseWithoutDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevenuePercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerAddressExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetadataAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBaseURICantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPlaceholderCantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseURINorPlaceholderSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonTransferrableSoulboundNFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughAmountToMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAffiliateOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOwnerOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleInvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PublicSaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoyaltyFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaleFinished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyMinted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WaitUntilDropDate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"AffiliateSell\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSequential\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSpecify\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"iMintPrice\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"baseURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"placeholderImageCIDHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"percentage\",\"type\":\"uint16\"}],\"internalType\":\"struct IN2M_ERCStorage.RevenueAddress[]\",\"name\":\"revenueAddresses\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"iErc20PaymentAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"iTotalSupply\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"iRoyaltyFee\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"soulboundCollection\",\"type\":\"bool\"},{\"internalType\":\"enum IN2M_ERCStorage.MintingType\",\"name\":\"iMintingType\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isMetadataFixed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPerAddress\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"customURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"mintCustomURITo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"freeMinting\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"customFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"mintPresale\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"collectionOwner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"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\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"The NFTs2Me Team\",\"custom:security-contact\":\"security@nfts2me.com\",\"custom:terms-of-service\":\"https://nfts2me.com/terms-of-service/\",\"custom:website\":\"https://nfts2me.com/\",\"events\":{\"AffiliateSell(address)\":{\"params\":{\"affiliate\":\"The affiliate address\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"airdropRandom(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSequential(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSpecify(address[],uint256[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"maxPerAddress()\":{\"returns\":{\"_0\":\"Max per address allowed.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint\"}},\"mint(uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint\"}},\"mintCustomURITo(address,bytes32,bool)\":{\"params\":{\"customURICIDHash\":\"The CID of the given token.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The address of the NFTs receiver\"}},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"amount\":\"Amount to mint.\",\"customFee\":\"Zero is fee is different from `mintingPrice`.\",\"freeMinting\":\"True is minting is free\",\"maxAmount\":\"Max Amount to be minted with the given `signature`.\",\"signature\":\"Valid `signature` for the presale/whitelist.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\"}},\"mintPrice()\":{\"returns\":{\"_0\":\"Mint price for one NFT in native coin or ERC-20.\"}},\"mintRandomTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintRandomTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintSpecifyTo(address,uint256[])\":{\"params\":{\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintSpecifyTo(address,uint256[],address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"royaltyInfo(uint256,uint256)\":{\"params\":{\"salePrice\":\"The sale price\"},\"returns\":{\"receiver\":\"the receiver of the royalties.\",\"royaltyAmount\":\"the amount of the royalties for the given input.\"}},\"supportsInterface(bytes4)\":{\"details\":\"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.\"},\"symbol()\":{\"returns\":{\"_0\":\"the collection symbol\"}},\"tokenURI(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \\\"ERC721 Metadata JSON Schema\\\".\"},\"totalSupply()\":{\"returns\":{\"_0\":\"Current total supply.\"}}},\"title\":\"NFTs2Me.com Smart Contracts\",\"version\":1},\"userdoc\":{\"errors\":{\"AddressFiltered(address)\":[{\"notice\":\"Operator address is filtered\"}],\"CantLowerCurrentPercentages()\":[{\"notice\":\"Can't lower current percentages\"}],\"CantRevealYetWaitABitToBeAbleToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets too soon\"}],\"CantSetBaseURIAndPlaceholderAtTheSameTime()\":[{\"notice\":\"Can't set BaseURI and Placeholder at the same time\"}],\"CollectionSoldOut()\":[{\"notice\":\"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\"}],\"ContractMetadataURIAlreadyFixed()\":[{\"notice\":\"Contract MetadataURI already fixed\"}],\"InputSizeMismatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidAmount()\":[{\"notice\":\"Error thrown when the input amount is not valid\"}],\"InvalidDropDate()\":[{\"notice\":\"Invalid drop date\"}],\"InvalidInputSizesDontMatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidMintFee()\":[{\"notice\":\"Error thrown when the sent amount is not valid\"}],\"InvalidMintFeeForFreeMinting()\":[{\"notice\":\"Error thrown when sending funds to a free minting\"}],\"InvalidMintingType()\":[{\"notice\":\"Invalid collection minting type for the current minting function\"}],\"InvalidPercentageOrDiscountValues()\":[{\"notice\":\"Invalid percentage or discount values\"}],\"InvalidPhaseWithoutDate()\":[{\"notice\":\"Invalid phase can't be set without giving a date, use the proper functions\"}],\"InvalidRevenuePercentage()\":[{\"notice\":\"The input revenue percentages are not valid\"}],\"InvalidTokenId()\":[{\"notice\":\"Error thrown when trying to mint a token with a given invalid id\"}],\"MaxPerAddressExceeded()\":[{\"notice\":\"The address exceeded the max per address amount\"}],\"MetadataAlreadyFixed()\":[{\"notice\":\"Metadata is already fixed. Can't change metadata once fixed\"}],\"NewBaseURICantBeEmpty()\":[{\"notice\":\"New BaseURI can't be empty\"}],\"NewPlaceholderCantBeEmpty()\":[{\"notice\":\"New Placeholder can't be empty\"}],\"NoBaseURINorPlaceholderSet()\":[{\"notice\":\"No BaseURI nor Placeholder set\"}],\"NonTransferrableSoulboundNFT()\":[{\"notice\":\"Can't transfer a Soulbound Token (SBT)\"}],\"NotEnoughAmountToMint()\":[{\"notice\":\"Error thrown when trying to mint more than the allowance to mint\"}],\"NothingToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets with no amount to redeem\"}],\"OnlyAffiliateOrN2M()\":[{\"notice\":\"Only the given affiliate or N2M can call this function\"}],\"OnlyOwnerOrN2M()\":[{\"notice\":\"Only owner of N2M can call this function\"}],\"PresaleInvalidMintingType()\":[{\"notice\":\"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\"}],\"PresaleNotOpen()\":[{\"notice\":\"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\"}],\"PublicSaleNotOpen()\":[{\"notice\":\"Error thrown when trying to mint and the collection current phase is not `open`\"}],\"ReentrancyGuard()\":[{\"notice\":\"Reentrancy Guard protection\"}],\"RoyaltyFeeTooHigh()\":[{\"notice\":\"Royalty fee can't be higher than 10%\"}],\"SaleFinished()\":[{\"notice\":\"Error thrown when trying to mint but the sale has already finished\"}],\"SignatureExpired()\":[{\"notice\":\"The signature has expired\"}],\"SignatureMismatch()\":[{\"notice\":\"The given signature doesn't match the input values\"}],\"TokenAlreadyMinted()\":[{\"notice\":\"Error thrown when trying to mint a token with a given id which is already minted\"}],\"TotalSupplyMustBeGreaterThanZero()\":[{\"notice\":\"Invalid input. Total supply must be greater than zero\"}],\"WaitUntilDropDate()\":[{\"notice\":\"Can't mint until specified drop date\"}]},\"events\":{\"AffiliateSell(address)\":{\"notice\":\"This event is emitted when a token is minted using an affiliate\"}},\"kind\":\"user\",\"methods\":{\"airdropRandom(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\"},\"airdropSequential(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\"},\"airdropSpecify(address[],uint256[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\"},\"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)\":{\"notice\":\"To be called to create the collection. Can only be called once.\"},\"isMetadataFixed()\":{\"notice\":\"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\"},\"maxPerAddress()\":{\"notice\":\"Max amount of NFTs to be hold per address.\"},\"mint()\":{\"notice\":\"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256,address)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintCustomURITo(address,bytes32,bool)\":{\"notice\":\"Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\"},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\"},\"mintPrice()\":{\"notice\":\"Returns the minting price of one NFT.\"},\"mintRandomTo(address,uint256)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintRandomTo(address,uint256,address)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintSpecifyTo(address,uint256[])\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintSpecifyTo(address,uint256[],address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256)\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256,address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"n2mVersion()\":{\"notice\":\"Current version of the nfts2me.com contracts.\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"owner()\":{\"notice\":\"Returns the address of the current collection owner.\"},\"redeemRandom()\":{\"notice\":\"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\"},\"royaltyInfo(uint256,uint256)\":{\"notice\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"totalSupply()\":{\"notice\":\"Returns the current total supply.\"}},\"notice\":\"Read our terms of service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/N2MTokenCommon.sol\":\"N2MTokenCommon\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IN2MCrossFactory {\\n function getN2MTreasuryAddress() external pure returns (address);\\n function ownerOf(uint256 tokenId) external view returns (address);\\n function strictOwnerOf(uint256 tokenId) external view returns (address);\\n}\\n\",\"keccak256\":\"0xa82780a2da4848f8c0f93e1a2da64e9b7e90869803050e6921863fe5683af43d\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCBase is IERC2981Upgradeable, IN2M_ERCStorage {\\n /// @notice To be called to create the collection. Can only be called once.\\n function initialize\\n (\\n string memory tokenName,\\n string memory tokenSymbol,\\n uint256 iMintPrice,\\n bytes32 baseURICIDHash,\\n bytes32 placeholderImageCIDHash,\\n RevenueAddress[] calldata revenueAddresses,\\n address iErc20PaymentAddress,\\n uint32 iTotalSupply,\\n uint16 iRoyaltyFee,\\n bool soulboundCollection,\\n MintingType iMintingType\\n ) external payable;\\n\\n /// @notice A descriptive name for a collection of NFTs in this contract\\n function name() external view returns (string memory);\\n\\n /// @notice An abbreviated name for NFTs in this contract\\n /// @return the collection symbol\\n function symbol() external view returns (string memory);\\n\\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\\n /// 3986. The URI may point to a JSON file that conforms to the \\\"ERC721\\n /// Metadata JSON Schema\\\".\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable; \\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds) external payable; \\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) external payable; \\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(address[] memory to, uint256[] memory tokenIds, bool soulbound) external payable;\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale (\\n address to, \\n uint256[] memory tokenIds,\\n bool freeMinting, \\n uint256 customFee, \\n uint256 maxAmount,\\n uint256 amount, \\n bool soulbound,\\n bytes calldata signature) payable external;\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256);\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256);\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view returns (uint16);\\n\\n}\\n\\n\",\"keccak256\":\"0xfded09e330fd4f048b81b38352d7c4480b09f691dc1360a6857f1b5d9681b7f4\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"../important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0xfda5b953ecaa603de1c1b1c789767ea9aa2e1b9d5e12b7e1af68c581e35c225f\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IOperatorFilterRegistry {\\n function isOperatorAllowed(address registrant, address operator) external view returns (bool);\\n function register(address registrant) external;\\n function registerAndSubscribe(address registrant, address subscription) external;\\n function registerAndCopyEntries(address registrant, address registrantToCopy) external;\\n function updateOperator(address registrant, address operator, bool filtered) external;\\n function updateOperators(address registrant, address[] calldata operators, bool filtered) external;\\n function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;\\n function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;\\n function subscribe(address registrant, address registrantToSubscribe) external;\\n function unsubscribe(address registrant, bool copyExistingEntries) external;\\n function subscriptionOf(address addr) external returns (address registrant);\\n function subscribers(address registrant) external returns (address[] memory);\\n function subscriberAt(address registrant, uint256 index) external returns (address);\\n function copyEntriesOf(address registrant, address registrantToCopy) external;\\n function isOperatorFiltered(address registrant, address operator) external returns (bool);\\n function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);\\n function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);\\n function filteredOperators(address addr) external returns (address[] memory);\\n function filteredCodeHashes(address addr) external returns (bytes32[] memory);\\n function filteredOperatorAt(address registrant, uint256 index) external returns (address);\\n function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);\\n function isRegistered(address addr) external view returns (bool);\\n function codeHashOf(address addr) external view returns (bytes32);\\n}\",\"keccak256\":\"0x94297c604eea7c0dcac072ec8257d58f3927fc2c1f22b41c9f78d82e4a8cf5a5\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract NFTOwnableUpgradeable is Initializable, ContextUpgradeable {\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n modifier onlyStrictOwner() {\\n _checkStrictOwner();\\n _;\\n }\\n\\n modifier onlyOwnerOrN2M() {\\n _checkOwnerOrN2M();\\n _;\\n }\\n\\n modifier onlyN2M() {\\n _checkN2M();\\n _;\\n }\\n\\n /// @notice Returns the address of the current collection owner.\\n /// @return The address of the owner.\\n function owner() public view virtual returns (address);\\n function _strictOwner() internal view virtual returns (address);\\n function _getN2MFeeAddress() internal view virtual returns (address);\\n\\n function _checkOwner() internal view virtual {\\n require(owner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkStrictOwner() internal view virtual {\\n require(_strictOwner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkOwnerOrN2M() internal view virtual {\\n require(owner() == msg.sender || _getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkN2M() internal view virtual {\\n require(_getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n}\",\"keccak256\":\"0x0b3a2ca7a3f09ec6c3e387f9102e32bf755baf64986076d114f584fea0f17b38\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts-upgradeable/governance/utils/IVotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/IVotes.sol)\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\\n *\\n * _Available since v4.5._\\n */\\ninterface IVotesUpgradeable {\\n /**\\n * @dev Emitted when an account changes their delegate.\\n */\\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\\n\\n /**\\n * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\\n */\\n event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance);\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n */\\n function getPastVotes(address account, uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n */\\n function getPastTotalSupply(uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) external view returns (address);\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) external;\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n}\\n\",\"keccak256\":\"0xe8e2d2f70db1913260634f710cc057d669b06eccf4dca27e18b79c3bbb101da6\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (governance/utils/Votes.sol)\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/CountersUpgradeable.sol\\\";\\nimport \\\"../../utils/CheckpointsUpgradeable.sol\\\";\\nimport \\\"../../utils/cryptography/EIP712Upgradeable.sol\\\";\\nimport \\\"./IVotesUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This is a base abstract contract that tracks voting units, which are a measure of voting power that can be\\n * transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of\\n * \\\"representative\\\" that will pool delegated voting units from different accounts and can then use it to vote in\\n * decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to\\n * delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative.\\n *\\n * This contract is often combined with a token contract such that voting units correspond to token units. For an\\n * example, see {ERC721Votes}.\\n *\\n * The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed\\n * at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the\\n * cost of this history tracking optional.\\n *\\n * When using this module the derived contract must implement {_getVotingUnits} (for example, make it return\\n * {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the\\n * previous example, it would be included in {ERC721-_beforeTokenTransfer}).\\n *\\n * _Available since v4.5._\\n */\\nabstract contract VotesUpgradeable is Initializable, IVotesUpgradeable, ContextUpgradeable, EIP712Upgradeable {\\n function __Votes_init() internal onlyInitializing {\\n }\\n\\n function __Votes_init_unchained() internal onlyInitializing {\\n }\\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\\n using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n bytes32 private constant _DELEGATION_TYPEHASH =\\n keccak256(\\\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\\\");\\n\\n mapping(address => address) private _delegation;\\n mapping(address => CheckpointsUpgradeable.History) private _delegateCheckpoints;\\n CheckpointsUpgradeable.History private _totalCheckpoints;\\n\\n mapping(address => CountersUpgradeable.Counter) private _nonces;\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) public view virtual override returns (uint256) {\\n return _delegateCheckpoints[account].latest();\\n }\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n *\\n * Requirements:\\n *\\n * - `blockNumber` must have been already mined\\n */\\n function getPastVotes(address account, uint256 blockNumber) public view virtual override returns (uint256) {\\n return _delegateCheckpoints[account].getAtProbablyRecentBlock(blockNumber);\\n }\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n *\\n * Requirements:\\n *\\n * - `blockNumber` must have been already mined\\n */\\n function getPastTotalSupply(uint256 blockNumber) public view virtual override returns (uint256) {\\n require(blockNumber < block.number, \\\"Votes: block not yet mined\\\");\\n return _totalCheckpoints.getAtProbablyRecentBlock(blockNumber);\\n }\\n\\n /**\\n * @dev Returns the current total supply of votes.\\n */\\n function _getTotalSupply() internal view virtual returns (uint256) {\\n return _totalCheckpoints.latest();\\n }\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) public view virtual override returns (address) {\\n return _delegation[account];\\n }\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) public virtual override {\\n address account = _msgSender();\\n _delegate(account, delegatee);\\n }\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public virtual override {\\n require(block.timestamp <= expiry, \\\"Votes: signature expired\\\");\\n address signer = ECDSAUpgradeable.recover(\\n _hashTypedDataV4(keccak256(abi.encode(_DELEGATION_TYPEHASH, delegatee, nonce, expiry))),\\n v,\\n r,\\n s\\n );\\n require(nonce == _useNonce(signer), \\\"Votes: invalid nonce\\\");\\n _delegate(signer, delegatee);\\n }\\n\\n /**\\n * @dev Delegate all of `account`'s voting units to `delegatee`.\\n *\\n * Emits events {IVotes-DelegateChanged} and {IVotes-DelegateVotesChanged}.\\n */\\n function _delegate(address account, address delegatee) internal virtual {\\n address oldDelegate = delegates(account);\\n _delegation[account] = delegatee;\\n\\n emit DelegateChanged(account, oldDelegate, delegatee);\\n _moveDelegateVotes(oldDelegate, delegatee, _getVotingUnits(account));\\n }\\n\\n /**\\n * @dev Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to`\\n * should be zero. Total supply of voting units will be adjusted with mints and burns.\\n */\\n function _transferVotingUnits(\\n address from,\\n address to,\\n uint256 amount\\n ) internal virtual {\\n if (from == address(0)) {\\n _totalCheckpoints.push(_add, amount);\\n }\\n if (to == address(0)) {\\n _totalCheckpoints.push(_subtract, amount);\\n }\\n _moveDelegateVotes(delegates(from), delegates(to), amount);\\n }\\n\\n /**\\n * @dev Moves delegated votes from one delegate to another.\\n */\\n function _moveDelegateVotes(\\n address from,\\n address to,\\n uint256 amount\\n ) private {\\n if (from != to && amount > 0) {\\n if (from != address(0)) {\\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[from].push(_subtract, amount);\\n emit DelegateVotesChanged(from, oldValue, newValue);\\n }\\n if (to != address(0)) {\\n (uint256 oldValue, uint256 newValue) = _delegateCheckpoints[to].push(_add, amount);\\n emit DelegateVotesChanged(to, oldValue, newValue);\\n }\\n }\\n }\\n\\n function _add(uint256 a, uint256 b) private pure returns (uint256) {\\n return a + b;\\n }\\n\\n function _subtract(uint256 a, uint256 b) private pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Consumes a nonce.\\n *\\n * Returns the current value and increments nonce.\\n */\\n function _useNonce(address owner) internal virtual returns (uint256 current) {\\n CountersUpgradeable.Counter storage nonce = _nonces[owner];\\n current = nonce.current();\\n nonce.increment();\\n }\\n\\n /**\\n * @dev Returns an address nonce.\\n */\\n function nonces(address owner) public view virtual returns (uint256) {\\n return _nonces[owner].current();\\n }\\n\\n /**\\n * @dev Returns the contract's {EIP712} domain separator.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32) {\\n return _domainSeparatorV4();\\n }\\n\\n /**\\n * @dev Must return the voting units held by an account.\\n */\\n function _getVotingUnits(address) internal view virtual returns (uint256);\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[46] private __gap;\\n}\\n\",\"keccak256\":\"0x03d4e5b8237229d370c92981f6642e67c075c3cc4f759a76ea4c73a2b27d36e5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n */\\n function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n external\\n view\\n returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xcc70d8e2281fb3ff69e8ab242500f10142cd0a7fa8dd9e45882be270d4d09024\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/draft-IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n function safeTransfer(\\n IERC20Upgradeable token,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n function safeTransferFrom(\\n IERC20Upgradeable token,\\n address from,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n function safeIncreaseAllowance(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n uint256 newAllowance = token.allowance(address(this), spender) + value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n function safeDecreaseAllowance(\\n IERC20Upgradeable token,\\n address spender,\\n uint256 value\\n ) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n uint256 newAllowance = oldAllowance - value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n }\\n\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n if (returndata.length > 0) {\\n // Return data is optional\\n require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n }\\n}\\n\",\"keccak256\":\"0x220c4a5af915e656be2aaa85ca57505d102418e476b1e2ef6c62e0c6ac143871\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.2) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721Upgradeable.sol\\\";\\nimport \\\"./IERC721ReceiverUpgradeable.sol\\\";\\nimport \\\"./extensions/IERC721MetadataUpgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721Upgradeable, IERC721MetadataUpgradeable {\\n using AddressUpgradeable for address;\\n using StringsUpgradeable for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\\n __ERC721_init_unchained(name_, symbol_);\\n }\\n\\n function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) {\\n return\\n interfaceId == type(IERC721Upgradeable).interfaceId ||\\n interfaceId == type(IERC721MetadataUpgradeable).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721Upgradeable.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721Upgradeable.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721Upgradeable.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721ReceiverUpgradeable(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721ReceiverUpgradeable.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[44] private __gap;\\n}\\n\",\"keccak256\":\"0xac29c453f4cf43afe4c9599374b6e1ed493c18644d814554e8a5969aaa6f3486\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721ReceiverUpgradeable {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/extensions/ERC721URIStorage.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC721Upgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev ERC721 token with storage based token URI management.\\n */\\nabstract contract ERC721URIStorageUpgradeable is Initializable, ERC721Upgradeable {\\n function __ERC721URIStorage_init() internal onlyInitializing {\\n }\\n\\n function __ERC721URIStorage_init_unchained() internal onlyInitializing {\\n }\\n using StringsUpgradeable for uint256;\\n\\n // Optional mapping for token URIs\\n mapping(uint256 => string) private _tokenURIs;\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory _tokenURI = _tokenURIs[tokenId];\\n string memory base = _baseURI();\\n\\n // If there is no base URI, return the token URI.\\n if (bytes(base).length == 0) {\\n return _tokenURI;\\n }\\n // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\\n if (bytes(_tokenURI).length > 0) {\\n return string(abi.encodePacked(base, _tokenURI));\\n }\\n\\n return super.tokenURI(tokenId);\\n }\\n\\n /**\\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\\n require(_exists(tokenId), \\\"ERC721URIStorage: URI set of nonexistent token\\\");\\n _tokenURIs[tokenId] = _tokenURI;\\n }\\n\\n /**\\n * @dev See {ERC721-_burn}. This override additionally checks to see if a\\n * token-specific URI was set for the token, and if so, it deletes the token URI from\\n * the storage mapping.\\n */\\n function _burn(uint256 tokenId) internal virtual override {\\n super._burn(tokenId);\\n\\n if (bytes(_tokenURIs[tokenId]).length != 0) {\\n delete _tokenURIs[tokenId];\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/extensions/ERC721Votes.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC721Upgradeable.sol\\\";\\nimport \\\"../../../governance/utils/VotesUpgradeable.sol\\\";\\nimport \\\"../../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Extension of ERC721 to support voting and delegation as implemented by {Votes}, where each individual NFT counts\\n * as 1 vote unit.\\n *\\n * Tokens do not count as votes until they are delegated, because votes must be tracked which incurs an additional cost\\n * on every transfer. Token holders can either delegate to a trusted representative who will decide how to make use of\\n * the votes in governance decisions, or they can delegate to themselves to be their own representative.\\n *\\n * _Available since v4.5._\\n */\\nabstract contract ERC721VotesUpgradeable is Initializable, ERC721Upgradeable, VotesUpgradeable {\\n function __ERC721Votes_init() internal onlyInitializing {\\n }\\n\\n function __ERC721Votes_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {ERC721-_afterTokenTransfer}. Adjusts votes when tokens are transferred.\\n *\\n * Emits a {IVotes-DelegateVotesChanged} event.\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 firstTokenId,\\n uint256 batchSize\\n ) internal virtual override {\\n _transferVotingUnits(from, to, batchSize);\\n super._afterTokenTransfer(from, to, firstTokenId, batchSize);\\n }\\n\\n /**\\n * @dev Returns the balance of `account`.\\n */\\n function _getVotingUnits(address account) internal view virtual override returns (uint256) {\\n return balanceOf(account);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x63df902b937900c1a0ed022ff39a8e995f1fdf5cbdddbba92c4db3f47661dcda\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721Upgradeable.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721MetadataUpgradeable is IERC721Upgradeable {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(History storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _blockNumber,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace224 storage self,\\n uint32 key,\\n uint224 value\\n ) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint32 _key,\\n uint224 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint224 value\\n ) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint224[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint224 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n Trace160 storage self,\\n uint96 key,\\n uint160 value\\n ) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the oldest checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint with key lower or equal than the search key.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self)\\n internal\\n view\\n returns (\\n bool exists,\\n uint96 _key,\\n uint160 _value\\n )\\n {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint160 value\\n ) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoints keys must be increasing.\\n require(last._key <= key, \\\"Checkpoint: invalid key\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the oldest checkpoint whose key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint160[] storage self, uint256 pos)\\n private\\n pure\\n returns (Checkpoint160 storage result)\\n {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x92fe8e1836627ba1baa62a2d4bd76c52ccfe53fec6650b609af33918be967a82\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n}\\n\",\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(\\n bytes32 hash,\\n bytes32 r,\\n bytes32 vs\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(\\n bytes32 hash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n }\\n}\\n\",\"keccak256\":\"0x12f297cafe6e2847ae0378502f155654d0764b532a9873c8afe4350950fa7971\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/EIP712.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ECDSAUpgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * _Available since v3.4._\\n *\\n * @custom:storage-size 52\\n */\\nabstract contract EIP712Upgradeable is Initializable {\\n /* solhint-disable var-name-mixedcase */\\n bytes32 private _HASHED_NAME;\\n bytes32 private _HASHED_VERSION;\\n bytes32 private constant _TYPE_HASH = keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\");\\n\\n /* solhint-enable var-name-mixedcase */\\n\\n /**\\n * @dev Initializes the domain separator and parameter caches.\\n *\\n * The meaning of `name` and `version` is specified in\\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n *\\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n * - `version`: the current major version of the signing domain.\\n *\\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n * contract upgrade].\\n */\\n function __EIP712_init(string memory name, string memory version) internal onlyInitializing {\\n __EIP712_init_unchained(name, version);\\n }\\n\\n function __EIP712_init_unchained(string memory name, string memory version) internal onlyInitializing {\\n bytes32 hashedName = keccak256(bytes(name));\\n bytes32 hashedVersion = keccak256(bytes(version));\\n _HASHED_NAME = hashedName;\\n _HASHED_VERSION = hashedVersion;\\n }\\n\\n /**\\n * @dev Returns the domain separator for the current chain.\\n */\\n function _domainSeparatorV4() internal view returns (bytes32) {\\n return _buildDomainSeparator(_TYPE_HASH, _EIP712NameHash(), _EIP712VersionHash());\\n }\\n\\n function _buildDomainSeparator(\\n bytes32 typeHash,\\n bytes32 nameHash,\\n bytes32 versionHash\\n ) private view returns (bytes32) {\\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\\n }\\n\\n /**\\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n * function returns the hash of the fully encoded EIP712 message for this domain.\\n *\\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n *\\n * ```solidity\\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n * keccak256(\\\"Mail(address to,string contents)\\\"),\\n * mailTo,\\n * keccak256(bytes(mailContents))\\n * )));\\n * address signer = ECDSA.recover(digest, signature);\\n * ```\\n */\\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n return ECDSAUpgradeable.toTypedDataHash(_domainSeparatorV4(), structHash);\\n }\\n\\n /**\\n * @dev The hash of the name parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712NameHash() internal virtual view returns (bytes32) {\\n return _HASHED_NAME;\\n }\\n\\n /**\\n * @dev The hash of the version parameter for the EIP712 domain.\\n *\\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\\n * are a concern.\\n */\\n function _EIP712VersionHash() internal virtual view returns (bytes32) {\\n return _HASHED_VERSION;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x3017aded62c4a2b9707f5f06f92934e592c1c9b6f384b91b51340a6d5f841931\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator\\n ) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1);\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(\\n uint256 x,\\n uint256 y,\\n uint256 denominator,\\n Rounding rounding\\n ) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10**64) {\\n value /= 10**64;\\n result += 64;\\n }\\n if (value >= 10**32) {\\n value /= 10**32;\\n result += 32;\\n }\\n if (value >= 10**16) {\\n value /= 10**16;\\n result += 16;\\n }\\n if (value >= 10**8) {\\n value /= 10**8;\\n result += 8;\\n }\\n if (value >= 10**4) {\\n value /= 10**4;\\n result += 4;\\n }\\n if (value >= 10**2) {\\n value /= 10**2;\\n result += 2;\\n }\\n if (value >= 10**1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"contracts/N2MCommonStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/interfaces/IN2M_ERCStorage.sol\\\";\\nimport \\\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\\\";\\nimport \\\"@nfts2me/contracts/ownable/NFTOwnableUpgradeable.sol\\\";\\nimport {IOperatorFilterRegistry} from \\\"@nfts2me/contracts/interfaces/IOperatorFilterRegistry.sol\\\";\\nimport \\\"./N2MVersion.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MCommonStorage is\\n NFTOwnableUpgradeable,\\n IN2M_ERCStorage,\\n N2MVersion\\n{\\n /// CONSTANTS\\n address internal constant DEFAULT_SUBSCRIPTION = address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6);\\n address internal constant OPENSEA_CONDUIT = address(0x1E0049783F008A0085193E00003D00cd54003c71);\\n address internal constant N2M_CONDUIT = address(0x88899DC0B84C6E726840e00DFb94ABc6248825eC);\\n IOperatorFilterRegistry internal constant operatorFilterRegistry = IOperatorFilterRegistry(0x000000000000AAeB6D7670E522A718067333cd4E);\\n address internal constant N2M_PRESALE_SIGNER = address(0xC0ffee06CE3D6689305035601a055A96acd619c6);\\n address internal constant N2M_TREASURY = address(0x955aF4de9Ca03f84c9462457D075aCABf1A8AfC8);\\n uint256 internal constant N2M_FEE = 5_00;\\n uint256 internal constant MAX_AFFILIATE_DISCOUNT = 100_00;\\n uint256 internal constant MAX_AFFILIATE_PERCENTAGE = 100_00;\\n uint256 internal constant NOT_ENTERED = 0;\\n\\n /// IMMUTABLE \\n address payable internal immutable _factory;\\n\\n bytes32 internal _baseURICIDHash;\\n bytes32 internal _placeholderImageCIDHash;\\n bytes32 internal _contractURIMetadataCIDHash;\\n\\n mapping(address => uint256) internal _pendingAffiliateBalance;\\n uint256 internal _pendingTotalAffiliatesBalance;\\n\\n RevenueAddress[] internal _revenueInfo;\\n mapping(address => AffiliateInformation) internal _affiliatesInfo;\\n\\n uint256 internal _mintPrice;\\n uint256 internal _withdrawnAmount;\\n uint256 internal _reentrancyEntered;\\n uint256 internal _dropDateTimestamp;\\n uint256 internal _endDateTimestamp; \\n\\n mapping(address => uint256) internal _withdrawnERC20Amount;\\n address internal _erc20PaymentAddress;\\n\\n mapping(address => RandomTicket) internal _randomTickets;\\n mapping(bytes => uint256) internal _usedAmountSignature;\\n mapping(uint256 => bool) internal _soulbound;\\n mapping(uint256 => bytes32) internal _customURICIDHashes;\\n\\n uint32 internal _soldTokens;\\n SalePhase internal _currentPhase;\\n OperatorFilterStatus internal _operatorFilterStatus;\\n MintingType internal _mintingType; \\n uint16 internal _royaltyFee;\\n uint16 internal _maxPerAddress; \\n uint32 internal _collectionSize;\\n bool internal _isERC20Payment;\\n bool internal _soulboundCollection;\\n\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(address payable factoryAddress) {\\n _factory = factoryAddress;\\n _disableInitializers();\\n }\\n\\n /// @notice Returns the address of the current collection owner.\\n function owner() public view override(NFTOwnableUpgradeable) returns (address collectionOwner) {\\n try IN2MCrossFactory(_factory).ownerOf(uint256(uint160(address(this)))) returns (address ownerOf) {\\n return ownerOf;\\n } catch {}\\n }\\n\\n function _strictOwner() internal view override(NFTOwnableUpgradeable) returns (address ownerStrictAddress) {\\n try IN2MCrossFactory(_factory).strictOwnerOf(uint256(uint160(address(this)))) returns (address strictOwnerOf) {\\n return strictOwnerOf;\\n } catch {}\\n }\\n\\n function _getN2MFeeAddress() internal view override(NFTOwnableUpgradeable) returns (address) {\\n\\n try IN2MCrossFactory(_factory).getN2MTreasuryAddress() returns (address n2mTreasuryAddress) {\\n return n2mTreasuryAddress;\\n } catch {\\n return N2M_TREASURY;\\n }\\n } \\n\\n modifier nonReentrant() {\\n _nonReentrantBefore();\\n _;\\n _nonReentrantAfter();\\n }\\n\\n function _nonReentrantBefore() private {\\n if (_reentrancyEntered != 0) revert ReentrancyGuard();\\n _reentrancyEntered = 1;\\n }\\n\\n function _nonReentrantAfter() private {\\n delete(_reentrancyEntered);\\n } \\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() public view override returns (bool) {\\n return (_baseURICIDHash != 0 || (_mintingType == MintingType.CUSTOM_URI));\\n }\\n\\n}\\n\",\"keccak256\":\"0xa72fa45c4464fb3dc36a3c7385c79b0af244fb8f8c654f6c75f10035efdb2e88\",\"license\":\"UNLICENSED\"},\"contracts/N2MTokenCommon.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721VotesUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\\\";\\n\\n/// Utils\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport \\\"@nfts2me/contracts/interfaces/IN2MCrossFactory.sol\\\";\\nimport \\\"@nfts2me/contracts/interfaces/IN2M_ERCBase.sol\\\";\\nimport \\\"./N2MCommonStorage.sol\\\";\\n\\ninterface IN2MLibrary {\\n function tokenURIImpl(uint256 tokenId) external view returns (string memory);\\n}\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MTokenCommon is N2MCommonStorage, IN2M_ERCBase {\\n /// IMMUTABLE\\n address internal immutable LIBRARY_ADDRESS;\\n\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor(address libraryAddress, address payable factoryAddress) N2MCommonStorage(factoryAddress) {\\n LIBRARY_ADDRESS = libraryAddress;\\n }\\n\\n function _mint(address to, uint256 tokenId) internal virtual;\\n\\n function _exists(uint256 tokenId) internal view virtual returns (bool);\\n\\n function name() external view virtual override returns (string memory);\\n\\n function tokenURI(uint256 tokenId) external view virtual override returns (string memory);\\n\\n function balanceOf(address owner) public view virtual returns (uint256 balance); \\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable override {\\n _requirePayment(_mintPrice, 1);\\n _checkPhase();\\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\\n unchecked {\\n if ((++_soldTokens) > _collectionSize) revert CollectionSoldOut();\\n }\\n _mint(msg.sender, _soldTokens);\\n }\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable override {\\n _requirePayment(_mintPrice, amount);\\n _mintSequentialWithChecks(msg.sender, amount);\\n }\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable override {\\n _requirePaymentWithAffiliates(amount, affiliate);\\n _mintSequentialWithChecks(msg.sender, amount);\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable override {\\n _requirePayment(_mintPrice, amount);\\n _mintSequentialWithChecks(to, amount);\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable override {\\n _requirePaymentWithAffiliates(amount, affiliate);\\n _mintSequentialWithChecks(to, amount);\\n }\\n\\n function _mintSequentialWithChecks(address to, uint256 amount) private {\\n _checkPhase();\\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\\n if ((_soldTokens + amount) > _collectionSize) revert CollectionSoldOut();\\n\\n _mintSequential(to, amount);\\n }\\n\\n function _mintSequential(address to, uint256 amount, bool soulbound) private {\\n for (uint256 i; i < amount; ) {\\n unchecked {\\n _mint(to, ++_soldTokens);\\n }\\n if (soulbound) _soulbound[_soldTokens] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n function _mintSequential(address to, uint256 amount) internal virtual {\\n for (uint256 i; i < amount; ) {\\n unchecked {\\n _mint(to, ++_soldTokens);\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable override {\\n _requirePayment(_mintPrice, amount);\\n _mintRandomWithChecks(to, amount);\\n }\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable override {\\n _requirePaymentWithAffiliates(amount, affiliate);\\n _mintRandomWithChecks(to, amount);\\n }\\n\\n function _mintRandomWithChecks(address to, uint256 amount) private {\\n _checkPhase();\\n if (_mintingType != MintingType.RANDOM) revert InvalidMintingType();\\n if (_soldTokens + (amount) > _collectionSize) revert CollectionSoldOut();\\n\\n unchecked {\\n _randomTickets[to].blockNumberToReveal = block.number + 2;\\n _randomTickets[to].amount += amount;\\n _soldTokens += uint32(amount);\\n }\\n\\n if (_maxPerAddress != 0) {\\n\\n if (balanceOf(to) > _maxPerAddress) revert MaxPerAddressExceeded();\\n } \\n }\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable override {\\n uint256 blockNumberToReveal = _randomTickets[msg.sender].blockNumberToReveal;\\n uint256 amountToRedeem = _randomTickets[msg.sender].amount;\\n\\n if (amountToRedeem == 0) revert NothingToRedeem();\\n if (block.number <= _randomTickets[msg.sender].blockNumberToReveal) revert CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n bytes32 seedFromBlockNumber = blockhash(blockNumberToReveal);\\n\\n if (seedFromBlockNumber == 0) {\\n\\n uint256 newBlockNumber = ((block.number & uint256(int256(-0x100))) + (blockNumberToReveal & 0xff));\\n\\n if ((newBlockNumber >= block.number)) {\\n newBlockNumber -= 256;\\n\\n }\\n seedFromBlockNumber = blockhash(newBlockNumber);\\n\\n }\\n\\n delete(_randomTickets[msg.sender].blockNumberToReveal);\\n delete(_randomTickets[msg.sender].amount);\\n\\n uint16 maxPerAddressTemp = _maxPerAddress;\\n delete(_maxPerAddress);\\n _mintRandom(msg.sender, amountToRedeem, seedFromBlockNumber, false);\\n _maxPerAddress = maxPerAddressTemp;\\n }\\n\\n function _mintRandom(address to, uint256 amount, bytes32 seed, bool soulbound) private {\\n for (; amount > 0; ) {\\n uint256 tokenId = _randomTokenId(seed, amount);\\n _mint(to, tokenId);\\n if (soulbound) _soulbound[tokenId] = true;\\n unchecked {\\n --amount;\\n }\\n }\\n }\\n\\n function _randomTokenId(bytes32 seed, uint256 extraModifier) private view returns (uint256 tokenId) {\\n\\n tokenId = (uint256(keccak256(abi.encodePacked(seed, extraModifier))) % _collectionSize) + 1;\\n\\n while (_exists(tokenId)) {\\n unchecked {\\n tokenId = (tokenId % _collectionSize) + 1;\\n }\\n }\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds)\\n external\\n payable\\n override\\n {\\n _requirePayment(_mintPrice, tokenIds.length);\\n _mintSpecifyWithChecks(to, tokenIds);\\n }\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) \\n external\\n payable\\n override\\n {\\n _requirePaymentWithAffiliates(tokenIds.length, affiliate);\\n _mintSpecifyWithChecks(to, tokenIds);\\n }\\n\\n function _mintSpecifyWithChecks(address to, uint256[] memory tokenIds)\\n private\\n {\\n _checkPhase();\\n if (_mintingType != MintingType.SPECIFY) revert InvalidMintingType();\\n\\n if (_soldTokens + (tokenIds.length) > _collectionSize) revert CollectionSoldOut();\\n\\n _mintSpecify(to, tokenIds);\\n }\\n\\n function _mintSpecify(\\n address to,\\n uint256[] memory tokenIds,\\n bool soulbound\\n ) private {\\n _mintSpecify(to, tokenIds);\\n uint256 inputLength = tokenIds.length; \\n if (soulbound) {\\n for (uint256 i; i < inputLength; ) {\\n _soulbound[tokenIds[i]] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n }\\n\\n function _mintSpecify(address to, uint256[] memory tokenIds)\\n internal\\n virtual\\n {\\n\\n uint256 inputLength = tokenIds.length;\\n unchecked {\\n _soldTokens += uint32(inputLength);\\n }\\n for (uint256 i; i < inputLength; ) {\\n uint256 tokenId = tokenIds[i];\\n\\n if (tokenId == 0 || tokenId > _collectionSize) revert InvalidTokenId();\\n _mint(to, tokenId);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound)\\n external\\n payable\\n override\\n {\\n _requirePayment(_mintPrice, 1);\\n _checkPhase();\\n if (_mintingType != MintingType.CUSTOM_URI) revert InvalidMintingType();\\n unchecked {\\n if ((++_soldTokens) > _collectionSize) revert CollectionSoldOut();\\n }\\n _mint(to, _soldTokens);\\n\\n unchecked {\\n if (soulbound) _soulbound[_soldTokens] = true;\\n }\\n _customURICIDHashes[_soldTokens] = customURICIDHash;\\n }\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound)\\n external\\n payable\\n override\\n onlyStrictOwner\\n {\\n if (_mintingType != MintingType.SEQUENTIAL) revert InvalidMintingType();\\n if (_soldTokens + (to.length) > _collectionSize) revert CollectionSoldOut();\\n\\n uint256 toLength = to.length;\\n for (uint256 i; i < toLength; ) {\\n\\n unchecked {\\n _mint(to[i], ++_soldTokens); \\n if (soulbound) _soulbound[_soldTokens] = true;\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound)\\n external\\n payable\\n override\\n onlyOwner\\n {\\n uint256 toLength = to.length;\\n if (_mintingType != MintingType.RANDOM) revert InvalidMintingType();\\n\\n if ((_soldTokens + toLength) > _collectionSize) revert CollectionSoldOut();\\n\\n unchecked {\\n _soldTokens += uint32(toLength);\\n }\\n\\n bytes32 randomSeed = blockhash(block.number - 1);\\n\\n for (uint256 i; i < toLength; ) {\\n uint256 newTokenId = _randomTokenId(randomSeed, i);\\n _mint(to[i], newTokenId);\\n if (soulbound) _soulbound[newTokenId] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(\\n address[] memory to,\\n uint256[] memory tokenIds,\\n bool soulbound\\n ) external payable override onlyOwner {\\n uint256 toLength = to.length;\\n if (_mintingType != MintingType.SPECIFY) revert InvalidMintingType();\\n\\n if (_soldTokens + (tokenIds.length) > _collectionSize) revert CollectionSoldOut();\\n if (toLength != tokenIds.length) revert InvalidInputSizesDontMatch();\\n\\n unchecked {\\n _soldTokens += uint32(toLength);\\n }\\n\\n for (uint256 i; i < toLength; ) {\\n\\n if (tokenIds[i] == 0 || tokenIds[i] > _collectionSize) revert InvalidTokenId();\\n _mint(to[i], tokenIds[i]);\\n if (soulbound) _soulbound[tokenIds[i]] = true;\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale(\\n address to,\\n uint256[] memory tokenIds,\\n bool freeMinting,\\n uint256 customFee,\\n uint256 maxAmount,\\n uint256 amount,\\n bool soulbound,\\n bytes calldata signature\\n ) external payable override {\\n if (amount == 0) revert InvalidAmount();\\n\\n _usedAmountSignature[signature] += amount;\\n if (_usedAmountSignature[signature] > maxAmount) revert NotEnoughAmountToMint();\\n\\n if (_soldTokens + amount > _collectionSize) revert CollectionSoldOut();\\n\\n if (_currentPhase == SalePhase.CLOSED) revert PresaleNotOpen();\\n\\n address signer = ECDSAUpgradeable.recover(\\n ECDSAUpgradeable.toEthSignedMessageHash(\\n keccak256(\\n abi.encodePacked(\\n this.mintPresale.selector, \\n address(this), \\n block.chainid, \\n to,\\n freeMinting,\\n customFee,\\n maxAmount,\\n soulbound\\n )\\n )\\n ),\\n signature\\n );\\n\\n if (signer != N2M_PRESALE_SIGNER && signer != owner()) revert SignatureMismatch();\\n\\n if (freeMinting) {\\n\\n if (msg.value != 0) revert InvalidMintFeeForFreeMinting();\\n } else {\\n\\n if (customFee == 0) customFee = _mintPrice;\\n _requirePayment(customFee, amount);\\n }\\n\\n if (_mintingType == MintingType.SPECIFY) {\\n\\n if (tokenIds.length != amount) revert InvalidInputSizesDontMatch();\\n _mintSpecify(to, tokenIds, soulbound);\\n } else if (_mintingType == MintingType.RANDOM) {\\n bytes32 seed = keccak256(abi.encodePacked(signature));\\n _soldTokens += uint32(amount);\\n _mintRandom(to, amount, seed, soulbound);\\n } else if (_mintingType == MintingType.SEQUENTIAL) {\\n _mintSequential(to, amount, soulbound);\\n } else {\\n\\n revert PresaleInvalidMintingType();\\n }\\n }\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256) {\\n return _mintPrice;\\n }\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256) {\\n return _soldTokens;\\n }\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view override returns (uint16) {\\n return _maxPerAddress;\\n }\\n\\n /// @notice Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n /// @param salePrice The sale price\\n /// @return receiver the receiver of the royalties.\\n /// @return royaltyAmount the amount of the royalties for the given input.\\n function royaltyInfo(\\n uint256, \\n uint256 salePrice\\n ) external view virtual returns (address receiver, uint256 royaltyAmount) {\\n\\n return (address(this), uint256((salePrice * _royaltyFee) / 100_00));\\n }\\n\\n function _requirePaymentWithAffiliates(uint256 amount, address affiliate)\\n internal\\n {\\n uint16 currentUserDiscount;\\n uint16 currentAffiliatePercentage;\\n if (_affiliatesInfo[affiliate].enabled) {\\n currentUserDiscount = _affiliatesInfo[affiliate].userDiscount;\\n currentAffiliatePercentage = _affiliatesInfo[affiliate].affiliatePercentage;\\n } else {\\n currentUserDiscount = _affiliatesInfo[address(0)].userDiscount;\\n currentAffiliatePercentage = _affiliatesInfo[address(0)].affiliatePercentage;\\n }\\n\\n uint256 discountMintPrice = ((100_00 - currentUserDiscount) * _mintPrice) / 100_00;\\n _requirePayment(discountMintPrice, amount);\\n if (affiliate != address(0)) {\\n uint256 affiliateAmount = (currentAffiliatePercentage * discountMintPrice * amount) / 100_00;\\n _pendingTotalAffiliatesBalance += affiliateAmount;\\n _pendingAffiliateBalance[affiliate] += affiliateAmount;\\n emit AffiliateSell(affiliate);\\n }\\n }\\n\\n function _checkPhase() private {\\n\\n if (_currentPhase != SalePhase.PUBLIC) {\\n if (_currentPhase == SalePhase.DROP_DATE) {\\n if (block.timestamp >= _dropDateTimestamp) {\\n _currentPhase = SalePhase.PUBLIC;\\n delete(_dropDateTimestamp);\\n } else {\\n revert WaitUntilDropDate();\\n }\\n } else if (_currentPhase == SalePhase.DROP_AND_END_DATE) {\\n if (block.timestamp < _dropDateTimestamp) {\\n revert WaitUntilDropDate();\\n }\\n if (block.timestamp >= _endDateTimestamp) {\\n revert SaleFinished();\\n }\\n } else {\\n\\n revert PublicSaleNotOpen();\\n }\\n }\\n }\\n\\n function _requirePayment(uint256 p_mintPrice, uint256 amount) internal {\\n if (_isERC20Payment == false) {\\n\\n if (msg.value != (p_mintPrice * amount)) revert InvalidMintFee();\\n } else {\\n\\n if (p_mintPrice == 0) return;\\n uint256 totalAmount = p_mintPrice * amount;\\n\\n SafeERC20Upgradeable.safeTransferFrom(\\n IERC20Upgradeable(_erc20PaymentAddress),\\n msg.sender,\\n address(this),\\n totalAmount\\n );\\n }\\n }\\n\\n modifier onlyAllowedOperator() {\\n\\n _isOperatorAllowed(msg.sender);\\n _;\\n }\\n\\n modifier onlyAllowedOperatorApproval(address operator) {\\n _isOperatorAllowed(operator);\\n _;\\n } \\n\\n function _isOperatorAllowed(address operator) private {\\n if (_operatorFilterStatus == OperatorFilterStatus.ENABLED_EXISTS) {\\n\\n operatorFilterRegistry.isOperatorAllowed(address(this), operator);\\n\\n } else if (_operatorFilterStatus == OperatorFilterStatus.ENABLED_NOT_INITIALIZED) {\\n\\n if (address(operatorFilterRegistry).code.length > 0) {\\n try operatorFilterRegistry.registerAndSubscribe(address(this), DEFAULT_SUBSCRIPTION) {\\n\\n _operatorFilterStatus = OperatorFilterStatus.ENABLED_EXISTS;\\n operatorFilterRegistry.isOperatorAllowed(address(this), operator);\\n } catch {\\n }\\n }\\n } \\n\\n }\\n\\n fallback() external payable\\n {\\n address libraryAddress = LIBRARY_ADDRESS;\\n\\n assembly {\\n\\n calldatacopy(0, 0, calldatasize())\\n\\n let result := delegatecall(\\n gas(),\\n libraryAddress,\\n 0,\\n calldatasize(),\\n 0,\\n 0\\n )\\n\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n receive() external payable {} \\n}\\n\",\"keccak256\":\"0x09ef4519412ea229a36b4bb34068dabe9e31633840d134197271c5de99e6c3c2\",\"license\":\"UNLICENSED\"},\"contracts/N2MVersion.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts Version\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MVersion is Readme {\\n /// @notice Current version of the nfts2me.com contracts.\\n function n2mVersion() virtual external pure returns (uint256) {\\n return 1000;\\n }\\n\\n}\\n\",\"keccak256\":\"0x2e406a5b00c59cdc4000c829e039e6eb23af09e50e9176dd5a3f68b5a2fb734b\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10280,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_baseURICIDHash","offset":0,"slot":"51","type":"t_bytes32"},{"astId":10282,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_placeholderImageCIDHash","offset":0,"slot":"52","type":"t_bytes32"},{"astId":10284,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_contractURIMetadataCIDHash","offset":0,"slot":"53","type":"t_bytes32"},{"astId":10288,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_pendingAffiliateBalance","offset":0,"slot":"54","type":"t_mapping(t_address,t_uint256)"},{"astId":10290,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_pendingTotalAffiliatesBalance","offset":0,"slot":"55","type":"t_uint256"},{"astId":10294,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_revenueInfo","offset":0,"slot":"56","type":"t_array(t_struct(RevenueAddress)394_storage)dyn_storage"},{"astId":10299,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_affiliatesInfo","offset":0,"slot":"57","type":"t_mapping(t_address,t_struct(AffiliateInformation)401_storage)"},{"astId":10301,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_mintPrice","offset":0,"slot":"58","type":"t_uint256"},{"astId":10303,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_withdrawnAmount","offset":0,"slot":"59","type":"t_uint256"},{"astId":10305,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_reentrancyEntered","offset":0,"slot":"60","type":"t_uint256"},{"astId":10307,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_dropDateTimestamp","offset":0,"slot":"61","type":"t_uint256"},{"astId":10309,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_endDateTimestamp","offset":0,"slot":"62","type":"t_uint256"},{"astId":10313,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_withdrawnERC20Amount","offset":0,"slot":"63","type":"t_mapping(t_address,t_uint256)"},{"astId":10315,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_erc20PaymentAddress","offset":0,"slot":"64","type":"t_address"},{"astId":10320,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_randomTickets","offset":0,"slot":"65","type":"t_mapping(t_address,t_struct(RandomTicket)389_storage)"},{"astId":10324,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_usedAmountSignature","offset":0,"slot":"66","type":"t_mapping(t_bytes_memory_ptr,t_uint256)"},{"astId":10328,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_soulbound","offset":0,"slot":"67","type":"t_mapping(t_uint256,t_bool)"},{"astId":10332,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_customURICIDHashes","offset":0,"slot":"68","type":"t_mapping(t_uint256,t_bytes32)"},{"astId":10334,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_soldTokens","offset":0,"slot":"69","type":"t_uint32"},{"astId":10337,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_currentPhase","offset":4,"slot":"69","type":"t_enum(SalePhase)407"},{"astId":10340,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_operatorFilterStatus","offset":5,"slot":"69","type":"t_enum(OperatorFilterStatus)417"},{"astId":10343,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_mintingType","offset":6,"slot":"69","type":"t_enum(MintingType)412"},{"astId":10345,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_royaltyFee","offset":7,"slot":"69","type":"t_uint16"},{"astId":10347,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_maxPerAddress","offset":9,"slot":"69","type":"t_uint16"},{"astId":10349,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_collectionSize","offset":11,"slot":"69","type":"t_uint32"},{"astId":10351,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_isERC20Payment","offset":15,"slot":"69","type":"t_bool"},{"astId":10353,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"_soulboundCollection","offset":16,"slot":"69","type":"t_bool"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(RevenueAddress)394_storage)dyn_storage":{"base":"t_struct(RevenueAddress)394_storage","encoding":"dynamic_array","label":"struct IN2M_ERCStorage.RevenueAddress[]","numberOfBytes":"32"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_memory_ptr":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_enum(MintingType)412":{"encoding":"inplace","label":"enum IN2M_ERCStorage.MintingType","numberOfBytes":"1"},"t_enum(OperatorFilterStatus)417":{"encoding":"inplace","label":"enum IN2M_ERCStorage.OperatorFilterStatus","numberOfBytes":"1"},"t_enum(SalePhase)407":{"encoding":"inplace","label":"enum IN2M_ERCStorage.SalePhase","numberOfBytes":"1"},"t_mapping(t_address,t_struct(AffiliateInformation)401_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct IN2M_ERCStorage.AffiliateInformation)","numberOfBytes":"32","value":"t_struct(AffiliateInformation)401_storage"},"t_mapping(t_address,t_struct(RandomTicket)389_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct IN2M_ERCStorage.RandomTicket)","numberOfBytes":"32","value":"t_struct(RandomTicket)389_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes_memory_ptr,t_uint256)":{"encoding":"mapping","key":"t_bytes_memory_ptr","label":"mapping(bytes => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_bool)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_uint256,t_bytes32)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_struct(AffiliateInformation)401_storage":{"encoding":"inplace","label":"struct IN2M_ERCStorage.AffiliateInformation","members":[{"astId":396,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"enabled","offset":0,"slot":"0","type":"t_bool"},{"astId":398,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"affiliatePercentage","offset":1,"slot":"0","type":"t_uint16"},{"astId":400,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"userDiscount","offset":3,"slot":"0","type":"t_uint16"}],"numberOfBytes":"32"},"t_struct(RandomTicket)389_storage":{"encoding":"inplace","label":"struct IN2M_ERCStorage.RandomTicket","members":[{"astId":386,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"amount","offset":0,"slot":"0","type":"t_uint256"},{"astId":388,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"blockNumberToReveal","offset":0,"slot":"1","type":"t_uint256"}],"numberOfBytes":"64"},"t_struct(RevenueAddress)394_storage":{"encoding":"inplace","label":"struct IN2M_ERCStorage.RevenueAddress","members":[{"astId":391,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"to","offset":0,"slot":"0","type":"t_address"},{"astId":393,"contract":"contracts/N2MTokenCommon.sol:N2MTokenCommon","label":"percentage","offset":20,"slot":"0","type":"t_uint16"}],"numberOfBytes":"32"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"AddressFiltered(address)":[{"notice":"Operator address is filtered"}],"CantLowerCurrentPercentages()":[{"notice":"Can't lower current percentages"}],"CantRevealYetWaitABitToBeAbleToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets too soon"}],"CantSetBaseURIAndPlaceholderAtTheSameTime()":[{"notice":"Can't set BaseURI and Placeholder at the same time"}],"CollectionSoldOut()":[{"notice":"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"}],"ContractMetadataURIAlreadyFixed()":[{"notice":"Contract MetadataURI already fixed"}],"InputSizeMismatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidAmount()":[{"notice":"Error thrown when the input amount is not valid"}],"InvalidDropDate()":[{"notice":"Invalid drop date"}],"InvalidInputSizesDontMatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidMintFee()":[{"notice":"Error thrown when the sent amount is not valid"}],"InvalidMintFeeForFreeMinting()":[{"notice":"Error thrown when sending funds to a free minting"}],"InvalidMintingType()":[{"notice":"Invalid collection minting type for the current minting function"}],"InvalidPercentageOrDiscountValues()":[{"notice":"Invalid percentage or discount values"}],"InvalidPhaseWithoutDate()":[{"notice":"Invalid phase can't be set without giving a date, use the proper functions"}],"InvalidRevenuePercentage()":[{"notice":"The input revenue percentages are not valid"}],"InvalidTokenId()":[{"notice":"Error thrown when trying to mint a token with a given invalid id"}],"MaxPerAddressExceeded()":[{"notice":"The address exceeded the max per address amount"}],"MetadataAlreadyFixed()":[{"notice":"Metadata is already fixed. Can't change metadata once fixed"}],"NewBaseURICantBeEmpty()":[{"notice":"New BaseURI can't be empty"}],"NewPlaceholderCantBeEmpty()":[{"notice":"New Placeholder can't be empty"}],"NoBaseURINorPlaceholderSet()":[{"notice":"No BaseURI nor Placeholder set"}],"NonTransferrableSoulboundNFT()":[{"notice":"Can't transfer a Soulbound Token (SBT)"}],"NotEnoughAmountToMint()":[{"notice":"Error thrown when trying to mint more than the allowance to mint"}],"NothingToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets with no amount to redeem"}],"OnlyAffiliateOrN2M()":[{"notice":"Only the given affiliate or N2M can call this function"}],"OnlyOwnerOrN2M()":[{"notice":"Only owner of N2M can call this function"}],"PresaleInvalidMintingType()":[{"notice":"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"}],"PresaleNotOpen()":[{"notice":"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"}],"PublicSaleNotOpen()":[{"notice":"Error thrown when trying to mint and the collection current phase is not `open`"}],"ReentrancyGuard()":[{"notice":"Reentrancy Guard protection"}],"RoyaltyFeeTooHigh()":[{"notice":"Royalty fee can't be higher than 10%"}],"SaleFinished()":[{"notice":"Error thrown when trying to mint but the sale has already finished"}],"SignatureExpired()":[{"notice":"The signature has expired"}],"SignatureMismatch()":[{"notice":"The given signature doesn't match the input values"}],"TokenAlreadyMinted()":[{"notice":"Error thrown when trying to mint a token with a given id which is already minted"}],"TotalSupplyMustBeGreaterThanZero()":[{"notice":"Invalid input. Total supply must be greater than zero"}],"WaitUntilDropDate()":[{"notice":"Can't mint until specified drop date"}]},"events":{"AffiliateSell(address)":{"notice":"This event is emitted when a token is minted using an affiliate"}},"kind":"user","methods":{"airdropRandom(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`."},"airdropSequential(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`."},"airdropSpecify(address[],uint256[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`."},"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":{"notice":"To be called to create the collection. Can only be called once."},"isMetadataFixed()":{"notice":"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."},"maxPerAddress()":{"notice":"Max amount of NFTs to be hold per address."},"mint()":{"notice":"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256)":{"notice":"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256,address)":{"notice":"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintCustomURITo(address,bytes32,bool)":{"notice":"Mints one NFT to `to` address. Requires `minting type` to be `customURI`."},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"notice":"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale."},"mintPrice()":{"notice":"Returns the minting price of one NFT."},"mintRandomTo(address,uint256)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintRandomTo(address,uint256,address)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintSpecifyTo(address,uint256[])":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintSpecifyTo(address,uint256[],address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256)":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256,address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"n2mVersion()":{"notice":"Current version of the nfts2me.com contracts."},"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"owner()":{"notice":"Returns the address of the current collection owner."},"redeemRandom()":{"notice":"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs."},"royaltyInfo(uint256,uint256)":{"notice":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"},"tokenURI(uint256)":{"notice":"A distinct Uniform Resource Identifier (URI) for a given asset."},"totalSupply()":{"notice":"Returns the current total supply."}},"notice":"Read our terms of service","version":1}}},"contracts/N2MVersion.sol":{"N2MVersion":{"abi":[{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"devdoc":{"author":"The NFTs2Me Team","custom:security-contact":"security@nfts2me.com","custom:terms-of-service":"https://nfts2me.com/terms-of-service/","custom:website":"https://nfts2me.com/","kind":"dev","methods":{},"title":"NFTs2Me.com Smart Contracts Version","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"n2mVersion()":"cb93c48f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The NFTs2Me Team\",\"custom:security-contact\":\"security@nfts2me.com\",\"custom:terms-of-service\":\"https://nfts2me.com/terms-of-service/\",\"custom:website\":\"https://nfts2me.com/\",\"kind\":\"dev\",\"methods\":{},\"title\":\"NFTs2Me.com Smart Contracts Version\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"n2mVersion()\":{\"notice\":\"Current version of the nfts2me.com contracts.\"}},\"notice\":\"Read our terms of service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/N2MVersion.sol\":\"N2MVersion\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"contracts/N2MVersion.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts Version\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MVersion is Readme {\\n /// @notice Current version of the nfts2me.com contracts.\\n function n2mVersion() virtual external pure returns (uint256) {\\n return 1000;\\n }\\n\\n}\\n\",\"keccak256\":\"0x2e406a5b00c59cdc4000c829e039e6eb23af09e50e9176dd5a3f68b5a2fb734b\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"n2mVersion()":{"notice":"Current version of the nfts2me.com contracts."}},"notice":"Read our terms of service","version":1}}},"contracts/TextUtils.sol":{"TextUtils":{"abi":[],"devdoc":{"author":"The NFTs2Me Team","custom:security-contact":"security@nfts2me.com","custom:terms-of-service":"https://nfts2me.com/terms-of-service/","custom:website":"https://nfts2me.com/","kind":"dev","methods":{},"title":"NFTs2Me.com TextUtils Library","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122017b03a2a6bfd75bde8f14e98c7ebe98d1906ee8000096f6e5211381a31bf883b64736f6c63430008130033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR 0xB0 GASPRICE 0x2A PUSH12 0xFD75BDE8F14E98C7EBE98D19 MOD 0xEE DUP1 STOP MULMOD PUSH16 0x6E5211381A31BF883B64736F6C634300 ADDMOD SGT STOP CALLER ","sourceMap":"5303:2861:49:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea264697066735822122017b03a2a6bfd75bde8f14e98c7ebe98d1906ee8000096f6e5211381a31bf883b64736f6c63430008130033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR 0xB0 GASPRICE 0x2A PUSH12 0xFD75BDE8F14E98C7EBE98D19 MOD 0xEE DUP1 STOP MULMOD PUSH16 0x6E5211381A31BF883B64736F6C634300 ADDMOD SGT STOP CALLER ","sourceMap":"5303:2861:49:-:0;;"},"gasEstimates":{"creation":{"codeDepositCost":"11600","executionCost":"infinite","totalCost":"infinite"},"internal":{"base64Encode(bytes memory)":"infinite","escapeQuotesAndBackslash(string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"The NFTs2Me Team\",\"custom:security-contact\":\"security@nfts2me.com\",\"custom:terms-of-service\":\"https://nfts2me.com/terms-of-service/\",\"custom:website\":\"https://nfts2me.com/\",\"kind\":\"dev\",\"methods\":{},\"title\":\"NFTs2Me.com TextUtils Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Read our terms of service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TextUtils.sol\":\"TextUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/TextUtils.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\nbytes constant BASE64_TABLE = \\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\\\";\\n\\n/// @title NFTs2Me.com TextUtils Library\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nlibrary TextUtils {\\n\\n /// @notice Encodes some bytes to the base64 representation\\n function base64Encode(bytes memory data)\\n internal\\n pure\\n returns (string memory)\\n {\\n uint256 len = data.length;\\n if (len == 0) return \\\"\\\";\\n\\n uint256 encodedLen = 4 * ((len + 2) / 3);\\n\\n bytes memory result = new bytes(encodedLen + 32);\\n\\n bytes memory table = BASE64_TABLE;\\n\\n assembly {\\n let tablePtr := add(table, 1)\\n let resultPtr := add(result, 32)\\n\\n for {\\n let i := 0\\n } lt(i, len) {\\n\\n } {\\n i := add(i, 3)\\n let input := and(mload(add(data, i)), 0xffffff)\\n\\n let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))\\n out := shl(8, out)\\n out := add(\\n out,\\n and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF)\\n )\\n out := shl(8, out)\\n out := add(\\n out,\\n and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF)\\n )\\n out := shl(8, out)\\n out := add(\\n out,\\n and(mload(add(tablePtr, and(input, 0x3F))), 0xFF)\\n )\\n out := shl(224, out)\\n\\n mstore(resultPtr, out)\\n\\n resultPtr := add(resultPtr, 4)\\n }\\n\\n switch mod(len, 3)\\n case 1 {\\n mstore(sub(resultPtr, 2), shl(240, 0x3d3d))\\n }\\n case 2 {\\n mstore(sub(resultPtr, 1), shl(248, 0x3d))\\n }\\n\\n mstore(result, encodedLen)\\n }\\n\\n return string(result);\\n }\\n\\n function escapeQuotesAndBackslash(string memory symbol)\\n internal\\n pure\\n returns (string memory)\\n {\\n bytes memory symbolBytes = bytes(symbol);\\n uint8 quotesCount;\\n for (uint8 i; i < symbolBytes.length; ) {\\n if (symbolBytes[i] == '\\\"' || symbolBytes[i] == \\\"\\\\\\\\\\\") {\\n unchecked {\\n ++quotesCount;\\n }\\n }\\n unchecked {\\n ++i;\\n }\\n }\\n if (quotesCount > 0) {\\n bytes memory escapedBytes = new bytes(\\n symbolBytes.length + (quotesCount)\\n );\\n uint256 index;\\n for (uint8 i; i < symbolBytes.length; ) {\\n if (symbolBytes[i] == '\\\"' || symbolBytes[i] == \\\"\\\\\\\\\\\") {\\n escapedBytes[index++] = \\\"\\\\\\\\\\\";\\n }\\n escapedBytes[index++] = symbolBytes[i];\\n unchecked {\\n ++i;\\n }\\n }\\n return string(escapedBytes);\\n }\\n return symbol;\\n } \\n}\",\"keccak256\":\"0x1ae5e4377f228c2fc1320c40a194b5ee2ce0c55955beb6d2cc3c45622c72f236\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"Read our terms of service","version":1}}},"contracts/beacon/N2MERC1155Upgradeable.sol":{"N2MERC1155Upgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"factoryAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"n2mVersions","outputs":[{"internalType":"uint256","name":"implementationVersion","type":"uint256"},{"internalType":"uint256","name":"beaconVersion","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a03461006a57601f61035838819003918201601f19168301916001600160401b0383118484101761006f5780849260209460405283398101031261006a57516001600160a01b038116810361006a576080526040516102d2908161008682396080518161012a0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040526004361015610018575b366100e5576100e5565b6000803560e01c63db198ff01461002f575061000e565b346100d657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d6577fcb93c48f0000000000000000000000000000000000000000000000000000000060805260206080600481305afa80156100e05781906100ae575b604080519182526103e8602083015290f35b0390f35b5060203d81116100d9575b806100c560209261021f565b126100d657506100aa608051610098565b80fd5b503d6100b9565b610290565b6040517f9ccaabf600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90602081600481857f0000000000000000000000000000000000000000000000000000000000000000165afa9081156100e057600091610161575b50610200565b60203d81116101f9575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116820182811067ffffffffffffffff8211176101cc576020918391604052810103126101c8575191821682036100d65750803861015b565b5080fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b503d61016b565b6000808092368280378136915af43d82803e1561021b573d90f35b3d90fd5b601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09101166080016080811067ffffffffffffffff82111761026157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040513d6000823e3d90fdfea2646970667358221220f69ab4a029c83fb8070807bade1f714efd5633e2e2534971b308ce1da1238cfc64736f6c63430008130033","opcodes":"PUSH1 0xA0 CALLVALUE PUSH2 0x6A JUMPI PUSH1 0x1F PUSH2 0x358 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0x6F JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x6A JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x6A JUMPI PUSH1 0x80 MSTORE PUSH1 0x40 MLOAD PUSH2 0x2D2 SWAP1 DUP2 PUSH2 0x86 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x12A ADD MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x18 JUMPI JUMPDEST CALLDATASIZE PUSH2 0xE5 JUMPI PUSH2 0xE5 JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0xDB198FF0 EQ PUSH2 0x2F JUMPI POP PUSH2 0xE JUMP JUMPDEST CALLVALUE PUSH2 0xD6 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD6 JUMPI PUSH32 0xCB93C48F00000000000000000000000000000000000000000000000000000000 PUSH1 0x80 MSTORE PUSH1 0x20 PUSH1 0x80 PUSH1 0x4 DUP2 ADDRESS GAS STATICCALL DUP1 ISZERO PUSH2 0xE0 JUMPI DUP2 SWAP1 PUSH2 0xAE JUMPI JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH2 0x3E8 PUSH1 0x20 DUP4 ADD MSTORE SWAP1 RETURN JUMPDEST SUB SWAP1 RETURN JUMPDEST POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xD9 JUMPI JUMPDEST DUP1 PUSH2 0xC5 PUSH1 0x20 SWAP3 PUSH2 0x21F JUMP JUMPDEST SLT PUSH2 0xD6 JUMPI POP PUSH2 0xAA PUSH1 0x80 MLOAD PUSH2 0x98 JUMP JUMPDEST DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0xB9 JUMP JUMPDEST PUSH2 0x290 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x9CCAABF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP6 PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 SWAP2 PUSH2 0x161 JUMPI JUMPDEST POP PUSH2 0x200 JUMP JUMPDEST PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F9 JUMPI JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CC JUMPI PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x40 MSTORE DUP2 ADD SUB SLT PUSH2 0x1C8 JUMPI MLOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0xD6 JUMPI POP DUP1 CODESIZE PUSH2 0x15B JUMP JUMPDEST POP DUP1 REVERT JUMPDEST PUSH1 0x24 DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x16B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 SWAP3 CALLDATASIZE DUP3 DUP1 CALLDATACOPY DUP2 CALLDATASIZE SWAP2 GAS DELEGATECALL RETURNDATASIZE DUP3 DUP1 RETURNDATACOPY ISZERO PUSH2 0x21B JUMPI RETURNDATASIZE SWAP1 RETURN JUMPDEST RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND PUSH1 0x80 ADD PUSH1 0x80 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x261 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 SWAP11 0xB4 LOG0 0x29 0xC8 EXTCODEHASH 0xB8 SMOD ADDMOD SMOD 0xBA 0xDE 0x1F PUSH18 0x4EFD5633E2E2534971B308CE1DA1238CFC64 PUSH20 0x6F6C634300081300330000000000000000000000 ","sourceMap":"4886:285:50:-:0;;;;;;;;;;;;;-1:-1:-1;;4886:285:50;;;;-1:-1:-1;;;;;4886:285:50;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4886:285:50;;;;;;5189:32:52;;4886:285:50;;;;;;;;5189:32:52;4886:285:50;;;;;;;-1:-1:-1;4886:285:50;;;;;;-1:-1:-1;4886:285:50;;;;;-1:-1:-1;4886:285:50"},"deployedBytecode":{"functionDebugData":{"abi_encode_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":543,"id":null,"parameterSlots":1,"returnSlots":0},"fun_delegate":{"entryPoint":512,"id":9800,"parameterSlots":1,"returnSlots":0},"fun_fallback":{"entryPoint":229,"id":9819,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":656,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"13874":[{"length":32,"start":298}]},"linkReferences":{},"object":"60806040526004361015610018575b366100e5576100e5565b6000803560e01c63db198ff01461002f575061000e565b346100d657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d6577fcb93c48f0000000000000000000000000000000000000000000000000000000060805260206080600481305afa80156100e05781906100ae575b604080519182526103e8602083015290f35b0390f35b5060203d81116100d9575b806100c560209261021f565b126100d657506100aa608051610098565b80fd5b503d6100b9565b610290565b6040517f9ccaabf600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90602081600481857f0000000000000000000000000000000000000000000000000000000000000000165afa9081156100e057600091610161575b50610200565b60203d81116101f9575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116820182811067ffffffffffffffff8211176101cc576020918391604052810103126101c8575191821682036100d65750803861015b565b5080fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b503d61016b565b6000808092368280378136915af43d82803e1561021b573d90f35b3d90fd5b601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09101166080016080811067ffffffffffffffff82111761026157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040513d6000823e3d90fdfea2646970667358221220f69ab4a029c83fb8070807bade1f714efd5633e2e2534971b308ce1da1238cfc64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x18 JUMPI JUMPDEST CALLDATASIZE PUSH2 0xE5 JUMPI PUSH2 0xE5 JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0xDB198FF0 EQ PUSH2 0x2F JUMPI POP PUSH2 0xE JUMP JUMPDEST CALLVALUE PUSH2 0xD6 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD6 JUMPI PUSH32 0xCB93C48F00000000000000000000000000000000000000000000000000000000 PUSH1 0x80 MSTORE PUSH1 0x20 PUSH1 0x80 PUSH1 0x4 DUP2 ADDRESS GAS STATICCALL DUP1 ISZERO PUSH2 0xE0 JUMPI DUP2 SWAP1 PUSH2 0xAE JUMPI JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH2 0x3E8 PUSH1 0x20 DUP4 ADD MSTORE SWAP1 RETURN JUMPDEST SUB SWAP1 RETURN JUMPDEST POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xD9 JUMPI JUMPDEST DUP1 PUSH2 0xC5 PUSH1 0x20 SWAP3 PUSH2 0x21F JUMP JUMPDEST SLT PUSH2 0xD6 JUMPI POP PUSH2 0xAA PUSH1 0x80 MLOAD PUSH2 0x98 JUMP JUMPDEST DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0xB9 JUMP JUMPDEST PUSH2 0x290 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x9CCAABF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP6 PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 SWAP2 PUSH2 0x161 JUMPI JUMPDEST POP PUSH2 0x200 JUMP JUMPDEST PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F9 JUMPI JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CC JUMPI PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x40 MSTORE DUP2 ADD SUB SLT PUSH2 0x1C8 JUMPI MLOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0xD6 JUMPI POP DUP1 CODESIZE PUSH2 0x15B JUMP JUMPDEST POP DUP1 REVERT JUMPDEST PUSH1 0x24 DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x16B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 SWAP3 CALLDATASIZE DUP3 DUP1 CALLDATACOPY DUP2 CALLDATASIZE SWAP2 GAS DELEGATECALL RETURNDATASIZE DUP3 DUP1 RETURNDATACOPY ISZERO PUSH2 0x21B JUMPI RETURNDATASIZE SWAP1 RETURN JUMPDEST RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND PUSH1 0x80 ADD PUSH1 0x80 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x261 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 SWAP11 0xB4 LOG0 0x29 0xC8 EXTCODEHASH 0xB8 SMOD ADDMOD SMOD 0xBA 0xDE 0x1F PUSH18 0x4EFD5633E2E2534971B308CE1DA1238CFC64 PUSH20 0x6F6C634300081300330000000000000000000000 ","sourceMap":"4886:285:50:-:0;;;;;;;;;-1:-1:-1;4886:285:50;2629:64:37;4886:285:50;2629:64:37;:::i;4886:285:50:-;;;;;;;;;;;;;;;;;;;;;;;;;;5368:38:52;;4886:285:50;;5387:4:52;;5368:38;;;;;;;;;;4886:285:50;;;;;;;5432:4:52;4886:285:50;;;;;;;;;;5368:38:52;;;;;;;;;;;;;;:::i;:::-;4886:285:50;;;;;;;5368:38:52;;4886:285:50;;;5368:38:52;-1:-1:-1;5368:38:52;;;;;:::i;2322:110:37:-;4886:285:50;;;5101:61;;4886:285;5119:15;5101:61;5119:15;5101:61;5119:15;;;4886:285;5101:61;;;;;;;-1:-1:-1;5101:61:50;;;2322:110:37;2407:17;;:::i;5101:61:50:-;;;;;;;;4886:285;;;;;;;;;;;;;;;;5101:61;4886:285;;;;;5101:61;;4886:285;;;;;;;;;;;;5101:61;;;;;4886:285;;;;;;;;;;;5101:61;4886:285;;5101:61;;;;;948:895:37;1018:819;;;;;;;;;;;;;;;;;;;;;;;;;;;4886:285:50;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"144400","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite","n2mVersions()":"infinite"},"internal":{"_implementation()":"infinite"}},"methodIdentifiers":{"n2mVersions()":"db198ff0"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factoryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"n2mVersions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"implementationVersion\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"beaconVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/beacon/N2MERC1155Upgradeable.sol\":\"N2MERC1155Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IN2MBeaconFactory {\\n function getERC721Implementation() external view returns (address);\\n function getERC1155Implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x2025b2e89d5b2ccdfc3b3d0162fb2241d2fa0e95eb4b5ef6abcaaa4f3c7fe71e\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"contracts/N2MVersion.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts Version\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MVersion is Readme {\\n /// @notice Current version of the nfts2me.com contracts.\\n function n2mVersion() virtual external pure returns (uint256) {\\n return 1000;\\n }\\n\\n}\\n\",\"keccak256\":\"0x2e406a5b00c59cdc4000c829e039e6eb23af09e50e9176dd5a3f68b5a2fb734b\",\"license\":\"UNLICENSED\"},\"contracts/beacon/N2MERC1155Upgradeable.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * ----------------------------------------------------------------------------- */\\n\\n// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"./N2MUpgradeable.sol\\\";\\n\\ncontract N2MERC1155Upgradeable is N2MUpgradeable {\\n constructor(address factoryAddress) N2MUpgradeable(factoryAddress) {}\\n\\n function _implementation() internal view override returns (address) {\\n return IN2MBeaconFactory(FACTORY_ADDRESS).getERC1155Implementation();\\n }\\n}\\n\",\"keccak256\":\"0x661476457c3951edc5d6e096b924296d88f3e78ad982ecb00c158c2f3fb5003f\",\"license\":\"UNLICENSED\"},\"contracts/beacon/N2MUpgradeable.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\nimport \\\"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol\\\";\\nimport \\\"@openzeppelin/contracts/proxy/Proxy.sol\\\";\\nimport \\\"../N2MVersion.sol\\\";\\n\\nabstract contract N2MUpgradeable is Proxy {\\n address internal immutable FACTORY_ADDRESS;\\n\\n constructor(address factoryAddress) {\\n FACTORY_ADDRESS = factoryAddress;\\n }\\n\\n function n2mVersions() external view returns (uint256 implementationVersion, uint256 beaconVersion) {\\n implementationVersion = N2MVersion(address(this)).n2mVersion();\\n beaconVersion = 1000;\\n }\\n}\\n\",\"keccak256\":\"0xd2cd05efbd09637969f833eaf7768de8d4952438a7b1dbf5a91c3adee70cbf4a\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/beacon/N2MERC721Upgradeable.sol":{"N2MERC721Upgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"factoryAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"n2mVersions","outputs":[{"internalType":"uint256","name":"implementationVersion","type":"uint256"},{"internalType":"uint256","name":"beaconVersion","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a03461006a57601f61035838819003918201601f19168301916001600160401b0383118484101761006f5780849260209460405283398101031261006a57516001600160a01b038116810361006a576080526040516102d2908161008682396080518161012a0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040526004361015610018575b366100e5576100e5565b6000803560e01c63db198ff01461002f575061000e565b346100d657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d6577fcb93c48f0000000000000000000000000000000000000000000000000000000060805260206080600481305afa80156100e05781906100ae575b604080519182526103e8602083015290f35b0390f35b5060203d81116100d9575b806100c560209261021f565b126100d657506100aa608051610098565b80fd5b503d6100b9565b610290565b6040517f84663e5300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90602081600481857f0000000000000000000000000000000000000000000000000000000000000000165afa9081156100e057600091610161575b50610200565b60203d81116101f9575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116820182811067ffffffffffffffff8211176101cc576020918391604052810103126101c8575191821682036100d65750803861015b565b5080fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b503d61016b565b6000808092368280378136915af43d82803e1561021b573d90f35b3d90fd5b601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09101166080016080811067ffffffffffffffff82111761026157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040513d6000823e3d90fdfea26469706673582212202b4a394012bc550dd5cd7c04e028f85e4cab0c58934d3ca634581a5160cb160f64736f6c63430008130033","opcodes":"PUSH1 0xA0 CALLVALUE PUSH2 0x6A JUMPI PUSH1 0x1F PUSH2 0x358 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0x6F JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x6A JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x6A JUMPI PUSH1 0x80 MSTORE PUSH1 0x40 MLOAD PUSH2 0x2D2 SWAP1 DUP2 PUSH2 0x86 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x12A ADD MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x18 JUMPI JUMPDEST CALLDATASIZE PUSH2 0xE5 JUMPI PUSH2 0xE5 JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0xDB198FF0 EQ PUSH2 0x2F JUMPI POP PUSH2 0xE JUMP JUMPDEST CALLVALUE PUSH2 0xD6 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD6 JUMPI PUSH32 0xCB93C48F00000000000000000000000000000000000000000000000000000000 PUSH1 0x80 MSTORE PUSH1 0x20 PUSH1 0x80 PUSH1 0x4 DUP2 ADDRESS GAS STATICCALL DUP1 ISZERO PUSH2 0xE0 JUMPI DUP2 SWAP1 PUSH2 0xAE JUMPI JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH2 0x3E8 PUSH1 0x20 DUP4 ADD MSTORE SWAP1 RETURN JUMPDEST SUB SWAP1 RETURN JUMPDEST POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xD9 JUMPI JUMPDEST DUP1 PUSH2 0xC5 PUSH1 0x20 SWAP3 PUSH2 0x21F JUMP JUMPDEST SLT PUSH2 0xD6 JUMPI POP PUSH2 0xAA PUSH1 0x80 MLOAD PUSH2 0x98 JUMP JUMPDEST DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0xB9 JUMP JUMPDEST PUSH2 0x290 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x84663E5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP6 PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 SWAP2 PUSH2 0x161 JUMPI JUMPDEST POP PUSH2 0x200 JUMP JUMPDEST PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F9 JUMPI JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CC JUMPI PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x40 MSTORE DUP2 ADD SUB SLT PUSH2 0x1C8 JUMPI MLOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0xD6 JUMPI POP DUP1 CODESIZE PUSH2 0x15B JUMP JUMPDEST POP DUP1 REVERT JUMPDEST PUSH1 0x24 DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x16B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 SWAP3 CALLDATASIZE DUP3 DUP1 CALLDATACOPY DUP2 CALLDATASIZE SWAP2 GAS DELEGATECALL RETURNDATASIZE DUP3 DUP1 RETURNDATACOPY ISZERO PUSH2 0x21B JUMPI RETURNDATASIZE SWAP1 RETURN JUMPDEST RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND PUSH1 0x80 ADD PUSH1 0x80 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x261 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2B 0x4A CODECOPY BLOCKHASH SLT 0xBC SSTORE 0xD 0xD5 0xCD PUSH29 0x4E028F85E4CAB0C58934D3CA634581A5160CB160F64736F6C63430008 SGT STOP CALLER ","sourceMap":"4887:283:51:-:0;;;;;;;;;;;;;-1:-1:-1;;4887:283:51;;;;-1:-1:-1;;;;;4887:283:51;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4887:283:51;;;;;;5189:32:52;;4887:283:51;;;;;;;;5189:32:52;4887:283:51;;;;;;;-1:-1:-1;4887:283:51;;;;;;-1:-1:-1;4887:283:51;;;;;-1:-1:-1;4887:283:51"},"deployedBytecode":{"functionDebugData":{"abi_encode_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":543,"id":null,"parameterSlots":1,"returnSlots":0},"fun_delegate":{"entryPoint":512,"id":9800,"parameterSlots":1,"returnSlots":0},"fun_fallback":{"entryPoint":229,"id":9819,"parameterSlots":0,"returnSlots":0},"revert_forward":{"entryPoint":656,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"13874":[{"length":32,"start":298}]},"linkReferences":{},"object":"60806040526004361015610018575b366100e5576100e5565b6000803560e01c63db198ff01461002f575061000e565b346100d657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d6577fcb93c48f0000000000000000000000000000000000000000000000000000000060805260206080600481305afa80156100e05781906100ae575b604080519182526103e8602083015290f35b0390f35b5060203d81116100d9575b806100c560209261021f565b126100d657506100aa608051610098565b80fd5b503d6100b9565b610290565b6040517f84663e5300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90602081600481857f0000000000000000000000000000000000000000000000000000000000000000165afa9081156100e057600091610161575b50610200565b60203d81116101f9575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116820182811067ffffffffffffffff8211176101cc576020918391604052810103126101c8575191821682036100d65750803861015b565b5080fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b503d61016b565b6000808092368280378136915af43d82803e1561021b573d90f35b3d90fd5b601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09101166080016080811067ffffffffffffffff82111761026157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040513d6000823e3d90fdfea26469706673582212202b4a394012bc550dd5cd7c04e028f85e4cab0c58934d3ca634581a5160cb160f64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x18 JUMPI JUMPDEST CALLDATASIZE PUSH2 0xE5 JUMPI PUSH2 0xE5 JUMP JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0xDB198FF0 EQ PUSH2 0x2F JUMPI POP PUSH2 0xE JUMP JUMPDEST CALLVALUE PUSH2 0xD6 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD6 JUMPI PUSH32 0xCB93C48F00000000000000000000000000000000000000000000000000000000 PUSH1 0x80 MSTORE PUSH1 0x20 PUSH1 0x80 PUSH1 0x4 DUP2 ADDRESS GAS STATICCALL DUP1 ISZERO PUSH2 0xE0 JUMPI DUP2 SWAP1 PUSH2 0xAE JUMPI JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH2 0x3E8 PUSH1 0x20 DUP4 ADD MSTORE SWAP1 RETURN JUMPDEST SUB SWAP1 RETURN JUMPDEST POP PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0xD9 JUMPI JUMPDEST DUP1 PUSH2 0xC5 PUSH1 0x20 SWAP3 PUSH2 0x21F JUMP JUMPDEST SLT PUSH2 0xD6 JUMPI POP PUSH2 0xAA PUSH1 0x80 MLOAD PUSH2 0x98 JUMP JUMPDEST DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0xB9 JUMP JUMPDEST PUSH2 0x290 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x84663E5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP6 PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 SWAP2 PUSH2 0x161 JUMPI JUMPDEST POP PUSH2 0x200 JUMP JUMPDEST PUSH1 0x20 RETURNDATASIZE DUP2 GT PUSH2 0x1F9 JUMPI JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CC JUMPI PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x40 MSTORE DUP2 ADD SUB SLT PUSH2 0x1C8 JUMPI MLOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0xD6 JUMPI POP DUP1 CODESIZE PUSH2 0x15B JUMP JUMPDEST POP DUP1 REVERT JUMPDEST PUSH1 0x24 DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x16B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 SWAP3 CALLDATASIZE DUP3 DUP1 CALLDATACOPY DUP2 CALLDATASIZE SWAP2 GAS DELEGATECALL RETURNDATASIZE DUP3 DUP1 RETURNDATACOPY ISZERO PUSH2 0x21B JUMPI RETURNDATASIZE SWAP1 RETURN JUMPDEST RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND PUSH1 0x80 ADD PUSH1 0x80 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x261 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2B 0x4A CODECOPY BLOCKHASH SLT 0xBC SSTORE 0xD 0xD5 0xCD PUSH29 0x4E028F85E4CAB0C58934D3CA634581A5160CB160F64736F6C63430008 SGT STOP CALLER ","sourceMap":"4887:283:51:-:0;;;;;;;;;-1:-1:-1;4887:283:51;2629:64:37;4887:283:51;2629:64:37;:::i;4887:283:51:-;;;;;;;;;;;;;;;;;;;;;;;;;;5368:38:52;;4887:283:51;;5387:4:52;;5368:38;;;;;;;;;;4887:283:51;;;;;;;5432:4:52;4887:283:51;;;;;;;;;;5368:38:52;;;;;;;;;;;;;;:::i;:::-;4887:283:51;;;;;;;5368:38:52;;4887:283:51;;;5368:38:52;-1:-1:-1;5368:38:52;;;;;:::i;2322:110:37:-;4887:283:51;;;5101:60;;4887:283;5119:15;5101:60;5119:15;5101:60;5119:15;;;4887:283;5101:60;;;;;;;-1:-1:-1;5101:60:51;;;2322:110:37;2407:17;;:::i;5101:60:51:-;;;;;;;;4887:283;;;;;;;;;;;;;;;;5101:60;4887:283;;;;;5101:60;;4887:283;;;;;;;;;;;;5101:60;;;;;4887:283;;;;;;;;;;;5101:60;4887:283;;5101:60;;;;;948:895:37;1018:819;;;;;;;;;;;;;;;;;;;;;;;;;;;4887:283:51;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"144400","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite","n2mVersions()":"infinite"},"internal":{"_implementation()":"infinite"}},"methodIdentifiers":{"n2mVersions()":"db198ff0"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factoryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"n2mVersions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"implementationVersion\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"beaconVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/beacon/N2MERC721Upgradeable.sol\":\"N2MERC721Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IN2MBeaconFactory {\\n function getERC721Implementation() external view returns (address);\\n function getERC1155Implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x2025b2e89d5b2ccdfc3b3d0162fb2241d2fa0e95eb4b5ef6abcaaa4f3c7fe71e\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"contracts/N2MVersion.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts Version\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MVersion is Readme {\\n /// @notice Current version of the nfts2me.com contracts.\\n function n2mVersion() virtual external pure returns (uint256) {\\n return 1000;\\n }\\n\\n}\\n\",\"keccak256\":\"0x2e406a5b00c59cdc4000c829e039e6eb23af09e50e9176dd5a3f68b5a2fb734b\",\"license\":\"UNLICENSED\"},\"contracts/beacon/N2MERC721Upgradeable.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"./N2MUpgradeable.sol\\\";\\n\\ncontract N2MERC721Upgradeable is N2MUpgradeable {\\n constructor(address factoryAddress) N2MUpgradeable(factoryAddress) {}\\n\\n function _implementation() internal view override returns (address) {\\n return IN2MBeaconFactory(FACTORY_ADDRESS).getERC721Implementation();\\n }\\n}\\n\",\"keccak256\":\"0xc9b195d6dea45b47885c073ba261f032256c43558f15fbca891e130e668398b9\",\"license\":\"UNLICENSED\"},\"contracts/beacon/N2MUpgradeable.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\nimport \\\"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol\\\";\\nimport \\\"@openzeppelin/contracts/proxy/Proxy.sol\\\";\\nimport \\\"../N2MVersion.sol\\\";\\n\\nabstract contract N2MUpgradeable is Proxy {\\n address internal immutable FACTORY_ADDRESS;\\n\\n constructor(address factoryAddress) {\\n FACTORY_ADDRESS = factoryAddress;\\n }\\n\\n function n2mVersions() external view returns (uint256 implementationVersion, uint256 beaconVersion) {\\n implementationVersion = N2MVersion(address(this)).n2mVersion();\\n beaconVersion = 1000;\\n }\\n}\\n\",\"keccak256\":\"0xd2cd05efbd09637969f833eaf7768de8d4952438a7b1dbf5a91c3adee70cbf4a\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/beacon/N2MUpgradeable.sol":{"N2MUpgradeable":{"abi":[{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"n2mVersions","outputs":[{"internalType":"uint256","name":"implementationVersion","type":"uint256"},{"internalType":"uint256","name":"beaconVersion","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"n2mVersions()":"db198ff0"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"n2mVersions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"implementationVersion\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"beaconVersion\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/beacon/N2MUpgradeable.sol\":\"N2MUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\ninterface IN2MBeaconFactory {\\n function getERC721Implementation() external view returns (address);\\n function getERC1155Implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x2025b2e89d5b2ccdfc3b3d0162fb2241d2fa0e95eb4b5ef6abcaaa4f3c7fe71e\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"contracts/N2MVersion.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts Version\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract N2MVersion is Readme {\\n /// @notice Current version of the nfts2me.com contracts.\\n function n2mVersion() virtual external pure returns (uint256) {\\n return 1000;\\n }\\n\\n}\\n\",\"keccak256\":\"0x2e406a5b00c59cdc4000c829e039e6eb23af09e50e9176dd5a3f68b5a2fb734b\",\"license\":\"UNLICENSED\"},\"contracts/beacon/N2MUpgradeable.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\nimport \\\"@nfts2me/contracts/interfaces/IN2MBeaconFactory.sol\\\";\\nimport \\\"@openzeppelin/contracts/proxy/Proxy.sol\\\";\\nimport \\\"../N2MVersion.sol\\\";\\n\\nabstract contract N2MUpgradeable is Proxy {\\n address internal immutable FACTORY_ADDRESS;\\n\\n constructor(address factoryAddress) {\\n FACTORY_ADDRESS = factoryAddress;\\n }\\n\\n function n2mVersions() external view returns (uint256 implementationVersion, uint256 beaconVersion) {\\n implementationVersion = N2MVersion(address(this)).n2mVersion();\\n beaconVersion = 1000;\\n }\\n}\\n\",\"keccak256\":\"0xd2cd05efbd09637969f833eaf7768de8d4952438a7b1dbf5a91c3adee70cbf4a\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IN2MBeaconFactory.sol":{"IN2MUpgradeable":{"abi":[{"inputs":[],"name":"getERC1155Implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getERC721Implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getERC1155Implementation()":"9ccaabf6","getERC721Implementation()":"84663e53"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getERC1155Implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC721Implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IN2MBeaconFactory.sol\":\"IN2MUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IN2MBeaconFactory.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\ninterface IN2MUpgradeable {\\n function getERC721Implementation() external view returns (address);\\n function getERC1155Implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xbc4cfae6a564897bf29f7835e955bb7a9aca236c4b153bb0a90a52e40d7f0b95\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IN2MCrossFactory.sol":{"IN2MCrossFactory":{"abi":[{"inputs":[],"name":"getN2MTreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","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":"tokenId","type":"uint256"}],"name":"strictOwnerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getN2MTreasuryAddress()":"3765cb6a","ownerOf(uint256)":"6352211e","strictOwnerOf(uint256)":"713562fe"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getN2MTreasuryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"strictOwnerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IN2MCrossFactory.sol\":\"IN2MCrossFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IN2MCrossFactory.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\ninterface IN2MCrossFactory {\\n function getN2MTreasuryAddress() external pure returns (address);\\n function ownerOf(uint256 tokenId) external view returns (address);\\n function strictOwnerOf(uint256 tokenId) external view returns (address);\\n}\\n\",\"keccak256\":\"0xcb98136d824cb93d967d4144a2a372de3b858b66832fc58055739de59ad2d040\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IN2MERC1155.sol":{"IN2MERC1155":{"abi":[{"inputs":[{"internalType":"address","name":"filtered","type":"address"}],"name":"AddressFiltered","type":"error"},{"inputs":[],"name":"CantLowerCurrentPercentages","type":"error"},{"inputs":[],"name":"CantRevealYetWaitABitToBeAbleToRedeem","type":"error"},{"inputs":[],"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","type":"error"},{"inputs":[],"name":"CollectionSoldOut","type":"error"},{"inputs":[],"name":"ContractMetadataURIAlreadyFixed","type":"error"},{"inputs":[],"name":"InputSizeMismatch","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidDropDate","type":"error"},{"inputs":[],"name":"InvalidInputSizesDontMatch","type":"error"},{"inputs":[],"name":"InvalidMintFee","type":"error"},{"inputs":[],"name":"InvalidMintFeeForFreeMinting","type":"error"},{"inputs":[],"name":"InvalidMintingType","type":"error"},{"inputs":[],"name":"InvalidPercentageOrDiscountValues","type":"error"},{"inputs":[],"name":"InvalidPhaseWithoutDate","type":"error"},{"inputs":[],"name":"InvalidRevenuePercentage","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MaxPerAddressExceeded","type":"error"},{"inputs":[],"name":"MetadataAlreadyFixed","type":"error"},{"inputs":[],"name":"NewBaseURICantBeEmpty","type":"error"},{"inputs":[],"name":"NewPlaceholderCantBeEmpty","type":"error"},{"inputs":[],"name":"NoBaseURINorPlaceholderSet","type":"error"},{"inputs":[],"name":"NonTransferrableSoulboundNFT","type":"error"},{"inputs":[],"name":"NotEnoughAmountToMint","type":"error"},{"inputs":[],"name":"NothingToRedeem","type":"error"},{"inputs":[],"name":"OnlyAffiliateOrN2M","type":"error"},{"inputs":[],"name":"OnlyOwnerOrN2M","type":"error"},{"inputs":[],"name":"PresaleInvalidMintingType","type":"error"},{"inputs":[],"name":"PresaleNotOpen","type":"error"},{"inputs":[],"name":"PublicSaleNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"RoyaltyFeeTooHigh","type":"error"},{"inputs":[],"name":"SaleFinished","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[],"name":"SignatureMismatch","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TotalSupplyMustBeGreaterThanZero","type":"error"},{"inputs":[],"name":"WaitUntilDropDate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"affiliate","type":"address"}],"name":"AffiliateSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"affiliateWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"affiliatesInfo","outputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint16","name":"affiliatePercentage","type":"uint16"},{"internalType":"uint16","name":"userDiscount","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSequential","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSpecify","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMintPrice","type":"uint256"}],"name":"changeMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newPlaceholderImageCIDHash","type":"bytes32"}],"name":"changePlaceholderImageCID","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collectionSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPhase","outputs":[{"internalType":"enum IN2M_ERCStorage.SalePhase","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableOperatorFilterRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableOperatorFilterRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"erc20PaymentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startId","type":"uint256"},{"internalType":"uint256","name":"endId","type":"uint256"}],"name":"getSupplies","outputs":[{"internalType":"uint256[]","name":"supplies","type":"uint256[]"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"iMintPrice","type":"uint256"},{"internalType":"bytes32","name":"baseURICIDHash","type":"bytes32"},{"internalType":"bytes32","name":"placeholderImageCIDHash","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint16","name":"percentage","type":"uint16"}],"internalType":"struct IN2M_ERCStorage.RevenueAddress[]","name":"revenueAddresses","type":"tuple[]"},{"internalType":"address","name":"iErc20PaymentAddress","type":"address"},{"internalType":"uint32","name":"iTotalSupply","type":"uint32"},{"internalType":"uint16","name":"iRoyaltyFee","type":"uint16"},{"internalType":"bool","name":"soulboundCollection","type":"bool"},{"internalType":"enum IN2M_ERCStorage.MintingType","name":"iMintingType","type":"uint8"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"resolver","type":"address"},{"internalType":"string","name":"collectionENSName","type":"string"}],"name":"initializeAndSetReverseENSName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMetadataFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOperatorFilterRegistryEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"customURICIDHash","type":"bytes32"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"mintCustomURITo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"freeMinting","type":"bool"},{"internalType":"uint256","name":"customFee","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"soulbound","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mintPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintingType","outputs":[{"internalType":"enum IN2M_ERCStorage.MintingType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerMaxRevenue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"pendingAffiliateBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingTotalAffiliatesBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"randomTickets","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"blockNumberToReveal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeemRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"royaltyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleDates","outputs":[{"internalType":"uint256","name":"dropDateTimestamp","type":"uint256"},{"internalType":"uint256","name":"endDateTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"userDiscount","type":"uint16"},{"internalType":"uint16","name":"affiliatePercentage","type":"uint16"},{"internalType":"address","name":"affiliateAddress","type":"address"}],"name":"setAffiliatesPercentageAndDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"baseURICIDHash","type":"bytes32"}],"name":"setAndRevealBaseURI","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":"bytes32","name":"newContractURIMetadataCIDHash","type":"bytes32"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dropDateTimestamp","type":"uint256"},{"internalType":"uint256","name":"endDateTimestamp","type":"uint256"}],"name":"setDropAndEndDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dropDateTimestamp","type":"uint256"}],"name":"setDropDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newMaxPerAddress","type":"uint16"}],"name":"setMaxPerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IN2M_ERCStorage.SalePhase","name":"newPhase","type":"uint8"}],"name":"setPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rerverseResolver","type":"address"},{"internalType":"string","name":"collectionENSName","type":"string"}],"name":"setReverseENSName","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":"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":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"erc20Address","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"signatureExpireDate","type":"uint256"},{"internalType":"uint256","name":"n2mFee","type":"uint256"},{"internalType":"address","name":"erc20Address","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdrawERC20Pro","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"signatureExpireDate","type":"uint256"},{"internalType":"uint256","name":"n2mFee","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdrawPro","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"erc20","type":"address"}],"name":"withdrawnERC20Amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"events":{"AffiliateSell(address)":{"params":{"affiliate":"The affiliate address"}},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."},"TransferBatch(address,address,address,uint256[],uint256[])":{"details":"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."},"TransferSingle(address,address,address,uint256,uint256)":{"details":"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"URI(string,uint256)":{"details":"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."}},"kind":"dev","methods":{"airdropRandom(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSequential(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSpecify(address[],uint256[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"balanceOf(address,uint256)":{"details":"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."},"maxPerAddress()":{"returns":{"_0":"Max per address allowed."}},"mint(uint256)":{"params":{"amount":"The number of NFTs to mint"}},"mint(uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint"}},"mintCustomURITo(address,bytes32,bool)":{"params":{"customURICIDHash":"The CID of the given token.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The address of the NFTs receiver"}},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"params":{"amount":"Amount to mint.","customFee":"Zero is fee is different from `mintingPrice`.","freeMinting":"True is minting is free","maxAmount":"Max Amount to be minted with the given `signature`.","signature":"Valid `signature` for the presale/whitelist.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`."}},"mintPrice()":{"returns":{"_0":"Mint price for one NFT in native coin or ERC-20."}},"mintRandomTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintRandomTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintSpecifyTo(address,uint256[])":{"params":{"to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintSpecifyTo(address,uint256[],address)":{"params":{"affiliate":"The affiliate address","to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"owner()":{"returns":{"_0":"The address of the owner."}},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."},"setApprovalForAll(address,bool)":{"details":"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller."},"symbol()":{"returns":{"_0":"the collection symbol"}},"tokenURI(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\"."},"totalSupply()":{"returns":{"_0":"Current total supply."}},"uri(uint256)":{"details":"Returns the URI for token type `id`. If the `\\{id\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"affiliateWithdraw(address)":"35f0aa94","affiliatesInfo(address)":"1e7efe90","airdropRandom(address[],bool)":"be172edf","airdropSequential(address[],bool)":"68fdda33","airdropSpecify(address[],uint256[],bool)":"71e6775f","balanceOf(address)":"70a08231","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","changeMintPrice(uint256)":"3fd17366","changePlaceholderImageCID(bytes32)":"8a9feb73","collectionSize()":"45c0f533","contractURI()":"e8a3d485","currentPhase()":"055ad42e","disableOperatorFilterRegistry()":"71ea200e","enableOperatorFilterRegistry()":"95720d1f","erc20PaymentAddress()":"cca7f32e","exists(uint256)":"4f558e79","getSupplies(uint256,uint256)":"798f4794","initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":"5066e5c2","initializeAndSetReverseENSName(address,string)":"bbfc4e4a","isApprovedForAll(address,address)":"e985e9c5","isMetadataFixed()":"0de77eb8","isOpen()":"47535d7b","isOperatorFilterRegistryEnabled()":"46ee5869","maxPerAddress()":"639814e0","mint()":"1249c58b","mint(uint256)":"a0712d68","mint(uint256,address)":"94bf804d","mintCustomURITo(address,bytes32,bool)":"6ad54240","mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":"9d13a5ba","mintPrice()":"6817c76c","mintRandomTo(address,uint256)":"1d7df191","mintRandomTo(address,uint256,address)":"fefa5d72","mintSpecifyTo(address,uint256[])":"4402d254","mintSpecifyTo(address,uint256[],address)":"4a50aa85","mintTo(address,uint256)":"449a52f8","mintTo(address,uint256,address)":"438b1b4b","mintingType()":"f0bba09f","n2mVersion()":"cb93c48f","name()":"06fdde03","owner()":"8da5cb5b","ownerMaxRevenue()":"53ff5046","pendingAffiliateBalance(address)":"54059640","pendingTotalAffiliatesBalance()":"d3f1157b","randomTickets(address)":"106769f2","redeemRandom()":"1ff4cc7d","royaltyFee()":"b8997a97","royaltyInfo(uint256,uint256)":"2a55205a","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","saleDates()":"116ae64d","setAffiliatesPercentageAndDiscount(uint16,uint16,address)":"c9aa1118","setAndRevealBaseURI(bytes32)":"8da62a17","setApprovalForAll(address,bool)":"a22cb465","setContractURI(bytes32)":"227a722e","setDropAndEndDate(uint256,uint256)":"baaafbb5","setDropDate(uint256)":"0f22ea1f","setMaxPerAddress(uint16)":"b08b27a6","setPhase(uint8)":"c03afb59","setReverseENSName(address,string)":"7e124f46","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","totalSupply(uint256)":"bd85b039","uri(uint256)":"0e89341c","withdraw()":"3ccfd60b","withdrawERC20(address)":"f4f3b200","withdrawERC20Pro(uint256,uint256,address,bytes)":"372262b9","withdrawPro(uint256,uint256,bytes)":"c54993da","withdrawnAmount()":"830de4b1","withdrawnERC20Amount(address)":"8e5b37f3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filtered\",\"type\":\"address\"}],\"name\":\"AddressFiltered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantLowerCurrentPercentages\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantRevealYetWaitABitToBeAbleToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSetBaseURIAndPlaceholderAtTheSameTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CollectionSoldOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractMetadataURIAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputSizeMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDropDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputSizesDontMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFeeForFreeMinting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercentageOrDiscountValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPhaseWithoutDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevenuePercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerAddressExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetadataAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBaseURICantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPlaceholderCantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseURINorPlaceholderSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonTransferrableSoulboundNFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughAmountToMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAffiliateOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOwnerOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleInvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PublicSaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoyaltyFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaleFinished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyMinted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WaitUntilDropDate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"AffiliateSell\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"affiliateWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"affiliatesInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"affiliatePercentage\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"userDiscount\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSequential\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSpecify\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newMintPrice\",\"type\":\"uint256\"}],\"name\":\"changeMintPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newPlaceholderImageCIDHash\",\"type\":\"bytes32\"}],\"name\":\"changePlaceholderImageCID\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentPhase\",\"outputs\":[{\"internalType\":\"enum IN2M_ERCStorage.SalePhase\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableOperatorFilterRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableOperatorFilterRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20PaymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endId\",\"type\":\"uint256\"}],\"name\":\"getSupplies\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"supplies\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockTimestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"iMintPrice\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"baseURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"placeholderImageCIDHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"percentage\",\"type\":\"uint16\"}],\"internalType\":\"struct IN2M_ERCStorage.RevenueAddress[]\",\"name\":\"revenueAddresses\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"iErc20PaymentAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"iTotalSupply\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"iRoyaltyFee\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"soulboundCollection\",\"type\":\"bool\"},{\"internalType\":\"enum IN2M_ERCStorage.MintingType\",\"name\":\"iMintingType\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"collectionENSName\",\"type\":\"string\"}],\"name\":\"initializeAndSetReverseENSName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isMetadataFixed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isOperatorFilterRegistryEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPerAddress\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"customURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"mintCustomURITo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"freeMinting\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"customFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"mintPresale\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintingType\",\"outputs\":[{\"internalType\":\"enum IN2M_ERCStorage.MintingType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ownerMaxRevenue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"pendingAffiliateBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingTotalAffiliatesBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"randomTickets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumberToReveal\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"saleDates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dropDateTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endDateTimestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"userDiscount\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"affiliatePercentage\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"affiliateAddress\",\"type\":\"address\"}],\"name\":\"setAffiliatesPercentageAndDiscount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"baseURICIDHash\",\"type\":\"bytes32\"}],\"name\":\"setAndRevealBaseURI\",\"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\":\"bytes32\",\"name\":\"newContractURIMetadataCIDHash\",\"type\":\"bytes32\"}],\"name\":\"setContractURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dropDateTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endDateTimestamp\",\"type\":\"uint256\"}],\"name\":\"setDropAndEndDate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dropDateTimestamp\",\"type\":\"uint256\"}],\"name\":\"setDropDate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newMaxPerAddress\",\"type\":\"uint16\"}],\"name\":\"setMaxPerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IN2M_ERCStorage.SalePhase\",\"name\":\"newPhase\",\"type\":\"uint8\"}],\"name\":\"setPhase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rerverseResolver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"collectionENSName\",\"type\":\"string\"}],\"name\":\"setReverseENSName\",\"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\":\"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\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"}],\"name\":\"withdrawERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signatureExpireDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n2mFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"withdrawERC20Pro\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signatureExpireDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n2mFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"withdrawPro\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawnAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20\",\"type\":\"address\"}],\"name\":\"withdrawnERC20Amount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AffiliateSell(address)\":{\"params\":{\"affiliate\":\"The affiliate address\"}},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"airdropRandom(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSequential(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSpecify(address[],uint256[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"maxPerAddress()\":{\"returns\":{\"_0\":\"Max per address allowed.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint\"}},\"mint(uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint\"}},\"mintCustomURITo(address,bytes32,bool)\":{\"params\":{\"customURICIDHash\":\"The CID of the given token.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The address of the NFTs receiver\"}},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"amount\":\"Amount to mint.\",\"customFee\":\"Zero is fee is different from `mintingPrice`.\",\"freeMinting\":\"True is minting is free\",\"maxAmount\":\"Max Amount to be minted with the given `signature`.\",\"signature\":\"Valid `signature` for the presale/whitelist.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\"}},\"mintPrice()\":{\"returns\":{\"_0\":\"Mint price for one NFT in native coin or ERC-20.\"}},\"mintRandomTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintRandomTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintSpecifyTo(address,uint256[])\":{\"params\":{\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintSpecifyTo(address,uint256[],address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"owner()\":{\"returns\":{\"_0\":\"The address of the owner.\"}},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"symbol()\":{\"returns\":{\"_0\":\"the collection symbol\"}},\"tokenURI(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \\\"ERC721 Metadata JSON Schema\\\".\"},\"totalSupply()\":{\"returns\":{\"_0\":\"Current total supply.\"}},\"uri(uint256)\":{\"details\":\"Returns the URI for token type `id`. If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"AddressFiltered(address)\":[{\"notice\":\"Operator address is filtered\"}],\"CantLowerCurrentPercentages()\":[{\"notice\":\"Can't lower current percentages\"}],\"CantRevealYetWaitABitToBeAbleToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets too soon\"}],\"CantSetBaseURIAndPlaceholderAtTheSameTime()\":[{\"notice\":\"Can't set BaseURI and Placeholder at the same time\"}],\"CollectionSoldOut()\":[{\"notice\":\"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\"}],\"ContractMetadataURIAlreadyFixed()\":[{\"notice\":\"Contract MetadataURI already fixed\"}],\"InputSizeMismatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidAmount()\":[{\"notice\":\"Error thrown when the input amount is not valid\"}],\"InvalidDropDate()\":[{\"notice\":\"Invalid drop date\"}],\"InvalidInputSizesDontMatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidMintFee()\":[{\"notice\":\"Error thrown when the sent amount is not valid\"}],\"InvalidMintFeeForFreeMinting()\":[{\"notice\":\"Error thrown when sending funds to a free minting\"}],\"InvalidMintingType()\":[{\"notice\":\"Invalid collection minting type for the current minting function\"}],\"InvalidPercentageOrDiscountValues()\":[{\"notice\":\"Invalid percentage or discount values\"}],\"InvalidPhaseWithoutDate()\":[{\"notice\":\"Invalid phase can't be set without giving a date, use the proper functions\"}],\"InvalidRevenuePercentage()\":[{\"notice\":\"The input revenue percentages are not valid\"}],\"InvalidTokenId()\":[{\"notice\":\"Error thrown when trying to mint a token with a given invalid id\"}],\"MaxPerAddressExceeded()\":[{\"notice\":\"The address exceeded the max per address amount\"}],\"MetadataAlreadyFixed()\":[{\"notice\":\"Metadata is already fixed. Can't change metadata once fixed\"}],\"NewBaseURICantBeEmpty()\":[{\"notice\":\"New BaseURI can't be empty\"}],\"NewPlaceholderCantBeEmpty()\":[{\"notice\":\"New Placeholder can't be empty\"}],\"NoBaseURINorPlaceholderSet()\":[{\"notice\":\"No BaseURI nor Placeholder set\"}],\"NonTransferrableSoulboundNFT()\":[{\"notice\":\"Can't transfer a Soulbound Token (SBT)\"}],\"NotEnoughAmountToMint()\":[{\"notice\":\"Error thrown when trying to mint more than the allowance to mint\"}],\"NothingToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets with no amount to redeem\"}],\"OnlyAffiliateOrN2M()\":[{\"notice\":\"Only the given affiliate or N2M can call this function\"}],\"OnlyOwnerOrN2M()\":[{\"notice\":\"Only owner of N2M can call this function\"}],\"PresaleInvalidMintingType()\":[{\"notice\":\"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\"}],\"PresaleNotOpen()\":[{\"notice\":\"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\"}],\"PublicSaleNotOpen()\":[{\"notice\":\"Error thrown when trying to mint and the collection current phase is not `open`\"}],\"ReentrancyGuard()\":[{\"notice\":\"Reentrancy Guard protection\"}],\"RoyaltyFeeTooHigh()\":[{\"notice\":\"Royalty fee can't be higher than 10%\"}],\"SaleFinished()\":[{\"notice\":\"Error thrown when trying to mint but the sale has already finished\"}],\"SignatureExpired()\":[{\"notice\":\"The signature has expired\"}],\"SignatureMismatch()\":[{\"notice\":\"The given signature doesn't match the input values\"}],\"TokenAlreadyMinted()\":[{\"notice\":\"Error thrown when trying to mint a token with a given id which is already minted\"}],\"TotalSupplyMustBeGreaterThanZero()\":[{\"notice\":\"Invalid input. Total supply must be greater than zero\"}],\"WaitUntilDropDate()\":[{\"notice\":\"Can't mint until specified drop date\"}]},\"events\":{\"AffiliateSell(address)\":{\"notice\":\"This event is emitted when a token is minted using an affiliate\"}},\"kind\":\"user\",\"methods\":{\"airdropRandom(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\"},\"airdropSequential(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\"},\"airdropSpecify(address[],uint256[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\"},\"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)\":{\"notice\":\"To be called to create the collection. Can only be called once.\"},\"isMetadataFixed()\":{\"notice\":\"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\"},\"maxPerAddress()\":{\"notice\":\"Max amount of NFTs to be hold per address.\"},\"mint()\":{\"notice\":\"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256,address)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintCustomURITo(address,bytes32,bool)\":{\"notice\":\"Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\"},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\"},\"mintPrice()\":{\"notice\":\"Returns the minting price of one NFT.\"},\"mintRandomTo(address,uint256)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintRandomTo(address,uint256,address)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintSpecifyTo(address,uint256[])\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintSpecifyTo(address,uint256[],address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256)\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256,address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"owner()\":{\"notice\":\"Returns the address of the current collection owner.\"},\"redeemRandom()\":{\"notice\":\"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"totalSupply()\":{\"notice\":\"Returns the current total supply.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IN2MERC1155.sol\":\"IN2MERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n */\\n function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n external\\n view\\n returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\\n external\\n view\\n returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURI is IERC1155 {\\n /**\\n * @dev Returns the URI for token type `id`.\\n *\\n * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n * clients with the actual token type ID.\\n */\\n function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/interfaces/IN2MERC1155.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\\\";\\nimport \\\"./IN2M_ERCCommon.sol\\\";\\n\\ninterface IN2MERC1155 is IERC1155MetadataURI, IN2M_ERCCommon {\\n function supportsInterface(bytes4 interfaceId) external view override(IERC165, IERC165Upgradeable) returns (bool);\\n function balanceOf(address owner) external view returns (uint256 balance);\\n function totalSupply(uint256 id) external view returns (uint256);\\n function exists(uint256 id) external view returns (bool);\\n function getSupplies(uint256 startId, uint256 endId) external view returns (uint256[] memory supplies, uint256 blockNumber, uint256 blockTimestamp);\\n}\\n\\n\",\"keccak256\":\"0x70ebff560f29ac8f23879a0fb30913cd9f8efdd1f24e0ddef8b2ab78444a6490\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCBase.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCBase is IERC2981Upgradeable, IN2M_ERCStorage {\\n /// @notice To be called to create the collection. Can only be called once.\\n function initialize\\n (\\n string memory tokenName,\\n string memory tokenSymbol,\\n uint256 iMintPrice,\\n bytes32 baseURICIDHash,\\n bytes32 placeholderImageCIDHash,\\n RevenueAddress[] calldata revenueAddresses,\\n address iErc20PaymentAddress,\\n uint32 iTotalSupply,\\n uint16 iRoyaltyFee,\\n bool soulboundCollection,\\n MintingType iMintingType\\n ) external payable;\\n\\n /// @notice A descriptive name for a collection of NFTs in this contract\\n function name() external view returns (string memory);\\n\\n /// @notice An abbreviated name for NFTs in this contract\\n /// @return the collection symbol\\n function symbol() external view returns (string memory);\\n\\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\\n /// 3986. The URI may point to a JSON file that conforms to the \\\"ERC721\\n /// Metadata JSON Schema\\\".\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable; \\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds) external payable; \\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) external payable; \\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(address[] memory to, uint256[] memory tokenIds, bool soulbound) external payable;\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale (\\n address to, \\n uint256[] memory tokenIds,\\n bool freeMinting, \\n uint256 customFee, \\n uint256 maxAmount,\\n uint256 amount, \\n bool soulbound,\\n bytes calldata signature) payable external;\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256);\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256);\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view returns (uint16);\\n\\n}\\n\\n\",\"keccak256\":\"0x7104e5126271dfd0c5a9f91d7536163908875a2fb5ec49144312552c2d3a78be\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCCommon.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"./IN2M_ERCLibrary.sol\\\";\\nimport \\\"./IN2M_ERCBase.sol\\\";\\n\\ninterface IN2M_ERCCommon is IN2M_ERCBase, IN2M_ERCLibrary {\\n /// @notice Returns the address of the current collection owner.\\n /// @return The address of the owner.\\n function owner() external view returns (address);\\n}\\n\\n\",\"keccak256\":\"0x9deab0dbd767c0228ac8bf1b6f0da5bf98dfb0733c603595afdf6df52ab06c1a\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCLibrary.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCLibrary is IN2M_ERCStorage {\\n function setAndRevealBaseURI(bytes32 baseURICIDHash) external;\\n function changeMintPrice(uint256 newMintPrice) external;\\n function contractURI() external view returns (string memory);\\n function setContractURI(bytes32 newContractURIMetadataCIDHash) external;\\n function setAffiliatesPercentageAndDiscount(uint16 userDiscount, uint16 affiliatePercentage, address affiliateAddress) external;\\n function affiliateWithdraw(address affiliate) external;\\n function withdrawERC20(address erc20Address) external;\\n function withdrawERC20Pro(uint256 signatureExpireDate, uint n2mFee, address erc20Address, bytes calldata signature) external;\\n function withdraw() external;\\n function withdrawPro(uint256 signatureExpireDate, uint256 n2mFee, bytes calldata signature) external;\\n function setReverseENSName(address rerverseResolver, string calldata collectionENSName) external;\\n function initializeAndSetReverseENSName(address resolver, string calldata collectionENSName) external;\\n function changePlaceholderImageCID(bytes32 newPlaceholderImageCIDHash) external;\\n function setPhase(SalePhase newPhase) external;\\n function setDropDate(uint256 dropDateTimestamp) external;\\n function setDropAndEndDate(uint256 dropDateTimestamp, uint256 endDateTimestamp) external;\\n function setMaxPerAddress(uint16 newMaxPerAddress) external;\\n function isOperatorFilterRegistryEnabled() external view returns (bool);\\n function enableOperatorFilterRegistry() external;\\n function disableOperatorFilterRegistry() external;\\n function collectionSize() external view returns (uint256);\\n function randomTickets(address affiliate) external view returns (uint amount, uint blockNumberToReveal);\\n function affiliatesInfo(address affiliate) external view returns (bool enabled, uint16 affiliatePercentage, uint16 userDiscount);\\n function pendingAffiliateBalance(address affiliate) external view returns (uint256);\\n function pendingTotalAffiliatesBalance() external view returns (uint256);\\n function royaltyFee() external view returns (uint256);\\n function withdrawnAmount() external view returns (uint256);\\n function withdrawnERC20Amount(address erc20) external view returns (uint256);\\n function erc20PaymentAddress() external view returns (address);\\n function currentPhase() external view returns (SalePhase);\\n function mintingType() external view returns (MintingType);\\n function saleDates() external view returns (uint256 dropDateTimestamp, uint256 endDateTimestamp);\\n function isOpen() external view returns (bool);\\n function ownerMaxRevenue() external view returns (uint256);\\n\\n}\\n\\n\",\"keccak256\":\"0x90526238166f24f25c8425e986231e1262ea2e4aae15a1ae357f3d711d29752d\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0x2a133c164f90171559802fac306a2477e33a87e33ed1e69384489571a1fe9acb\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"AddressFiltered(address)":[{"notice":"Operator address is filtered"}],"CantLowerCurrentPercentages()":[{"notice":"Can't lower current percentages"}],"CantRevealYetWaitABitToBeAbleToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets too soon"}],"CantSetBaseURIAndPlaceholderAtTheSameTime()":[{"notice":"Can't set BaseURI and Placeholder at the same time"}],"CollectionSoldOut()":[{"notice":"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"}],"ContractMetadataURIAlreadyFixed()":[{"notice":"Contract MetadataURI already fixed"}],"InputSizeMismatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidAmount()":[{"notice":"Error thrown when the input amount is not valid"}],"InvalidDropDate()":[{"notice":"Invalid drop date"}],"InvalidInputSizesDontMatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidMintFee()":[{"notice":"Error thrown when the sent amount is not valid"}],"InvalidMintFeeForFreeMinting()":[{"notice":"Error thrown when sending funds to a free minting"}],"InvalidMintingType()":[{"notice":"Invalid collection minting type for the current minting function"}],"InvalidPercentageOrDiscountValues()":[{"notice":"Invalid percentage or discount values"}],"InvalidPhaseWithoutDate()":[{"notice":"Invalid phase can't be set without giving a date, use the proper functions"}],"InvalidRevenuePercentage()":[{"notice":"The input revenue percentages are not valid"}],"InvalidTokenId()":[{"notice":"Error thrown when trying to mint a token with a given invalid id"}],"MaxPerAddressExceeded()":[{"notice":"The address exceeded the max per address amount"}],"MetadataAlreadyFixed()":[{"notice":"Metadata is already fixed. Can't change metadata once fixed"}],"NewBaseURICantBeEmpty()":[{"notice":"New BaseURI can't be empty"}],"NewPlaceholderCantBeEmpty()":[{"notice":"New Placeholder can't be empty"}],"NoBaseURINorPlaceholderSet()":[{"notice":"No BaseURI nor Placeholder set"}],"NonTransferrableSoulboundNFT()":[{"notice":"Can't transfer a Soulbound Token (SBT)"}],"NotEnoughAmountToMint()":[{"notice":"Error thrown when trying to mint more than the allowance to mint"}],"NothingToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets with no amount to redeem"}],"OnlyAffiliateOrN2M()":[{"notice":"Only the given affiliate or N2M can call this function"}],"OnlyOwnerOrN2M()":[{"notice":"Only owner of N2M can call this function"}],"PresaleInvalidMintingType()":[{"notice":"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"}],"PresaleNotOpen()":[{"notice":"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"}],"PublicSaleNotOpen()":[{"notice":"Error thrown when trying to mint and the collection current phase is not `open`"}],"ReentrancyGuard()":[{"notice":"Reentrancy Guard protection"}],"RoyaltyFeeTooHigh()":[{"notice":"Royalty fee can't be higher than 10%"}],"SaleFinished()":[{"notice":"Error thrown when trying to mint but the sale has already finished"}],"SignatureExpired()":[{"notice":"The signature has expired"}],"SignatureMismatch()":[{"notice":"The given signature doesn't match the input values"}],"TokenAlreadyMinted()":[{"notice":"Error thrown when trying to mint a token with a given id which is already minted"}],"TotalSupplyMustBeGreaterThanZero()":[{"notice":"Invalid input. Total supply must be greater than zero"}],"WaitUntilDropDate()":[{"notice":"Can't mint until specified drop date"}]},"events":{"AffiliateSell(address)":{"notice":"This event is emitted when a token is minted using an affiliate"}},"kind":"user","methods":{"airdropRandom(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`."},"airdropSequential(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`."},"airdropSpecify(address[],uint256[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`."},"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":{"notice":"To be called to create the collection. Can only be called once."},"isMetadataFixed()":{"notice":"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."},"maxPerAddress()":{"notice":"Max amount of NFTs to be hold per address."},"mint()":{"notice":"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256)":{"notice":"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256,address)":{"notice":"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintCustomURITo(address,bytes32,bool)":{"notice":"Mints one NFT to `to` address. Requires `minting type` to be `customURI`."},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"notice":"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale."},"mintPrice()":{"notice":"Returns the minting price of one NFT."},"mintRandomTo(address,uint256)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintRandomTo(address,uint256,address)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintSpecifyTo(address,uint256[])":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintSpecifyTo(address,uint256[],address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256)":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256,address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"owner()":{"notice":"Returns the address of the current collection owner."},"redeemRandom()":{"notice":"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs."},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"},"tokenURI(uint256)":{"notice":"A distinct Uniform Resource Identifier (URI) for a given asset."},"totalSupply()":{"notice":"Returns the current total supply."}},"version":1}}},"contracts/interfaces/IN2MERC721.sol":{"IN2MERC721":{"abi":[{"inputs":[{"internalType":"address","name":"filtered","type":"address"}],"name":"AddressFiltered","type":"error"},{"inputs":[],"name":"CantLowerCurrentPercentages","type":"error"},{"inputs":[],"name":"CantRevealYetWaitABitToBeAbleToRedeem","type":"error"},{"inputs":[],"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","type":"error"},{"inputs":[],"name":"CollectionSoldOut","type":"error"},{"inputs":[],"name":"ContractMetadataURIAlreadyFixed","type":"error"},{"inputs":[],"name":"InputSizeMismatch","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidDropDate","type":"error"},{"inputs":[],"name":"InvalidInputSizesDontMatch","type":"error"},{"inputs":[],"name":"InvalidMintFee","type":"error"},{"inputs":[],"name":"InvalidMintFeeForFreeMinting","type":"error"},{"inputs":[],"name":"InvalidMintingType","type":"error"},{"inputs":[],"name":"InvalidPercentageOrDiscountValues","type":"error"},{"inputs":[],"name":"InvalidPhaseWithoutDate","type":"error"},{"inputs":[],"name":"InvalidRevenuePercentage","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MaxPerAddressExceeded","type":"error"},{"inputs":[],"name":"MetadataAlreadyFixed","type":"error"},{"inputs":[],"name":"NewBaseURICantBeEmpty","type":"error"},{"inputs":[],"name":"NewPlaceholderCantBeEmpty","type":"error"},{"inputs":[],"name":"NoBaseURINorPlaceholderSet","type":"error"},{"inputs":[],"name":"NonTransferrableSoulboundNFT","type":"error"},{"inputs":[],"name":"NotEnoughAmountToMint","type":"error"},{"inputs":[],"name":"NothingToRedeem","type":"error"},{"inputs":[],"name":"OnlyAffiliateOrN2M","type":"error"},{"inputs":[],"name":"OnlyOwnerOrN2M","type":"error"},{"inputs":[],"name":"PresaleInvalidMintingType","type":"error"},{"inputs":[],"name":"PresaleNotOpen","type":"error"},{"inputs":[],"name":"PublicSaleNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"RoyaltyFeeTooHigh","type":"error"},{"inputs":[],"name":"SaleFinished","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[],"name":"SignatureMismatch","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TotalSupplyMustBeGreaterThanZero","type":"error"},{"inputs":[],"name":"WaitUntilDropDate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"affiliate","type":"address"}],"name":"AffiliateSell","type":"event"},{"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":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","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":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"affiliateWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"affiliatesInfo","outputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint16","name":"affiliatePercentage","type":"uint16"},{"internalType":"uint16","name":"userDiscount","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSequential","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSpecify","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMintPrice","type":"uint256"}],"name":"changeMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newPlaceholderImageCIDHash","type":"bytes32"}],"name":"changePlaceholderImageCID","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collectionSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPhase","outputs":[{"internalType":"enum IN2M_ERCStorage.SalePhase","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableOperatorFilterRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableOperatorFilterRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"erc20PaymentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"iMintPrice","type":"uint256"},{"internalType":"bytes32","name":"baseURICIDHash","type":"bytes32"},{"internalType":"bytes32","name":"placeholderImageCIDHash","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint16","name":"percentage","type":"uint16"}],"internalType":"struct IN2M_ERCStorage.RevenueAddress[]","name":"revenueAddresses","type":"tuple[]"},{"internalType":"address","name":"iErc20PaymentAddress","type":"address"},{"internalType":"uint32","name":"iTotalSupply","type":"uint32"},{"internalType":"uint16","name":"iRoyaltyFee","type":"uint16"},{"internalType":"bool","name":"soulboundCollection","type":"bool"},{"internalType":"enum IN2M_ERCStorage.MintingType","name":"iMintingType","type":"uint8"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"resolver","type":"address"},{"internalType":"string","name":"collectionENSName","type":"string"}],"name":"initializeAndSetReverseENSName","outputs":[],"stateMutability":"nonpayable","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":[],"name":"isMetadataFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOperatorFilterRegistryEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"customURICIDHash","type":"bytes32"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"mintCustomURITo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"freeMinting","type":"bool"},{"internalType":"uint256","name":"customFee","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"soulbound","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mintPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintingType","outputs":[{"internalType":"enum IN2M_ERCStorage.MintingType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerMaxRevenue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"pendingAffiliateBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingTotalAffiliatesBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"randomTickets","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"blockNumberToReveal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeemRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"royaltyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","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":"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":"saleDates","outputs":[{"internalType":"uint256","name":"dropDateTimestamp","type":"uint256"},{"internalType":"uint256","name":"endDateTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"userDiscount","type":"uint16"},{"internalType":"uint16","name":"affiliatePercentage","type":"uint16"},{"internalType":"address","name":"affiliateAddress","type":"address"}],"name":"setAffiliatesPercentageAndDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"baseURICIDHash","type":"bytes32"}],"name":"setAndRevealBaseURI","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":"bytes32","name":"newContractURIMetadataCIDHash","type":"bytes32"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dropDateTimestamp","type":"uint256"},{"internalType":"uint256","name":"endDateTimestamp","type":"uint256"}],"name":"setDropAndEndDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dropDateTimestamp","type":"uint256"}],"name":"setDropDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newMaxPerAddress","type":"uint16"}],"name":"setMaxPerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IN2M_ERCStorage.SalePhase","name":"newPhase","type":"uint8"}],"name":"setPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rerverseResolver","type":"address"},{"internalType":"string","name":"collectionENSName","type":"string"}],"name":"setReverseENSName","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":"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":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"erc20Address","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"signatureExpireDate","type":"uint256"},{"internalType":"uint256","name":"n2mFee","type":"uint256"},{"internalType":"address","name":"erc20Address","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdrawERC20Pro","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"signatureExpireDate","type":"uint256"},{"internalType":"uint256","name":"n2mFee","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdrawPro","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"erc20","type":"address"}],"name":"withdrawnERC20Amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"events":{"AffiliateSell(address)":{"params":{"affiliate":"The affiliate address"}},"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"DelegateChanged(address,address,address)":{"details":"Emitted when an account changes their delegate."},"DelegateVotesChanged(address,uint256,uint256)":{"details":"Emitted when a token transfer or delegate change results in changes to a delegate's number of votes."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"airdropRandom(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSequential(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSpecify(address[],uint256[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"approve(address,uint256)":{"details":"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."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"delegate(address)":{"details":"Delegates votes from the sender to `delegatee`."},"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Delegates votes from signer to `delegatee`."},"delegates(address)":{"details":"Returns the delegate that `account` has chosen."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"getPastTotalSupply(uint256)":{"details":"Returns the total supply of votes available at the end of a past block (`blockNumber`). NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote."},"getPastVotes(address,uint256)":{"details":"Returns the amount of votes that `account` had at the end of a past block (`blockNumber`)."},"getVotes(address)":{"details":"Returns the current amount of votes that `account` has."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"maxPerAddress()":{"returns":{"_0":"Max per address allowed."}},"mint(uint256)":{"params":{"amount":"The number of NFTs to mint"}},"mint(uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint"}},"mintCustomURITo(address,bytes32,bool)":{"params":{"customURICIDHash":"The CID of the given token.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The address of the NFTs receiver"}},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"params":{"amount":"Amount to mint.","customFee":"Zero is fee is different from `mintingPrice`.","freeMinting":"True is minting is free","maxAmount":"Max Amount to be minted with the given `signature`.","signature":"Valid `signature` for the presale/whitelist.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`."}},"mintPrice()":{"returns":{"_0":"Mint price for one NFT in native coin or ERC-20."}},"mintRandomTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintRandomTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintSpecifyTo(address,uint256[])":{"params":{"to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintSpecifyTo(address,uint256[],address)":{"params":{"affiliate":"The affiliate address","to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"owner()":{"returns":{"_0":"The address of the owner."}},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"safeTransferFrom(address,address,uint256)":{"details":"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 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."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"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."},"setApprovalForAll(address,bool)":{"details":"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."},"totalSupply()":{"returns":{"_0":"Current total supply."}},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. 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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"affiliateWithdraw(address)":"35f0aa94","affiliatesInfo(address)":"1e7efe90","airdropRandom(address[],bool)":"be172edf","airdropSequential(address[],bool)":"68fdda33","airdropSpecify(address[],uint256[],bool)":"71e6775f","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","changeMintPrice(uint256)":"3fd17366","changePlaceholderImageCID(bytes32)":"8a9feb73","collectionSize()":"45c0f533","contractURI()":"e8a3d485","currentPhase()":"055ad42e","delegate(address)":"5c19a95c","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"c3cda520","delegates(address)":"587cde1e","disableOperatorFilterRegistry()":"71ea200e","enableOperatorFilterRegistry()":"95720d1f","erc20PaymentAddress()":"cca7f32e","getApproved(uint256)":"081812fc","getPastTotalSupply(uint256)":"8e539e8c","getPastVotes(address,uint256)":"3a46b1a8","getVotes(address)":"9ab24eb0","initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":"5066e5c2","initializeAndSetReverseENSName(address,string)":"bbfc4e4a","isApprovedForAll(address,address)":"e985e9c5","isMetadataFixed()":"0de77eb8","isOpen()":"47535d7b","isOperatorFilterRegistryEnabled()":"46ee5869","maxPerAddress()":"639814e0","mint()":"1249c58b","mint(uint256)":"a0712d68","mint(uint256,address)":"94bf804d","mintCustomURITo(address,bytes32,bool)":"6ad54240","mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":"9d13a5ba","mintPrice()":"6817c76c","mintRandomTo(address,uint256)":"1d7df191","mintRandomTo(address,uint256,address)":"fefa5d72","mintSpecifyTo(address,uint256[])":"4402d254","mintSpecifyTo(address,uint256[],address)":"4a50aa85","mintTo(address,uint256)":"449a52f8","mintTo(address,uint256,address)":"438b1b4b","mintingType()":"f0bba09f","n2mVersion()":"cb93c48f","name()":"06fdde03","owner()":"8da5cb5b","ownerMaxRevenue()":"53ff5046","ownerOf(uint256)":"6352211e","pendingAffiliateBalance(address)":"54059640","pendingTotalAffiliatesBalance()":"d3f1157b","randomTickets(address)":"106769f2","redeemRandom()":"1ff4cc7d","royaltyFee()":"b8997a97","royaltyInfo(uint256,uint256)":"2a55205a","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","saleDates()":"116ae64d","setAffiliatesPercentageAndDiscount(uint16,uint16,address)":"c9aa1118","setAndRevealBaseURI(bytes32)":"8da62a17","setApprovalForAll(address,bool)":"a22cb465","setContractURI(bytes32)":"227a722e","setDropAndEndDate(uint256,uint256)":"baaafbb5","setDropDate(uint256)":"0f22ea1f","setMaxPerAddress(uint16)":"b08b27a6","setPhase(uint8)":"c03afb59","setReverseENSName(address,string)":"7e124f46","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","withdraw()":"3ccfd60b","withdrawERC20(address)":"f4f3b200","withdrawERC20Pro(uint256,uint256,address,bytes)":"372262b9","withdrawPro(uint256,uint256,bytes)":"c54993da","withdrawnAmount()":"830de4b1","withdrawnERC20Amount(address)":"8e5b37f3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filtered\",\"type\":\"address\"}],\"name\":\"AddressFiltered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantLowerCurrentPercentages\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantRevealYetWaitABitToBeAbleToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSetBaseURIAndPlaceholderAtTheSameTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CollectionSoldOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractMetadataURIAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputSizeMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDropDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputSizesDontMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFeeForFreeMinting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercentageOrDiscountValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPhaseWithoutDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevenuePercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerAddressExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetadataAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBaseURICantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPlaceholderCantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseURINorPlaceholderSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonTransferrableSoulboundNFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughAmountToMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAffiliateOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOwnerOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleInvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PublicSaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoyaltyFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaleFinished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyMinted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WaitUntilDropDate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"AffiliateSell\",\"type\":\"event\"},{\"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\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"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\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"affiliateWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"affiliatesInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"affiliatePercentage\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"userDiscount\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSequential\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSpecify\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newMintPrice\",\"type\":\"uint256\"}],\"name\":\"changeMintPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newPlaceholderImageCIDHash\",\"type\":\"bytes32\"}],\"name\":\"changePlaceholderImageCID\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentPhase\",\"outputs\":[{\"internalType\":\"enum IN2M_ERCStorage.SalePhase\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableOperatorFilterRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableOperatorFilterRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20PaymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"iMintPrice\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"baseURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"placeholderImageCIDHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"percentage\",\"type\":\"uint16\"}],\"internalType\":\"struct IN2M_ERCStorage.RevenueAddress[]\",\"name\":\"revenueAddresses\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"iErc20PaymentAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"iTotalSupply\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"iRoyaltyFee\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"soulboundCollection\",\"type\":\"bool\"},{\"internalType\":\"enum IN2M_ERCStorage.MintingType\",\"name\":\"iMintingType\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"collectionENSName\",\"type\":\"string\"}],\"name\":\"initializeAndSetReverseENSName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[],\"name\":\"isMetadataFixed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isOperatorFilterRegistryEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPerAddress\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"customURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"mintCustomURITo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"freeMinting\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"customFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"mintPresale\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintingType\",\"outputs\":[{\"internalType\":\"enum IN2M_ERCStorage.MintingType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ownerMaxRevenue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"pendingAffiliateBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingTotalAffiliatesBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"randomTickets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumberToReveal\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"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\":\"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\":\"saleDates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dropDateTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endDateTimestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"userDiscount\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"affiliatePercentage\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"affiliateAddress\",\"type\":\"address\"}],\"name\":\"setAffiliatesPercentageAndDiscount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"baseURICIDHash\",\"type\":\"bytes32\"}],\"name\":\"setAndRevealBaseURI\",\"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\":\"bytes32\",\"name\":\"newContractURIMetadataCIDHash\",\"type\":\"bytes32\"}],\"name\":\"setContractURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dropDateTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endDateTimestamp\",\"type\":\"uint256\"}],\"name\":\"setDropAndEndDate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dropDateTimestamp\",\"type\":\"uint256\"}],\"name\":\"setDropDate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newMaxPerAddress\",\"type\":\"uint16\"}],\"name\":\"setMaxPerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IN2M_ERCStorage.SalePhase\",\"name\":\"newPhase\",\"type\":\"uint8\"}],\"name\":\"setPhase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rerverseResolver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"collectionENSName\",\"type\":\"string\"}],\"name\":\"setReverseENSName\",\"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\":\"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\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"}],\"name\":\"withdrawERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signatureExpireDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n2mFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"withdrawERC20Pro\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signatureExpireDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n2mFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"withdrawPro\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawnAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20\",\"type\":\"address\"}],\"name\":\"withdrawnERC20Amount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AffiliateSell(address)\":{\"params\":{\"affiliate\":\"The affiliate address\"}},\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"DelegateChanged(address,address,address)\":{\"details\":\"Emitted when an account changes their delegate.\"},\"DelegateVotesChanged(address,uint256,uint256)\":{\"details\":\"Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"airdropRandom(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSequential(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSpecify(address[],uint256[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"approve(address,uint256)\":{\"details\":\"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.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at the end of a past block (`blockNumber`). NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"maxPerAddress()\":{\"returns\":{\"_0\":\"Max per address allowed.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint\"}},\"mint(uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint\"}},\"mintCustomURITo(address,bytes32,bool)\":{\"params\":{\"customURICIDHash\":\"The CID of the given token.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The address of the NFTs receiver\"}},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"amount\":\"Amount to mint.\",\"customFee\":\"Zero is fee is different from `mintingPrice`.\",\"freeMinting\":\"True is minting is free\",\"maxAmount\":\"Max Amount to be minted with the given `signature`.\",\"signature\":\"Valid `signature` for the presale/whitelist.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\"}},\"mintPrice()\":{\"returns\":{\"_0\":\"Mint price for one NFT in native coin or ERC-20.\"}},\"mintRandomTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintRandomTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintSpecifyTo(address,uint256[])\":{\"params\":{\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintSpecifyTo(address,uint256[],address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"owner()\":{\"returns\":{\"_0\":\"The address of the owner.\"}},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"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 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.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"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.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"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.\"},\"totalSupply()\":{\"returns\":{\"_0\":\"Current total supply.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. 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.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"AddressFiltered(address)\":[{\"notice\":\"Operator address is filtered\"}],\"CantLowerCurrentPercentages()\":[{\"notice\":\"Can't lower current percentages\"}],\"CantRevealYetWaitABitToBeAbleToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets too soon\"}],\"CantSetBaseURIAndPlaceholderAtTheSameTime()\":[{\"notice\":\"Can't set BaseURI and Placeholder at the same time\"}],\"CollectionSoldOut()\":[{\"notice\":\"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\"}],\"ContractMetadataURIAlreadyFixed()\":[{\"notice\":\"Contract MetadataURI already fixed\"}],\"InputSizeMismatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidAmount()\":[{\"notice\":\"Error thrown when the input amount is not valid\"}],\"InvalidDropDate()\":[{\"notice\":\"Invalid drop date\"}],\"InvalidInputSizesDontMatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidMintFee()\":[{\"notice\":\"Error thrown when the sent amount is not valid\"}],\"InvalidMintFeeForFreeMinting()\":[{\"notice\":\"Error thrown when sending funds to a free minting\"}],\"InvalidMintingType()\":[{\"notice\":\"Invalid collection minting type for the current minting function\"}],\"InvalidPercentageOrDiscountValues()\":[{\"notice\":\"Invalid percentage or discount values\"}],\"InvalidPhaseWithoutDate()\":[{\"notice\":\"Invalid phase can't be set without giving a date, use the proper functions\"}],\"InvalidRevenuePercentage()\":[{\"notice\":\"The input revenue percentages are not valid\"}],\"InvalidTokenId()\":[{\"notice\":\"Error thrown when trying to mint a token with a given invalid id\"}],\"MaxPerAddressExceeded()\":[{\"notice\":\"The address exceeded the max per address amount\"}],\"MetadataAlreadyFixed()\":[{\"notice\":\"Metadata is already fixed. Can't change metadata once fixed\"}],\"NewBaseURICantBeEmpty()\":[{\"notice\":\"New BaseURI can't be empty\"}],\"NewPlaceholderCantBeEmpty()\":[{\"notice\":\"New Placeholder can't be empty\"}],\"NoBaseURINorPlaceholderSet()\":[{\"notice\":\"No BaseURI nor Placeholder set\"}],\"NonTransferrableSoulboundNFT()\":[{\"notice\":\"Can't transfer a Soulbound Token (SBT)\"}],\"NotEnoughAmountToMint()\":[{\"notice\":\"Error thrown when trying to mint more than the allowance to mint\"}],\"NothingToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets with no amount to redeem\"}],\"OnlyAffiliateOrN2M()\":[{\"notice\":\"Only the given affiliate or N2M can call this function\"}],\"OnlyOwnerOrN2M()\":[{\"notice\":\"Only owner of N2M can call this function\"}],\"PresaleInvalidMintingType()\":[{\"notice\":\"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\"}],\"PresaleNotOpen()\":[{\"notice\":\"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\"}],\"PublicSaleNotOpen()\":[{\"notice\":\"Error thrown when trying to mint and the collection current phase is not `open`\"}],\"ReentrancyGuard()\":[{\"notice\":\"Reentrancy Guard protection\"}],\"RoyaltyFeeTooHigh()\":[{\"notice\":\"Royalty fee can't be higher than 10%\"}],\"SaleFinished()\":[{\"notice\":\"Error thrown when trying to mint but the sale has already finished\"}],\"SignatureExpired()\":[{\"notice\":\"The signature has expired\"}],\"SignatureMismatch()\":[{\"notice\":\"The given signature doesn't match the input values\"}],\"TokenAlreadyMinted()\":[{\"notice\":\"Error thrown when trying to mint a token with a given id which is already minted\"}],\"TotalSupplyMustBeGreaterThanZero()\":[{\"notice\":\"Invalid input. Total supply must be greater than zero\"}],\"WaitUntilDropDate()\":[{\"notice\":\"Can't mint until specified drop date\"}]},\"events\":{\"AffiliateSell(address)\":{\"notice\":\"This event is emitted when a token is minted using an affiliate\"}},\"kind\":\"user\",\"methods\":{\"airdropRandom(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\"},\"airdropSequential(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\"},\"airdropSpecify(address[],uint256[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\"},\"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)\":{\"notice\":\"To be called to create the collection. Can only be called once.\"},\"isMetadataFixed()\":{\"notice\":\"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\"},\"maxPerAddress()\":{\"notice\":\"Max amount of NFTs to be hold per address.\"},\"mint()\":{\"notice\":\"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256,address)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintCustomURITo(address,bytes32,bool)\":{\"notice\":\"Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\"},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\"},\"mintPrice()\":{\"notice\":\"Returns the minting price of one NFT.\"},\"mintRandomTo(address,uint256)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintRandomTo(address,uint256,address)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintSpecifyTo(address,uint256[])\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintSpecifyTo(address,uint256[],address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256)\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256,address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"owner()\":{\"notice\":\"Returns the address of the current collection owner.\"},\"redeemRandom()\":{\"notice\":\"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\"},\"totalSupply()\":{\"notice\":\"Returns the current total supply.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IN2MERC721.sol\":\"IN2MERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n */\\n function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n external\\n view\\n returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/governance/utils/IVotes.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (governance/utils/IVotes.sol)\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\\n *\\n * _Available since v4.5._\\n */\\ninterface IVotes {\\n /**\\n * @dev Emitted when an account changes their delegate.\\n */\\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\\n\\n /**\\n * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of votes.\\n */\\n event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance);\\n\\n /**\\n * @dev Returns the current amount of votes that `account` has.\\n */\\n function getVotes(address account) external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of votes that `account` had at the end of a past block (`blockNumber`).\\n */\\n function getPastVotes(address account, uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the total supply of votes available at the end of a past block (`blockNumber`).\\n *\\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\\n * vote.\\n */\\n function getPastTotalSupply(uint256 blockNumber) external view returns (uint256);\\n\\n /**\\n * @dev Returns the delegate that `account` has chosen.\\n */\\n function delegates(address account) external view returns (address);\\n\\n /**\\n * @dev Delegates votes from the sender to `delegatee`.\\n */\\n function delegate(address delegatee) external;\\n\\n /**\\n * @dev Delegates votes from signer to `delegatee`.\\n */\\n function delegateBySig(\\n address delegatee,\\n uint256 nonce,\\n uint256 expiry,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n}\\n\",\"keccak256\":\"0xf5324a55ee9c0b4a840ea57c055ac9d046f88986ceef567e1cf68113e46a79c0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/interfaces/IN2MERC721.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport \\\"@openzeppelin/contracts/governance/utils/IVotes.sol\\\";\\nimport \\\"./IN2M_ERCCommon.sol\\\";\\n\\ninterface IN2MERC721 is IERC721Metadata, IN2M_ERCCommon, IVotes {\\n function name() external view override(IERC721Metadata, IN2M_ERCBase) returns (string memory);\\n function tokenURI(uint256 tokenId) external view override(IERC721Metadata, IN2M_ERCBase) returns (string memory);\\n function symbol() external view override(IERC721Metadata, IN2M_ERCBase) returns (string memory);\\n function supportsInterface(bytes4 interfaceId) external view override(IERC165, IERC165Upgradeable) returns (bool);\\n}\\n\\n\",\"keccak256\":\"0x4404923586e4a20e7a8c1e642c966b5b855a951fa509574ec2af3d60c21b3fd0\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCBase.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCBase is IERC2981Upgradeable, IN2M_ERCStorage {\\n /// @notice To be called to create the collection. Can only be called once.\\n function initialize\\n (\\n string memory tokenName,\\n string memory tokenSymbol,\\n uint256 iMintPrice,\\n bytes32 baseURICIDHash,\\n bytes32 placeholderImageCIDHash,\\n RevenueAddress[] calldata revenueAddresses,\\n address iErc20PaymentAddress,\\n uint32 iTotalSupply,\\n uint16 iRoyaltyFee,\\n bool soulboundCollection,\\n MintingType iMintingType\\n ) external payable;\\n\\n /// @notice A descriptive name for a collection of NFTs in this contract\\n function name() external view returns (string memory);\\n\\n /// @notice An abbreviated name for NFTs in this contract\\n /// @return the collection symbol\\n function symbol() external view returns (string memory);\\n\\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\\n /// 3986. The URI may point to a JSON file that conforms to the \\\"ERC721\\n /// Metadata JSON Schema\\\".\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable; \\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds) external payable; \\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) external payable; \\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(address[] memory to, uint256[] memory tokenIds, bool soulbound) external payable;\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale (\\n address to, \\n uint256[] memory tokenIds,\\n bool freeMinting, \\n uint256 customFee, \\n uint256 maxAmount,\\n uint256 amount, \\n bool soulbound,\\n bytes calldata signature) payable external;\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256);\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256);\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view returns (uint16);\\n\\n}\\n\\n\",\"keccak256\":\"0x7104e5126271dfd0c5a9f91d7536163908875a2fb5ec49144312552c2d3a78be\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCCommon.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"./IN2M_ERCLibrary.sol\\\";\\nimport \\\"./IN2M_ERCBase.sol\\\";\\n\\ninterface IN2M_ERCCommon is IN2M_ERCBase, IN2M_ERCLibrary {\\n /// @notice Returns the address of the current collection owner.\\n /// @return The address of the owner.\\n function owner() external view returns (address);\\n}\\n\\n\",\"keccak256\":\"0x9deab0dbd767c0228ac8bf1b6f0da5bf98dfb0733c603595afdf6df52ab06c1a\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCLibrary.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCLibrary is IN2M_ERCStorage {\\n function setAndRevealBaseURI(bytes32 baseURICIDHash) external;\\n function changeMintPrice(uint256 newMintPrice) external;\\n function contractURI() external view returns (string memory);\\n function setContractURI(bytes32 newContractURIMetadataCIDHash) external;\\n function setAffiliatesPercentageAndDiscount(uint16 userDiscount, uint16 affiliatePercentage, address affiliateAddress) external;\\n function affiliateWithdraw(address affiliate) external;\\n function withdrawERC20(address erc20Address) external;\\n function withdrawERC20Pro(uint256 signatureExpireDate, uint n2mFee, address erc20Address, bytes calldata signature) external;\\n function withdraw() external;\\n function withdrawPro(uint256 signatureExpireDate, uint256 n2mFee, bytes calldata signature) external;\\n function setReverseENSName(address rerverseResolver, string calldata collectionENSName) external;\\n function initializeAndSetReverseENSName(address resolver, string calldata collectionENSName) external;\\n function changePlaceholderImageCID(bytes32 newPlaceholderImageCIDHash) external;\\n function setPhase(SalePhase newPhase) external;\\n function setDropDate(uint256 dropDateTimestamp) external;\\n function setDropAndEndDate(uint256 dropDateTimestamp, uint256 endDateTimestamp) external;\\n function setMaxPerAddress(uint16 newMaxPerAddress) external;\\n function isOperatorFilterRegistryEnabled() external view returns (bool);\\n function enableOperatorFilterRegistry() external;\\n function disableOperatorFilterRegistry() external;\\n function collectionSize() external view returns (uint256);\\n function randomTickets(address affiliate) external view returns (uint amount, uint blockNumberToReveal);\\n function affiliatesInfo(address affiliate) external view returns (bool enabled, uint16 affiliatePercentage, uint16 userDiscount);\\n function pendingAffiliateBalance(address affiliate) external view returns (uint256);\\n function pendingTotalAffiliatesBalance() external view returns (uint256);\\n function royaltyFee() external view returns (uint256);\\n function withdrawnAmount() external view returns (uint256);\\n function withdrawnERC20Amount(address erc20) external view returns (uint256);\\n function erc20PaymentAddress() external view returns (address);\\n function currentPhase() external view returns (SalePhase);\\n function mintingType() external view returns (MintingType);\\n function saleDates() external view returns (uint256 dropDateTimestamp, uint256 endDateTimestamp);\\n function isOpen() external view returns (bool);\\n function ownerMaxRevenue() external view returns (uint256);\\n\\n}\\n\\n\",\"keccak256\":\"0x90526238166f24f25c8425e986231e1262ea2e4aae15a1ae357f3d711d29752d\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0x2a133c164f90171559802fac306a2477e33a87e33ed1e69384489571a1fe9acb\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"AddressFiltered(address)":[{"notice":"Operator address is filtered"}],"CantLowerCurrentPercentages()":[{"notice":"Can't lower current percentages"}],"CantRevealYetWaitABitToBeAbleToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets too soon"}],"CantSetBaseURIAndPlaceholderAtTheSameTime()":[{"notice":"Can't set BaseURI and Placeholder at the same time"}],"CollectionSoldOut()":[{"notice":"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"}],"ContractMetadataURIAlreadyFixed()":[{"notice":"Contract MetadataURI already fixed"}],"InputSizeMismatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidAmount()":[{"notice":"Error thrown when the input amount is not valid"}],"InvalidDropDate()":[{"notice":"Invalid drop date"}],"InvalidInputSizesDontMatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidMintFee()":[{"notice":"Error thrown when the sent amount is not valid"}],"InvalidMintFeeForFreeMinting()":[{"notice":"Error thrown when sending funds to a free minting"}],"InvalidMintingType()":[{"notice":"Invalid collection minting type for the current minting function"}],"InvalidPercentageOrDiscountValues()":[{"notice":"Invalid percentage or discount values"}],"InvalidPhaseWithoutDate()":[{"notice":"Invalid phase can't be set without giving a date, use the proper functions"}],"InvalidRevenuePercentage()":[{"notice":"The input revenue percentages are not valid"}],"InvalidTokenId()":[{"notice":"Error thrown when trying to mint a token with a given invalid id"}],"MaxPerAddressExceeded()":[{"notice":"The address exceeded the max per address amount"}],"MetadataAlreadyFixed()":[{"notice":"Metadata is already fixed. Can't change metadata once fixed"}],"NewBaseURICantBeEmpty()":[{"notice":"New BaseURI can't be empty"}],"NewPlaceholderCantBeEmpty()":[{"notice":"New Placeholder can't be empty"}],"NoBaseURINorPlaceholderSet()":[{"notice":"No BaseURI nor Placeholder set"}],"NonTransferrableSoulboundNFT()":[{"notice":"Can't transfer a Soulbound Token (SBT)"}],"NotEnoughAmountToMint()":[{"notice":"Error thrown when trying to mint more than the allowance to mint"}],"NothingToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets with no amount to redeem"}],"OnlyAffiliateOrN2M()":[{"notice":"Only the given affiliate or N2M can call this function"}],"OnlyOwnerOrN2M()":[{"notice":"Only owner of N2M can call this function"}],"PresaleInvalidMintingType()":[{"notice":"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"}],"PresaleNotOpen()":[{"notice":"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"}],"PublicSaleNotOpen()":[{"notice":"Error thrown when trying to mint and the collection current phase is not `open`"}],"ReentrancyGuard()":[{"notice":"Reentrancy Guard protection"}],"RoyaltyFeeTooHigh()":[{"notice":"Royalty fee can't be higher than 10%"}],"SaleFinished()":[{"notice":"Error thrown when trying to mint but the sale has already finished"}],"SignatureExpired()":[{"notice":"The signature has expired"}],"SignatureMismatch()":[{"notice":"The given signature doesn't match the input values"}],"TokenAlreadyMinted()":[{"notice":"Error thrown when trying to mint a token with a given id which is already minted"}],"TotalSupplyMustBeGreaterThanZero()":[{"notice":"Invalid input. Total supply must be greater than zero"}],"WaitUntilDropDate()":[{"notice":"Can't mint until specified drop date"}]},"events":{"AffiliateSell(address)":{"notice":"This event is emitted when a token is minted using an affiliate"}},"kind":"user","methods":{"airdropRandom(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`."},"airdropSequential(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`."},"airdropSpecify(address[],uint256[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`."},"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":{"notice":"To be called to create the collection. Can only be called once."},"isMetadataFixed()":{"notice":"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."},"maxPerAddress()":{"notice":"Max amount of NFTs to be hold per address."},"mint()":{"notice":"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256)":{"notice":"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256,address)":{"notice":"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintCustomURITo(address,bytes32,bool)":{"notice":"Mints one NFT to `to` address. Requires `minting type` to be `customURI`."},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"notice":"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale."},"mintPrice()":{"notice":"Returns the minting price of one NFT."},"mintRandomTo(address,uint256)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintRandomTo(address,uint256,address)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintSpecifyTo(address,uint256[])":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintSpecifyTo(address,uint256[],address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256)":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256,address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"owner()":{"notice":"Returns the address of the current collection owner."},"redeemRandom()":{"notice":"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs."},"totalSupply()":{"notice":"Returns the current total supply."}},"version":1}}},"contracts/interfaces/IN2M_ERCBase.sol":{"IN2M_ERCBase":{"abi":[{"inputs":[{"internalType":"address","name":"filtered","type":"address"}],"name":"AddressFiltered","type":"error"},{"inputs":[],"name":"CantLowerCurrentPercentages","type":"error"},{"inputs":[],"name":"CantRevealYetWaitABitToBeAbleToRedeem","type":"error"},{"inputs":[],"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","type":"error"},{"inputs":[],"name":"CollectionSoldOut","type":"error"},{"inputs":[],"name":"ContractMetadataURIAlreadyFixed","type":"error"},{"inputs":[],"name":"InputSizeMismatch","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidDropDate","type":"error"},{"inputs":[],"name":"InvalidInputSizesDontMatch","type":"error"},{"inputs":[],"name":"InvalidMintFee","type":"error"},{"inputs":[],"name":"InvalidMintFeeForFreeMinting","type":"error"},{"inputs":[],"name":"InvalidMintingType","type":"error"},{"inputs":[],"name":"InvalidPercentageOrDiscountValues","type":"error"},{"inputs":[],"name":"InvalidPhaseWithoutDate","type":"error"},{"inputs":[],"name":"InvalidRevenuePercentage","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MaxPerAddressExceeded","type":"error"},{"inputs":[],"name":"MetadataAlreadyFixed","type":"error"},{"inputs":[],"name":"NewBaseURICantBeEmpty","type":"error"},{"inputs":[],"name":"NewPlaceholderCantBeEmpty","type":"error"},{"inputs":[],"name":"NoBaseURINorPlaceholderSet","type":"error"},{"inputs":[],"name":"NonTransferrableSoulboundNFT","type":"error"},{"inputs":[],"name":"NotEnoughAmountToMint","type":"error"},{"inputs":[],"name":"NothingToRedeem","type":"error"},{"inputs":[],"name":"OnlyAffiliateOrN2M","type":"error"},{"inputs":[],"name":"OnlyOwnerOrN2M","type":"error"},{"inputs":[],"name":"PresaleInvalidMintingType","type":"error"},{"inputs":[],"name":"PresaleNotOpen","type":"error"},{"inputs":[],"name":"PublicSaleNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"RoyaltyFeeTooHigh","type":"error"},{"inputs":[],"name":"SaleFinished","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[],"name":"SignatureMismatch","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TotalSupplyMustBeGreaterThanZero","type":"error"},{"inputs":[],"name":"WaitUntilDropDate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"affiliate","type":"address"}],"name":"AffiliateSell","type":"event"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSequential","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSpecify","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"iMintPrice","type":"uint256"},{"internalType":"bytes32","name":"baseURICIDHash","type":"bytes32"},{"internalType":"bytes32","name":"placeholderImageCIDHash","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint16","name":"percentage","type":"uint16"}],"internalType":"struct IN2M_ERCStorage.RevenueAddress[]","name":"revenueAddresses","type":"tuple[]"},{"internalType":"address","name":"iErc20PaymentAddress","type":"address"},{"internalType":"uint32","name":"iTotalSupply","type":"uint32"},{"internalType":"uint16","name":"iRoyaltyFee","type":"uint16"},{"internalType":"bool","name":"soulboundCollection","type":"bool"},{"internalType":"enum IN2M_ERCStorage.MintingType","name":"iMintingType","type":"uint8"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"isMetadataFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"customURICIDHash","type":"bytes32"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"mintCustomURITo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"freeMinting","type":"bool"},{"internalType":"uint256","name":"customFee","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"soulbound","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mintPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeemRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","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":"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"}],"devdoc":{"events":{"AffiliateSell(address)":{"params":{"affiliate":"The affiliate address"}}},"kind":"dev","methods":{"airdropRandom(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSequential(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSpecify(address[],uint256[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"maxPerAddress()":{"returns":{"_0":"Max per address allowed."}},"mint(uint256)":{"params":{"amount":"The number of NFTs to mint"}},"mint(uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint"}},"mintCustomURITo(address,bytes32,bool)":{"params":{"customURICIDHash":"The CID of the given token.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The address of the NFTs receiver"}},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"params":{"amount":"Amount to mint.","customFee":"Zero is fee is different from `mintingPrice`.","freeMinting":"True is minting is free","maxAmount":"Max Amount to be minted with the given `signature`.","signature":"Valid `signature` for the presale/whitelist.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`."}},"mintPrice()":{"returns":{"_0":"Mint price for one NFT in native coin or ERC-20."}},"mintRandomTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintRandomTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintSpecifyTo(address,uint256[])":{"params":{"to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintSpecifyTo(address,uint256[],address)":{"params":{"affiliate":"The affiliate address","to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"supportsInterface(bytes4)":{"details":"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."},"symbol()":{"returns":{"_0":"the collection symbol"}},"tokenURI(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\"."},"totalSupply()":{"returns":{"_0":"Current total supply."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"airdropRandom(address[],bool)":"be172edf","airdropSequential(address[],bool)":"68fdda33","airdropSpecify(address[],uint256[],bool)":"71e6775f","initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":"5066e5c2","isMetadataFixed()":"0de77eb8","maxPerAddress()":"639814e0","mint()":"1249c58b","mint(uint256)":"a0712d68","mint(uint256,address)":"94bf804d","mintCustomURITo(address,bytes32,bool)":"6ad54240","mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":"9d13a5ba","mintPrice()":"6817c76c","mintRandomTo(address,uint256)":"1d7df191","mintRandomTo(address,uint256,address)":"fefa5d72","mintSpecifyTo(address,uint256[])":"4402d254","mintSpecifyTo(address,uint256[],address)":"4a50aa85","mintTo(address,uint256)":"449a52f8","mintTo(address,uint256,address)":"438b1b4b","n2mVersion()":"cb93c48f","name()":"06fdde03","redeemRandom()":"1ff4cc7d","royaltyInfo(uint256,uint256)":"2a55205a","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filtered\",\"type\":\"address\"}],\"name\":\"AddressFiltered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantLowerCurrentPercentages\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantRevealYetWaitABitToBeAbleToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSetBaseURIAndPlaceholderAtTheSameTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CollectionSoldOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractMetadataURIAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputSizeMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDropDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputSizesDontMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFeeForFreeMinting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercentageOrDiscountValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPhaseWithoutDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevenuePercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerAddressExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetadataAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBaseURICantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPlaceholderCantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseURINorPlaceholderSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonTransferrableSoulboundNFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughAmountToMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAffiliateOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOwnerOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleInvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PublicSaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoyaltyFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaleFinished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyMinted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WaitUntilDropDate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"AffiliateSell\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSequential\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSpecify\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"iMintPrice\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"baseURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"placeholderImageCIDHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"percentage\",\"type\":\"uint16\"}],\"internalType\":\"struct IN2M_ERCStorage.RevenueAddress[]\",\"name\":\"revenueAddresses\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"iErc20PaymentAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"iTotalSupply\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"iRoyaltyFee\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"soulboundCollection\",\"type\":\"bool\"},{\"internalType\":\"enum IN2M_ERCStorage.MintingType\",\"name\":\"iMintingType\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isMetadataFixed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPerAddress\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"customURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"mintCustomURITo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"freeMinting\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"customFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"mintPresale\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"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\"}],\"devdoc\":{\"events\":{\"AffiliateSell(address)\":{\"params\":{\"affiliate\":\"The affiliate address\"}}},\"kind\":\"dev\",\"methods\":{\"airdropRandom(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSequential(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSpecify(address[],uint256[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"maxPerAddress()\":{\"returns\":{\"_0\":\"Max per address allowed.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint\"}},\"mint(uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint\"}},\"mintCustomURITo(address,bytes32,bool)\":{\"params\":{\"customURICIDHash\":\"The CID of the given token.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The address of the NFTs receiver\"}},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"amount\":\"Amount to mint.\",\"customFee\":\"Zero is fee is different from `mintingPrice`.\",\"freeMinting\":\"True is minting is free\",\"maxAmount\":\"Max Amount to be minted with the given `signature`.\",\"signature\":\"Valid `signature` for the presale/whitelist.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\"}},\"mintPrice()\":{\"returns\":{\"_0\":\"Mint price for one NFT in native coin or ERC-20.\"}},\"mintRandomTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintRandomTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintSpecifyTo(address,uint256[])\":{\"params\":{\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintSpecifyTo(address,uint256[],address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"supportsInterface(bytes4)\":{\"details\":\"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.\"},\"symbol()\":{\"returns\":{\"_0\":\"the collection symbol\"}},\"tokenURI(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \\\"ERC721 Metadata JSON Schema\\\".\"},\"totalSupply()\":{\"returns\":{\"_0\":\"Current total supply.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AddressFiltered(address)\":[{\"notice\":\"Operator address is filtered\"}],\"CantLowerCurrentPercentages()\":[{\"notice\":\"Can't lower current percentages\"}],\"CantRevealYetWaitABitToBeAbleToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets too soon\"}],\"CantSetBaseURIAndPlaceholderAtTheSameTime()\":[{\"notice\":\"Can't set BaseURI and Placeholder at the same time\"}],\"CollectionSoldOut()\":[{\"notice\":\"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\"}],\"ContractMetadataURIAlreadyFixed()\":[{\"notice\":\"Contract MetadataURI already fixed\"}],\"InputSizeMismatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidAmount()\":[{\"notice\":\"Error thrown when the input amount is not valid\"}],\"InvalidDropDate()\":[{\"notice\":\"Invalid drop date\"}],\"InvalidInputSizesDontMatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidMintFee()\":[{\"notice\":\"Error thrown when the sent amount is not valid\"}],\"InvalidMintFeeForFreeMinting()\":[{\"notice\":\"Error thrown when sending funds to a free minting\"}],\"InvalidMintingType()\":[{\"notice\":\"Invalid collection minting type for the current minting function\"}],\"InvalidPercentageOrDiscountValues()\":[{\"notice\":\"Invalid percentage or discount values\"}],\"InvalidPhaseWithoutDate()\":[{\"notice\":\"Invalid phase can't be set without giving a date, use the proper functions\"}],\"InvalidRevenuePercentage()\":[{\"notice\":\"The input revenue percentages are not valid\"}],\"InvalidTokenId()\":[{\"notice\":\"Error thrown when trying to mint a token with a given invalid id\"}],\"MaxPerAddressExceeded()\":[{\"notice\":\"The address exceeded the max per address amount\"}],\"MetadataAlreadyFixed()\":[{\"notice\":\"Metadata is already fixed. Can't change metadata once fixed\"}],\"NewBaseURICantBeEmpty()\":[{\"notice\":\"New BaseURI can't be empty\"}],\"NewPlaceholderCantBeEmpty()\":[{\"notice\":\"New Placeholder can't be empty\"}],\"NoBaseURINorPlaceholderSet()\":[{\"notice\":\"No BaseURI nor Placeholder set\"}],\"NonTransferrableSoulboundNFT()\":[{\"notice\":\"Can't transfer a Soulbound Token (SBT)\"}],\"NotEnoughAmountToMint()\":[{\"notice\":\"Error thrown when trying to mint more than the allowance to mint\"}],\"NothingToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets with no amount to redeem\"}],\"OnlyAffiliateOrN2M()\":[{\"notice\":\"Only the given affiliate or N2M can call this function\"}],\"OnlyOwnerOrN2M()\":[{\"notice\":\"Only owner of N2M can call this function\"}],\"PresaleInvalidMintingType()\":[{\"notice\":\"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\"}],\"PresaleNotOpen()\":[{\"notice\":\"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\"}],\"PublicSaleNotOpen()\":[{\"notice\":\"Error thrown when trying to mint and the collection current phase is not `open`\"}],\"ReentrancyGuard()\":[{\"notice\":\"Reentrancy Guard protection\"}],\"RoyaltyFeeTooHigh()\":[{\"notice\":\"Royalty fee can't be higher than 10%\"}],\"SaleFinished()\":[{\"notice\":\"Error thrown when trying to mint but the sale has already finished\"}],\"SignatureExpired()\":[{\"notice\":\"The signature has expired\"}],\"SignatureMismatch()\":[{\"notice\":\"The given signature doesn't match the input values\"}],\"TokenAlreadyMinted()\":[{\"notice\":\"Error thrown when trying to mint a token with a given id which is already minted\"}],\"TotalSupplyMustBeGreaterThanZero()\":[{\"notice\":\"Invalid input. Total supply must be greater than zero\"}],\"WaitUntilDropDate()\":[{\"notice\":\"Can't mint until specified drop date\"}]},\"events\":{\"AffiliateSell(address)\":{\"notice\":\"This event is emitted when a token is minted using an affiliate\"}},\"kind\":\"user\",\"methods\":{\"airdropRandom(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\"},\"airdropSequential(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\"},\"airdropSpecify(address[],uint256[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\"},\"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)\":{\"notice\":\"To be called to create the collection. Can only be called once.\"},\"isMetadataFixed()\":{\"notice\":\"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\"},\"maxPerAddress()\":{\"notice\":\"Max amount of NFTs to be hold per address.\"},\"mint()\":{\"notice\":\"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256,address)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintCustomURITo(address,bytes32,bool)\":{\"notice\":\"Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\"},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\"},\"mintPrice()\":{\"notice\":\"Returns the minting price of one NFT.\"},\"mintRandomTo(address,uint256)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintRandomTo(address,uint256,address)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintSpecifyTo(address,uint256[])\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintSpecifyTo(address,uint256[],address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256)\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256,address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"redeemRandom()\":{\"notice\":\"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"totalSupply()\":{\"notice\":\"Returns the current total supply.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IN2M_ERCBase.sol\":\"IN2M_ERCBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n */\\n function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n external\\n view\\n returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"contracts/interfaces/IN2M_ERCBase.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCBase is IERC2981Upgradeable, IN2M_ERCStorage {\\n /// @notice To be called to create the collection. Can only be called once.\\n function initialize\\n (\\n string memory tokenName,\\n string memory tokenSymbol,\\n uint256 iMintPrice,\\n bytes32 baseURICIDHash,\\n bytes32 placeholderImageCIDHash,\\n RevenueAddress[] calldata revenueAddresses,\\n address iErc20PaymentAddress,\\n uint32 iTotalSupply,\\n uint16 iRoyaltyFee,\\n bool soulboundCollection,\\n MintingType iMintingType\\n ) external payable;\\n\\n /// @notice A descriptive name for a collection of NFTs in this contract\\n function name() external view returns (string memory);\\n\\n /// @notice An abbreviated name for NFTs in this contract\\n /// @return the collection symbol\\n function symbol() external view returns (string memory);\\n\\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\\n /// 3986. The URI may point to a JSON file that conforms to the \\\"ERC721\\n /// Metadata JSON Schema\\\".\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable; \\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds) external payable; \\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) external payable; \\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(address[] memory to, uint256[] memory tokenIds, bool soulbound) external payable;\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale (\\n address to, \\n uint256[] memory tokenIds,\\n bool freeMinting, \\n uint256 customFee, \\n uint256 maxAmount,\\n uint256 amount, \\n bool soulbound,\\n bytes calldata signature) payable external;\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256);\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256);\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view returns (uint16);\\n\\n}\\n\\n\",\"keccak256\":\"0x7104e5126271dfd0c5a9f91d7536163908875a2fb5ec49144312552c2d3a78be\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0x2a133c164f90171559802fac306a2477e33a87e33ed1e69384489571a1fe9acb\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"AddressFiltered(address)":[{"notice":"Operator address is filtered"}],"CantLowerCurrentPercentages()":[{"notice":"Can't lower current percentages"}],"CantRevealYetWaitABitToBeAbleToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets too soon"}],"CantSetBaseURIAndPlaceholderAtTheSameTime()":[{"notice":"Can't set BaseURI and Placeholder at the same time"}],"CollectionSoldOut()":[{"notice":"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"}],"ContractMetadataURIAlreadyFixed()":[{"notice":"Contract MetadataURI already fixed"}],"InputSizeMismatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidAmount()":[{"notice":"Error thrown when the input amount is not valid"}],"InvalidDropDate()":[{"notice":"Invalid drop date"}],"InvalidInputSizesDontMatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidMintFee()":[{"notice":"Error thrown when the sent amount is not valid"}],"InvalidMintFeeForFreeMinting()":[{"notice":"Error thrown when sending funds to a free minting"}],"InvalidMintingType()":[{"notice":"Invalid collection minting type for the current minting function"}],"InvalidPercentageOrDiscountValues()":[{"notice":"Invalid percentage or discount values"}],"InvalidPhaseWithoutDate()":[{"notice":"Invalid phase can't be set without giving a date, use the proper functions"}],"InvalidRevenuePercentage()":[{"notice":"The input revenue percentages are not valid"}],"InvalidTokenId()":[{"notice":"Error thrown when trying to mint a token with a given invalid id"}],"MaxPerAddressExceeded()":[{"notice":"The address exceeded the max per address amount"}],"MetadataAlreadyFixed()":[{"notice":"Metadata is already fixed. Can't change metadata once fixed"}],"NewBaseURICantBeEmpty()":[{"notice":"New BaseURI can't be empty"}],"NewPlaceholderCantBeEmpty()":[{"notice":"New Placeholder can't be empty"}],"NoBaseURINorPlaceholderSet()":[{"notice":"No BaseURI nor Placeholder set"}],"NonTransferrableSoulboundNFT()":[{"notice":"Can't transfer a Soulbound Token (SBT)"}],"NotEnoughAmountToMint()":[{"notice":"Error thrown when trying to mint more than the allowance to mint"}],"NothingToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets with no amount to redeem"}],"OnlyAffiliateOrN2M()":[{"notice":"Only the given affiliate or N2M can call this function"}],"OnlyOwnerOrN2M()":[{"notice":"Only owner of N2M can call this function"}],"PresaleInvalidMintingType()":[{"notice":"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"}],"PresaleNotOpen()":[{"notice":"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"}],"PublicSaleNotOpen()":[{"notice":"Error thrown when trying to mint and the collection current phase is not `open`"}],"ReentrancyGuard()":[{"notice":"Reentrancy Guard protection"}],"RoyaltyFeeTooHigh()":[{"notice":"Royalty fee can't be higher than 10%"}],"SaleFinished()":[{"notice":"Error thrown when trying to mint but the sale has already finished"}],"SignatureExpired()":[{"notice":"The signature has expired"}],"SignatureMismatch()":[{"notice":"The given signature doesn't match the input values"}],"TokenAlreadyMinted()":[{"notice":"Error thrown when trying to mint a token with a given id which is already minted"}],"TotalSupplyMustBeGreaterThanZero()":[{"notice":"Invalid input. Total supply must be greater than zero"}],"WaitUntilDropDate()":[{"notice":"Can't mint until specified drop date"}]},"events":{"AffiliateSell(address)":{"notice":"This event is emitted when a token is minted using an affiliate"}},"kind":"user","methods":{"airdropRandom(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`."},"airdropSequential(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`."},"airdropSpecify(address[],uint256[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`."},"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":{"notice":"To be called to create the collection. Can only be called once."},"isMetadataFixed()":{"notice":"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."},"maxPerAddress()":{"notice":"Max amount of NFTs to be hold per address."},"mint()":{"notice":"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256)":{"notice":"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256,address)":{"notice":"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintCustomURITo(address,bytes32,bool)":{"notice":"Mints one NFT to `to` address. Requires `minting type` to be `customURI`."},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"notice":"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale."},"mintPrice()":{"notice":"Returns the minting price of one NFT."},"mintRandomTo(address,uint256)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintRandomTo(address,uint256,address)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintSpecifyTo(address,uint256[])":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintSpecifyTo(address,uint256[],address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256)":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256,address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"redeemRandom()":{"notice":"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs."},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"},"tokenURI(uint256)":{"notice":"A distinct Uniform Resource Identifier (URI) for a given asset."},"totalSupply()":{"notice":"Returns the current total supply."}},"version":1}}},"contracts/interfaces/IN2M_ERCCommon.sol":{"IN2M_ERCCommon":{"abi":[{"inputs":[{"internalType":"address","name":"filtered","type":"address"}],"name":"AddressFiltered","type":"error"},{"inputs":[],"name":"CantLowerCurrentPercentages","type":"error"},{"inputs":[],"name":"CantRevealYetWaitABitToBeAbleToRedeem","type":"error"},{"inputs":[],"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","type":"error"},{"inputs":[],"name":"CollectionSoldOut","type":"error"},{"inputs":[],"name":"ContractMetadataURIAlreadyFixed","type":"error"},{"inputs":[],"name":"InputSizeMismatch","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidDropDate","type":"error"},{"inputs":[],"name":"InvalidInputSizesDontMatch","type":"error"},{"inputs":[],"name":"InvalidMintFee","type":"error"},{"inputs":[],"name":"InvalidMintFeeForFreeMinting","type":"error"},{"inputs":[],"name":"InvalidMintingType","type":"error"},{"inputs":[],"name":"InvalidPercentageOrDiscountValues","type":"error"},{"inputs":[],"name":"InvalidPhaseWithoutDate","type":"error"},{"inputs":[],"name":"InvalidRevenuePercentage","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MaxPerAddressExceeded","type":"error"},{"inputs":[],"name":"MetadataAlreadyFixed","type":"error"},{"inputs":[],"name":"NewBaseURICantBeEmpty","type":"error"},{"inputs":[],"name":"NewPlaceholderCantBeEmpty","type":"error"},{"inputs":[],"name":"NoBaseURINorPlaceholderSet","type":"error"},{"inputs":[],"name":"NonTransferrableSoulboundNFT","type":"error"},{"inputs":[],"name":"NotEnoughAmountToMint","type":"error"},{"inputs":[],"name":"NothingToRedeem","type":"error"},{"inputs":[],"name":"OnlyAffiliateOrN2M","type":"error"},{"inputs":[],"name":"OnlyOwnerOrN2M","type":"error"},{"inputs":[],"name":"PresaleInvalidMintingType","type":"error"},{"inputs":[],"name":"PresaleNotOpen","type":"error"},{"inputs":[],"name":"PublicSaleNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"RoyaltyFeeTooHigh","type":"error"},{"inputs":[],"name":"SaleFinished","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[],"name":"SignatureMismatch","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TotalSupplyMustBeGreaterThanZero","type":"error"},{"inputs":[],"name":"WaitUntilDropDate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"affiliate","type":"address"}],"name":"AffiliateSell","type":"event"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"affiliateWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"affiliatesInfo","outputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint16","name":"affiliatePercentage","type":"uint16"},{"internalType":"uint16","name":"userDiscount","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSequential","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"airdropSpecify","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMintPrice","type":"uint256"}],"name":"changeMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newPlaceholderImageCIDHash","type":"bytes32"}],"name":"changePlaceholderImageCID","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collectionSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPhase","outputs":[{"internalType":"enum IN2M_ERCStorage.SalePhase","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableOperatorFilterRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableOperatorFilterRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"erc20PaymentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"iMintPrice","type":"uint256"},{"internalType":"bytes32","name":"baseURICIDHash","type":"bytes32"},{"internalType":"bytes32","name":"placeholderImageCIDHash","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint16","name":"percentage","type":"uint16"}],"internalType":"struct IN2M_ERCStorage.RevenueAddress[]","name":"revenueAddresses","type":"tuple[]"},{"internalType":"address","name":"iErc20PaymentAddress","type":"address"},{"internalType":"uint32","name":"iTotalSupply","type":"uint32"},{"internalType":"uint16","name":"iRoyaltyFee","type":"uint16"},{"internalType":"bool","name":"soulboundCollection","type":"bool"},{"internalType":"enum IN2M_ERCStorage.MintingType","name":"iMintingType","type":"uint8"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"resolver","type":"address"},{"internalType":"string","name":"collectionENSName","type":"string"}],"name":"initializeAndSetReverseENSName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isMetadataFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOperatorFilterRegistryEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"customURICIDHash","type":"bytes32"},{"internalType":"bool","name":"soulbound","type":"bool"}],"name":"mintCustomURITo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"freeMinting","type":"bool"},{"internalType":"uint256","name":"customFee","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"soulbound","type":"bool"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mintPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintRandomTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintSpecifyTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintingType","outputs":[{"internalType":"enum IN2M_ERCStorage.MintingType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerMaxRevenue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"pendingAffiliateBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingTotalAffiliatesBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"randomTickets","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"blockNumberToReveal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeemRandom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"royaltyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleDates","outputs":[{"internalType":"uint256","name":"dropDateTimestamp","type":"uint256"},{"internalType":"uint256","name":"endDateTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"userDiscount","type":"uint16"},{"internalType":"uint16","name":"affiliatePercentage","type":"uint16"},{"internalType":"address","name":"affiliateAddress","type":"address"}],"name":"setAffiliatesPercentageAndDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"baseURICIDHash","type":"bytes32"}],"name":"setAndRevealBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newContractURIMetadataCIDHash","type":"bytes32"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dropDateTimestamp","type":"uint256"},{"internalType":"uint256","name":"endDateTimestamp","type":"uint256"}],"name":"setDropAndEndDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dropDateTimestamp","type":"uint256"}],"name":"setDropDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newMaxPerAddress","type":"uint16"}],"name":"setMaxPerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IN2M_ERCStorage.SalePhase","name":"newPhase","type":"uint8"}],"name":"setPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rerverseResolver","type":"address"},{"internalType":"string","name":"collectionENSName","type":"string"}],"name":"setReverseENSName","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":"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":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"erc20Address","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"signatureExpireDate","type":"uint256"},{"internalType":"uint256","name":"n2mFee","type":"uint256"},{"internalType":"address","name":"erc20Address","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdrawERC20Pro","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"signatureExpireDate","type":"uint256"},{"internalType":"uint256","name":"n2mFee","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdrawPro","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"erc20","type":"address"}],"name":"withdrawnERC20Amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"events":{"AffiliateSell(address)":{"params":{"affiliate":"The affiliate address"}}},"kind":"dev","methods":{"airdropRandom(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSequential(address[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers"}},"airdropSpecify(address[],uint256[],bool)":{"params":{"soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"maxPerAddress()":{"returns":{"_0":"Max per address allowed."}},"mint(uint256)":{"params":{"amount":"The number of NFTs to mint"}},"mint(uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint"}},"mintCustomURITo(address,bytes32,bool)":{"params":{"customURICIDHash":"The CID of the given token.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The address of the NFTs receiver"}},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"params":{"amount":"Amount to mint.","customFee":"Zero is fee is different from `mintingPrice`.","freeMinting":"True is minting is free","maxAmount":"Max Amount to be minted with the given `signature`.","signature":"Valid `signature` for the presale/whitelist.","soulbound":"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.","to":"The addresses of the NFTs receivers","tokenIds":"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`."}},"mintPrice()":{"returns":{"_0":"Mint price for one NFT in native coin or ERC-20."}},"mintRandomTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintRandomTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintSpecifyTo(address,uint256[])":{"params":{"to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintSpecifyTo(address,uint256[],address)":{"params":{"affiliate":"The affiliate address","to":"The address of the NFTs receiver","tokenIds":"An array of the specified tokens. They must not be minted, otherwise, it will revert."}},"mintTo(address,uint256)":{"params":{"amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"mintTo(address,uint256,address)":{"params":{"affiliate":"The affiliate address","amount":"The number of NFTs to mint ","to":"The address of the NFTs receiver"}},"owner()":{"returns":{"_0":"The address of the owner."}},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"supportsInterface(bytes4)":{"details":"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."},"symbol()":{"returns":{"_0":"the collection symbol"}},"tokenURI(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\"."},"totalSupply()":{"returns":{"_0":"Current total supply."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"affiliateWithdraw(address)":"35f0aa94","affiliatesInfo(address)":"1e7efe90","airdropRandom(address[],bool)":"be172edf","airdropSequential(address[],bool)":"68fdda33","airdropSpecify(address[],uint256[],bool)":"71e6775f","changeMintPrice(uint256)":"3fd17366","changePlaceholderImageCID(bytes32)":"8a9feb73","collectionSize()":"45c0f533","contractURI()":"e8a3d485","currentPhase()":"055ad42e","disableOperatorFilterRegistry()":"71ea200e","enableOperatorFilterRegistry()":"95720d1f","erc20PaymentAddress()":"cca7f32e","initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":"5066e5c2","initializeAndSetReverseENSName(address,string)":"bbfc4e4a","isMetadataFixed()":"0de77eb8","isOpen()":"47535d7b","isOperatorFilterRegistryEnabled()":"46ee5869","maxPerAddress()":"639814e0","mint()":"1249c58b","mint(uint256)":"a0712d68","mint(uint256,address)":"94bf804d","mintCustomURITo(address,bytes32,bool)":"6ad54240","mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":"9d13a5ba","mintPrice()":"6817c76c","mintRandomTo(address,uint256)":"1d7df191","mintRandomTo(address,uint256,address)":"fefa5d72","mintSpecifyTo(address,uint256[])":"4402d254","mintSpecifyTo(address,uint256[],address)":"4a50aa85","mintTo(address,uint256)":"449a52f8","mintTo(address,uint256,address)":"438b1b4b","mintingType()":"f0bba09f","n2mVersion()":"cb93c48f","name()":"06fdde03","owner()":"8da5cb5b","ownerMaxRevenue()":"53ff5046","pendingAffiliateBalance(address)":"54059640","pendingTotalAffiliatesBalance()":"d3f1157b","randomTickets(address)":"106769f2","redeemRandom()":"1ff4cc7d","royaltyFee()":"b8997a97","royaltyInfo(uint256,uint256)":"2a55205a","saleDates()":"116ae64d","setAffiliatesPercentageAndDiscount(uint16,uint16,address)":"c9aa1118","setAndRevealBaseURI(bytes32)":"8da62a17","setContractURI(bytes32)":"227a722e","setDropAndEndDate(uint256,uint256)":"baaafbb5","setDropDate(uint256)":"0f22ea1f","setMaxPerAddress(uint16)":"b08b27a6","setPhase(uint8)":"c03afb59","setReverseENSName(address,string)":"7e124f46","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","withdraw()":"3ccfd60b","withdrawERC20(address)":"f4f3b200","withdrawERC20Pro(uint256,uint256,address,bytes)":"372262b9","withdrawPro(uint256,uint256,bytes)":"c54993da","withdrawnAmount()":"830de4b1","withdrawnERC20Amount(address)":"8e5b37f3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filtered\",\"type\":\"address\"}],\"name\":\"AddressFiltered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantLowerCurrentPercentages\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantRevealYetWaitABitToBeAbleToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSetBaseURIAndPlaceholderAtTheSameTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CollectionSoldOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractMetadataURIAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputSizeMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDropDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputSizesDontMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFeeForFreeMinting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercentageOrDiscountValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPhaseWithoutDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevenuePercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerAddressExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetadataAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBaseURICantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPlaceholderCantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseURINorPlaceholderSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonTransferrableSoulboundNFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughAmountToMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAffiliateOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOwnerOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleInvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PublicSaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoyaltyFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaleFinished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyMinted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WaitUntilDropDate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"AffiliateSell\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"affiliateWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"affiliatesInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"affiliatePercentage\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"userDiscount\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSequential\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"to\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"airdropSpecify\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newMintPrice\",\"type\":\"uint256\"}],\"name\":\"changeMintPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newPlaceholderImageCIDHash\",\"type\":\"bytes32\"}],\"name\":\"changePlaceholderImageCID\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentPhase\",\"outputs\":[{\"internalType\":\"enum IN2M_ERCStorage.SalePhase\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableOperatorFilterRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableOperatorFilterRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20PaymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"iMintPrice\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"baseURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"placeholderImageCIDHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"percentage\",\"type\":\"uint16\"}],\"internalType\":\"struct IN2M_ERCStorage.RevenueAddress[]\",\"name\":\"revenueAddresses\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"iErc20PaymentAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"iTotalSupply\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"iRoyaltyFee\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"soulboundCollection\",\"type\":\"bool\"},{\"internalType\":\"enum IN2M_ERCStorage.MintingType\",\"name\":\"iMintingType\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"collectionENSName\",\"type\":\"string\"}],\"name\":\"initializeAndSetReverseENSName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isMetadataFixed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isOperatorFilterRegistryEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPerAddress\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"customURICIDHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"}],\"name\":\"mintCustomURITo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"freeMinting\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"customFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"soulbound\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"mintPresale\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintRandomTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintSpecifyTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintingType\",\"outputs\":[{\"internalType\":\"enum IN2M_ERCStorage.MintingType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ownerMaxRevenue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"pendingAffiliateBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingTotalAffiliatesBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"randomTickets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumberToReveal\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemRandom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"saleDates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dropDateTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endDateTimestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"userDiscount\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"affiliatePercentage\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"affiliateAddress\",\"type\":\"address\"}],\"name\":\"setAffiliatesPercentageAndDiscount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"baseURICIDHash\",\"type\":\"bytes32\"}],\"name\":\"setAndRevealBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newContractURIMetadataCIDHash\",\"type\":\"bytes32\"}],\"name\":\"setContractURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dropDateTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endDateTimestamp\",\"type\":\"uint256\"}],\"name\":\"setDropAndEndDate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dropDateTimestamp\",\"type\":\"uint256\"}],\"name\":\"setDropDate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newMaxPerAddress\",\"type\":\"uint16\"}],\"name\":\"setMaxPerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IN2M_ERCStorage.SalePhase\",\"name\":\"newPhase\",\"type\":\"uint8\"}],\"name\":\"setPhase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rerverseResolver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"collectionENSName\",\"type\":\"string\"}],\"name\":\"setReverseENSName\",\"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\":\"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\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"}],\"name\":\"withdrawERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signatureExpireDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n2mFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"withdrawERC20Pro\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signatureExpireDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n2mFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"withdrawPro\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawnAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20\",\"type\":\"address\"}],\"name\":\"withdrawnERC20Amount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AffiliateSell(address)\":{\"params\":{\"affiliate\":\"The affiliate address\"}}},\"kind\":\"dev\",\"methods\":{\"airdropRandom(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSequential(address[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\"}},\"airdropSpecify(address[],uint256[],bool)\":{\"params\":{\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"maxPerAddress()\":{\"returns\":{\"_0\":\"Max per address allowed.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint\"}},\"mint(uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint\"}},\"mintCustomURITo(address,bytes32,bool)\":{\"params\":{\"customURICIDHash\":\"The CID of the given token.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The address of the NFTs receiver\"}},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"amount\":\"Amount to mint.\",\"customFee\":\"Zero is fee is different from `mintingPrice`.\",\"freeMinting\":\"True is minting is free\",\"maxAmount\":\"Max Amount to be minted with the given `signature`.\",\"signature\":\"Valid `signature` for the presale/whitelist.\",\"soulbound\":\"True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\",\"to\":\"The addresses of the NFTs receivers\",\"tokenIds\":\"An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\"}},\"mintPrice()\":{\"returns\":{\"_0\":\"Mint price for one NFT in native coin or ERC-20.\"}},\"mintRandomTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintRandomTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintSpecifyTo(address,uint256[])\":{\"params\":{\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintSpecifyTo(address,uint256[],address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"to\":\"The address of the NFTs receiver\",\"tokenIds\":\"An array of the specified tokens. They must not be minted, otherwise, it will revert.\"}},\"mintTo(address,uint256)\":{\"params\":{\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"mintTo(address,uint256,address)\":{\"params\":{\"affiliate\":\"The affiliate address\",\"amount\":\"The number of NFTs to mint \",\"to\":\"The address of the NFTs receiver\"}},\"owner()\":{\"returns\":{\"_0\":\"The address of the owner.\"}},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"supportsInterface(bytes4)\":{\"details\":\"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.\"},\"symbol()\":{\"returns\":{\"_0\":\"the collection symbol\"}},\"tokenURI(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \\\"ERC721 Metadata JSON Schema\\\".\"},\"totalSupply()\":{\"returns\":{\"_0\":\"Current total supply.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AddressFiltered(address)\":[{\"notice\":\"Operator address is filtered\"}],\"CantLowerCurrentPercentages()\":[{\"notice\":\"Can't lower current percentages\"}],\"CantRevealYetWaitABitToBeAbleToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets too soon\"}],\"CantSetBaseURIAndPlaceholderAtTheSameTime()\":[{\"notice\":\"Can't set BaseURI and Placeholder at the same time\"}],\"CollectionSoldOut()\":[{\"notice\":\"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\"}],\"ContractMetadataURIAlreadyFixed()\":[{\"notice\":\"Contract MetadataURI already fixed\"}],\"InputSizeMismatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidAmount()\":[{\"notice\":\"Error thrown when the input amount is not valid\"}],\"InvalidDropDate()\":[{\"notice\":\"Invalid drop date\"}],\"InvalidInputSizesDontMatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidMintFee()\":[{\"notice\":\"Error thrown when the sent amount is not valid\"}],\"InvalidMintFeeForFreeMinting()\":[{\"notice\":\"Error thrown when sending funds to a free minting\"}],\"InvalidMintingType()\":[{\"notice\":\"Invalid collection minting type for the current minting function\"}],\"InvalidPercentageOrDiscountValues()\":[{\"notice\":\"Invalid percentage or discount values\"}],\"InvalidPhaseWithoutDate()\":[{\"notice\":\"Invalid phase can't be set without giving a date, use the proper functions\"}],\"InvalidRevenuePercentage()\":[{\"notice\":\"The input revenue percentages are not valid\"}],\"InvalidTokenId()\":[{\"notice\":\"Error thrown when trying to mint a token with a given invalid id\"}],\"MaxPerAddressExceeded()\":[{\"notice\":\"The address exceeded the max per address amount\"}],\"MetadataAlreadyFixed()\":[{\"notice\":\"Metadata is already fixed. Can't change metadata once fixed\"}],\"NewBaseURICantBeEmpty()\":[{\"notice\":\"New BaseURI can't be empty\"}],\"NewPlaceholderCantBeEmpty()\":[{\"notice\":\"New Placeholder can't be empty\"}],\"NoBaseURINorPlaceholderSet()\":[{\"notice\":\"No BaseURI nor Placeholder set\"}],\"NonTransferrableSoulboundNFT()\":[{\"notice\":\"Can't transfer a Soulbound Token (SBT)\"}],\"NotEnoughAmountToMint()\":[{\"notice\":\"Error thrown when trying to mint more than the allowance to mint\"}],\"NothingToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets with no amount to redeem\"}],\"OnlyAffiliateOrN2M()\":[{\"notice\":\"Only the given affiliate or N2M can call this function\"}],\"OnlyOwnerOrN2M()\":[{\"notice\":\"Only owner of N2M can call this function\"}],\"PresaleInvalidMintingType()\":[{\"notice\":\"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\"}],\"PresaleNotOpen()\":[{\"notice\":\"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\"}],\"PublicSaleNotOpen()\":[{\"notice\":\"Error thrown when trying to mint and the collection current phase is not `open`\"}],\"ReentrancyGuard()\":[{\"notice\":\"Reentrancy Guard protection\"}],\"RoyaltyFeeTooHigh()\":[{\"notice\":\"Royalty fee can't be higher than 10%\"}],\"SaleFinished()\":[{\"notice\":\"Error thrown when trying to mint but the sale has already finished\"}],\"SignatureExpired()\":[{\"notice\":\"The signature has expired\"}],\"SignatureMismatch()\":[{\"notice\":\"The given signature doesn't match the input values\"}],\"TokenAlreadyMinted()\":[{\"notice\":\"Error thrown when trying to mint a token with a given id which is already minted\"}],\"TotalSupplyMustBeGreaterThanZero()\":[{\"notice\":\"Invalid input. Total supply must be greater than zero\"}],\"WaitUntilDropDate()\":[{\"notice\":\"Can't mint until specified drop date\"}]},\"events\":{\"AffiliateSell(address)\":{\"notice\":\"This event is emitted when a token is minted using an affiliate\"}},\"kind\":\"user\",\"methods\":{\"airdropRandom(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\"},\"airdropSequential(address[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\"},\"airdropSpecify(address[],uint256[],bool)\":{\"notice\":\"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\"},\"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)\":{\"notice\":\"To be called to create the collection. Can only be called once.\"},\"isMetadataFixed()\":{\"notice\":\"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\"},\"maxPerAddress()\":{\"notice\":\"Max amount of NFTs to be hold per address.\"},\"mint()\":{\"notice\":\"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mint(uint256,address)\":{\"notice\":\"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintCustomURITo(address,bytes32,bool)\":{\"notice\":\"Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\"},\"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\"},\"mintPrice()\":{\"notice\":\"Returns the minting price of one NFT.\"},\"mintRandomTo(address,uint256)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintRandomTo(address,uint256,address)\":{\"notice\":\"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\"},\"mintSpecifyTo(address,uint256[])\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintSpecifyTo(address,uint256[],address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256)\":{\"notice\":\"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"mintTo(address,uint256,address)\":{\"notice\":\"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"owner()\":{\"notice\":\"Returns the address of the current collection owner.\"},\"redeemRandom()\":{\"notice\":\"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"totalSupply()\":{\"notice\":\"Returns the current total supply.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IN2M_ERCCommon.sol\":\"IN2M_ERCCommon\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/introspection/IERC165Upgradeable.sol\\\";\\n\\n/**\\n * @dev Interface for the NFT Royalty Standard.\\n *\\n * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal\\n * support for royalty payments across all NFT marketplaces and ecosystem participants.\\n *\\n * _Available since v4.5._\\n */\\ninterface IERC2981Upgradeable is IERC165Upgradeable {\\n /**\\n * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of\\n * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\\n */\\n function royaltyInfo(uint256 tokenId, uint256 salePrice)\\n external\\n view\\n returns (address receiver, uint256 royaltyAmount);\\n}\\n\",\"keccak256\":\"0xa8ff557539dcfed5706eddde2aa929e06bb1764e71aa8c1048a78970bf3ca37d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"contracts/interfaces/IN2M_ERCBase.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol\\\";\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCBase is IERC2981Upgradeable, IN2M_ERCStorage {\\n /// @notice To be called to create the collection. Can only be called once.\\n function initialize\\n (\\n string memory tokenName,\\n string memory tokenSymbol,\\n uint256 iMintPrice,\\n bytes32 baseURICIDHash,\\n bytes32 placeholderImageCIDHash,\\n RevenueAddress[] calldata revenueAddresses,\\n address iErc20PaymentAddress,\\n uint32 iTotalSupply,\\n uint16 iRoyaltyFee,\\n bool soulboundCollection,\\n MintingType iMintingType\\n ) external payable;\\n\\n /// @notice A descriptive name for a collection of NFTs in this contract\\n function name() external view returns (string memory);\\n\\n /// @notice An abbreviated name for NFTs in this contract\\n /// @return the collection symbol\\n function symbol() external view returns (string memory);\\n\\n /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.\\n /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\\n /// 3986. The URI may point to a JSON file that conforms to the \\\"ERC721\\n /// Metadata JSON Schema\\\".\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n\\n /// @notice Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n function mint() external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n function mint(uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param amount The number of NFTs to mint\\n /// @param affiliate The affiliate address\\n function mint(uint256 amount, address affiliate) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintTo(address to, uint256 amount) external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n function mintRandomTo(address to, uint256 amount) external payable; \\n\\n /// @notice Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`.\\n /// @param to The address of the NFTs receiver\\n /// @param amount The number of NFTs to mint \\n /// @param affiliate The affiliate address\\n function mintRandomTo(address to, uint256 amount, address affiliate) external payable;\\n\\n /// @notice Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs.\\n function redeemRandom() external payable;\\n\\n /// @notice Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n function mintSpecifyTo(address to, uint256[] memory tokenIds) external payable; \\n\\n /// @notice Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment).\\n /// @param to The address of the NFTs receiver\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param affiliate The affiliate address\\n function mintSpecifyTo(address to, uint256[] memory tokenIds, address affiliate) external payable; \\n\\n /// @notice Mints one NFT to `to` address. Requires `minting type` to be `customURI`.\\n /// @param to The address of the NFTs receiver\\n /// @param customURICIDHash The CID of the given token.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function mintCustomURITo(address to, bytes32 customURICIDHash, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSequential(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropRandom(address[] memory to, bool soulbound) external payable;\\n\\n /// @notice Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An array of the specified tokens. They must not be minted, otherwise, it will revert.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n function airdropSpecify(address[] memory to, uint256[] memory tokenIds, bool soulbound) external payable;\\n\\n /// @notice Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale.\\n /// @param to The addresses of the NFTs receivers\\n /// @param tokenIds An optional array of the specified tokens. They must not be minted, otherwise, it will revert. Only used if minting type is `specify`.\\n /// @param freeMinting True is minting is free\\n /// @param customFee Zero is fee is different from `mintingPrice`.\\n /// @param maxAmount Max Amount to be minted with the given `signature`.\\n /// @param amount Amount to mint.\\n /// @param soulbound True if the NFT is a Soulbound Token (SBT). If set, it can't be transferred.\\n /// @param signature Valid `signature` for the presale/whitelist.\\n function mintPresale (\\n address to, \\n uint256[] memory tokenIds,\\n bool freeMinting, \\n uint256 customFee, \\n uint256 maxAmount,\\n uint256 amount, \\n bool soulbound,\\n bytes calldata signature) payable external;\\n\\n /// @notice Returns the minting price of one NFT.\\n /// @return Mint price for one NFT in native coin or ERC-20.\\n function mintPrice() external view returns (uint256);\\n\\n /// @notice Returns the current total supply.\\n /// @return Current total supply.\\n function totalSupply() external view returns (uint256);\\n\\n /// @notice Max amount of NFTs to be hold per address.\\n /// @return Max per address allowed.\\n function maxPerAddress() external view returns (uint16);\\n\\n}\\n\\n\",\"keccak256\":\"0x7104e5126271dfd0c5a9f91d7536163908875a2fb5ec49144312552c2d3a78be\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCCommon.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"./IN2M_ERCLibrary.sol\\\";\\nimport \\\"./IN2M_ERCBase.sol\\\";\\n\\ninterface IN2M_ERCCommon is IN2M_ERCBase, IN2M_ERCLibrary {\\n /// @notice Returns the address of the current collection owner.\\n /// @return The address of the owner.\\n function owner() external view returns (address);\\n}\\n\\n\",\"keccak256\":\"0x9deab0dbd767c0228ac8bf1b6f0da5bf98dfb0733c603595afdf6df52ab06c1a\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCLibrary.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCLibrary is IN2M_ERCStorage {\\n function setAndRevealBaseURI(bytes32 baseURICIDHash) external;\\n function changeMintPrice(uint256 newMintPrice) external;\\n function contractURI() external view returns (string memory);\\n function setContractURI(bytes32 newContractURIMetadataCIDHash) external;\\n function setAffiliatesPercentageAndDiscount(uint16 userDiscount, uint16 affiliatePercentage, address affiliateAddress) external;\\n function affiliateWithdraw(address affiliate) external;\\n function withdrawERC20(address erc20Address) external;\\n function withdrawERC20Pro(uint256 signatureExpireDate, uint n2mFee, address erc20Address, bytes calldata signature) external;\\n function withdraw() external;\\n function withdrawPro(uint256 signatureExpireDate, uint256 n2mFee, bytes calldata signature) external;\\n function setReverseENSName(address rerverseResolver, string calldata collectionENSName) external;\\n function initializeAndSetReverseENSName(address resolver, string calldata collectionENSName) external;\\n function changePlaceholderImageCID(bytes32 newPlaceholderImageCIDHash) external;\\n function setPhase(SalePhase newPhase) external;\\n function setDropDate(uint256 dropDateTimestamp) external;\\n function setDropAndEndDate(uint256 dropDateTimestamp, uint256 endDateTimestamp) external;\\n function setMaxPerAddress(uint16 newMaxPerAddress) external;\\n function isOperatorFilterRegistryEnabled() external view returns (bool);\\n function enableOperatorFilterRegistry() external;\\n function disableOperatorFilterRegistry() external;\\n function collectionSize() external view returns (uint256);\\n function randomTickets(address affiliate) external view returns (uint amount, uint blockNumberToReveal);\\n function affiliatesInfo(address affiliate) external view returns (bool enabled, uint16 affiliatePercentage, uint16 userDiscount);\\n function pendingAffiliateBalance(address affiliate) external view returns (uint256);\\n function pendingTotalAffiliatesBalance() external view returns (uint256);\\n function royaltyFee() external view returns (uint256);\\n function withdrawnAmount() external view returns (uint256);\\n function withdrawnERC20Amount(address erc20) external view returns (uint256);\\n function erc20PaymentAddress() external view returns (address);\\n function currentPhase() external view returns (SalePhase);\\n function mintingType() external view returns (MintingType);\\n function saleDates() external view returns (uint256 dropDateTimestamp, uint256 endDateTimestamp);\\n function isOpen() external view returns (bool);\\n function ownerMaxRevenue() external view returns (uint256);\\n\\n}\\n\\n\",\"keccak256\":\"0x90526238166f24f25c8425e986231e1262ea2e4aae15a1ae357f3d711d29752d\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0x2a133c164f90171559802fac306a2477e33a87e33ed1e69384489571a1fe9acb\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"AddressFiltered(address)":[{"notice":"Operator address is filtered"}],"CantLowerCurrentPercentages()":[{"notice":"Can't lower current percentages"}],"CantRevealYetWaitABitToBeAbleToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets too soon"}],"CantSetBaseURIAndPlaceholderAtTheSameTime()":[{"notice":"Can't set BaseURI and Placeholder at the same time"}],"CollectionSoldOut()":[{"notice":"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"}],"ContractMetadataURIAlreadyFixed()":[{"notice":"Contract MetadataURI already fixed"}],"InputSizeMismatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidAmount()":[{"notice":"Error thrown when the input amount is not valid"}],"InvalidDropDate()":[{"notice":"Invalid drop date"}],"InvalidInputSizesDontMatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidMintFee()":[{"notice":"Error thrown when the sent amount is not valid"}],"InvalidMintFeeForFreeMinting()":[{"notice":"Error thrown when sending funds to a free minting"}],"InvalidMintingType()":[{"notice":"Invalid collection minting type for the current minting function"}],"InvalidPercentageOrDiscountValues()":[{"notice":"Invalid percentage or discount values"}],"InvalidPhaseWithoutDate()":[{"notice":"Invalid phase can't be set without giving a date, use the proper functions"}],"InvalidRevenuePercentage()":[{"notice":"The input revenue percentages are not valid"}],"InvalidTokenId()":[{"notice":"Error thrown when trying to mint a token with a given invalid id"}],"MaxPerAddressExceeded()":[{"notice":"The address exceeded the max per address amount"}],"MetadataAlreadyFixed()":[{"notice":"Metadata is already fixed. Can't change metadata once fixed"}],"NewBaseURICantBeEmpty()":[{"notice":"New BaseURI can't be empty"}],"NewPlaceholderCantBeEmpty()":[{"notice":"New Placeholder can't be empty"}],"NoBaseURINorPlaceholderSet()":[{"notice":"No BaseURI nor Placeholder set"}],"NonTransferrableSoulboundNFT()":[{"notice":"Can't transfer a Soulbound Token (SBT)"}],"NotEnoughAmountToMint()":[{"notice":"Error thrown when trying to mint more than the allowance to mint"}],"NothingToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets with no amount to redeem"}],"OnlyAffiliateOrN2M()":[{"notice":"Only the given affiliate or N2M can call this function"}],"OnlyOwnerOrN2M()":[{"notice":"Only owner of N2M can call this function"}],"PresaleInvalidMintingType()":[{"notice":"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"}],"PresaleNotOpen()":[{"notice":"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"}],"PublicSaleNotOpen()":[{"notice":"Error thrown when trying to mint and the collection current phase is not `open`"}],"ReentrancyGuard()":[{"notice":"Reentrancy Guard protection"}],"RoyaltyFeeTooHigh()":[{"notice":"Royalty fee can't be higher than 10%"}],"SaleFinished()":[{"notice":"Error thrown when trying to mint but the sale has already finished"}],"SignatureExpired()":[{"notice":"The signature has expired"}],"SignatureMismatch()":[{"notice":"The given signature doesn't match the input values"}],"TokenAlreadyMinted()":[{"notice":"Error thrown when trying to mint a token with a given id which is already minted"}],"TotalSupplyMustBeGreaterThanZero()":[{"notice":"Invalid input. Total supply must be greater than zero"}],"WaitUntilDropDate()":[{"notice":"Can't mint until specified drop date"}]},"events":{"AffiliateSell(address)":{"notice":"This event is emitted when a token is minted using an affiliate"}},"kind":"user","methods":{"airdropRandom(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with random tokenIds. Requires `minting type` to be `random`."},"airdropSequential(address[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses. Requires `minting type` to be `sequential`."},"airdropSpecify(address[],uint256[],bool)":{"notice":"Only owner can call this function. Free of charge. Mints sizeof(`to`) to `to` addresses with specified tokenIds. Requires `minting type` to be `specify`."},"initialize(string,string,uint256,bytes32,bytes32,(address,uint16)[],address,uint32,uint16,bool,uint8)":{"notice":"To be called to create the collection. Can only be called once."},"isMetadataFixed()":{"notice":"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."},"maxPerAddress()":{"notice":"Max amount of NFTs to be hold per address."},"mint()":{"notice":"Mints one NFT to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256)":{"notice":"Mints `amount` NFTs to the caller (msg.sender). Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mint(uint256,address)":{"notice":"Mints `amount` NFTs to the caller (msg.sender) with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintCustomURITo(address,bytes32,bool)":{"notice":"Mints one NFT to `to` address. Requires `minting type` to be `customURI`."},"mintPresale(address,uint256[],bool,uint256,uint256,uint256,bool,bytes)":{"notice":"Mints `amount` of NFTs to `to` address with optional specified tokenIds. This function must be called only if a valid `signature` is given during a whitelisting/presale."},"mintPrice()":{"notice":"Returns the minting price of one NFT."},"mintRandomTo(address,uint256)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintRandomTo(address,uint256,address)":{"notice":"Two phases on-chain random minting. Mints `amount` NFTs tickets to `to` address with a given `affiliate`. Requires `minting type` to be `random` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment). Once minted, those tickets must be redeemed for an actual token calling `redeemRandom()`."},"mintSpecifyTo(address,uint256[])":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintSpecifyTo(address,uint256[],address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `specify` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256)":{"notice":"Mints `amount` NFTs to `to` address. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"mintTo(address,uint256,address)":{"notice":"Mints `amount` NFTs to `to` address with a given `affiliate`. Requires `minting type` to be `sequential` and the `mintPrice` to be send (if `Native payment`) or approved (if `ERC-20` payment)."},"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"owner()":{"notice":"Returns the address of the current collection owner."},"redeemRandom()":{"notice":"Redeems remaining random tickets generated from `msg.sender` by calling `mintRandomTo` for actual NFTs."},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"},"tokenURI(uint256)":{"notice":"A distinct Uniform Resource Identifier (URI) for a given asset."},"totalSupply()":{"notice":"Returns the current total supply."}},"version":1}}},"contracts/interfaces/IN2M_ERCLibrary.sol":{"IN2M_ERCLibrary":{"abi":[{"inputs":[{"internalType":"address","name":"filtered","type":"address"}],"name":"AddressFiltered","type":"error"},{"inputs":[],"name":"CantLowerCurrentPercentages","type":"error"},{"inputs":[],"name":"CantRevealYetWaitABitToBeAbleToRedeem","type":"error"},{"inputs":[],"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","type":"error"},{"inputs":[],"name":"CollectionSoldOut","type":"error"},{"inputs":[],"name":"ContractMetadataURIAlreadyFixed","type":"error"},{"inputs":[],"name":"InputSizeMismatch","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidDropDate","type":"error"},{"inputs":[],"name":"InvalidInputSizesDontMatch","type":"error"},{"inputs":[],"name":"InvalidMintFee","type":"error"},{"inputs":[],"name":"InvalidMintFeeForFreeMinting","type":"error"},{"inputs":[],"name":"InvalidMintingType","type":"error"},{"inputs":[],"name":"InvalidPercentageOrDiscountValues","type":"error"},{"inputs":[],"name":"InvalidPhaseWithoutDate","type":"error"},{"inputs":[],"name":"InvalidRevenuePercentage","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MaxPerAddressExceeded","type":"error"},{"inputs":[],"name":"MetadataAlreadyFixed","type":"error"},{"inputs":[],"name":"NewBaseURICantBeEmpty","type":"error"},{"inputs":[],"name":"NewPlaceholderCantBeEmpty","type":"error"},{"inputs":[],"name":"NoBaseURINorPlaceholderSet","type":"error"},{"inputs":[],"name":"NonTransferrableSoulboundNFT","type":"error"},{"inputs":[],"name":"NotEnoughAmountToMint","type":"error"},{"inputs":[],"name":"NothingToRedeem","type":"error"},{"inputs":[],"name":"OnlyAffiliateOrN2M","type":"error"},{"inputs":[],"name":"OnlyOwnerOrN2M","type":"error"},{"inputs":[],"name":"PresaleInvalidMintingType","type":"error"},{"inputs":[],"name":"PresaleNotOpen","type":"error"},{"inputs":[],"name":"PublicSaleNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"RoyaltyFeeTooHigh","type":"error"},{"inputs":[],"name":"SaleFinished","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[],"name":"SignatureMismatch","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TotalSupplyMustBeGreaterThanZero","type":"error"},{"inputs":[],"name":"WaitUntilDropDate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"affiliate","type":"address"}],"name":"AffiliateSell","type":"event"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"affiliateWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"affiliatesInfo","outputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint16","name":"affiliatePercentage","type":"uint16"},{"internalType":"uint16","name":"userDiscount","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMintPrice","type":"uint256"}],"name":"changeMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newPlaceholderImageCIDHash","type":"bytes32"}],"name":"changePlaceholderImageCID","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collectionSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPhase","outputs":[{"internalType":"enum IN2M_ERCStorage.SalePhase","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableOperatorFilterRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableOperatorFilterRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"erc20PaymentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"resolver","type":"address"},{"internalType":"string","name":"collectionENSName","type":"string"}],"name":"initializeAndSetReverseENSName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isMetadataFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOperatorFilterRegistryEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintingType","outputs":[{"internalType":"enum IN2M_ERCStorage.MintingType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"ownerMaxRevenue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"pendingAffiliateBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingTotalAffiliatesBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"affiliate","type":"address"}],"name":"randomTickets","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"blockNumberToReveal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royaltyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleDates","outputs":[{"internalType":"uint256","name":"dropDateTimestamp","type":"uint256"},{"internalType":"uint256","name":"endDateTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"userDiscount","type":"uint16"},{"internalType":"uint16","name":"affiliatePercentage","type":"uint16"},{"internalType":"address","name":"affiliateAddress","type":"address"}],"name":"setAffiliatesPercentageAndDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"baseURICIDHash","type":"bytes32"}],"name":"setAndRevealBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newContractURIMetadataCIDHash","type":"bytes32"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dropDateTimestamp","type":"uint256"},{"internalType":"uint256","name":"endDateTimestamp","type":"uint256"}],"name":"setDropAndEndDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dropDateTimestamp","type":"uint256"}],"name":"setDropDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newMaxPerAddress","type":"uint16"}],"name":"setMaxPerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IN2M_ERCStorage.SalePhase","name":"newPhase","type":"uint8"}],"name":"setPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rerverseResolver","type":"address"},{"internalType":"string","name":"collectionENSName","type":"string"}],"name":"setReverseENSName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"erc20Address","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"signatureExpireDate","type":"uint256"},{"internalType":"uint256","name":"n2mFee","type":"uint256"},{"internalType":"address","name":"erc20Address","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdrawERC20Pro","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"signatureExpireDate","type":"uint256"},{"internalType":"uint256","name":"n2mFee","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdrawPro","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"erc20","type":"address"}],"name":"withdrawnERC20Amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"events":{"AffiliateSell(address)":{"params":{"affiliate":"The affiliate address"}}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"affiliateWithdraw(address)":"35f0aa94","affiliatesInfo(address)":"1e7efe90","changeMintPrice(uint256)":"3fd17366","changePlaceholderImageCID(bytes32)":"8a9feb73","collectionSize()":"45c0f533","contractURI()":"e8a3d485","currentPhase()":"055ad42e","disableOperatorFilterRegistry()":"71ea200e","enableOperatorFilterRegistry()":"95720d1f","erc20PaymentAddress()":"cca7f32e","initializeAndSetReverseENSName(address,string)":"bbfc4e4a","isMetadataFixed()":"0de77eb8","isOpen()":"47535d7b","isOperatorFilterRegistryEnabled()":"46ee5869","mintingType()":"f0bba09f","n2mVersion()":"cb93c48f","ownerMaxRevenue()":"53ff5046","pendingAffiliateBalance(address)":"54059640","pendingTotalAffiliatesBalance()":"d3f1157b","randomTickets(address)":"106769f2","royaltyFee()":"b8997a97","saleDates()":"116ae64d","setAffiliatesPercentageAndDiscount(uint16,uint16,address)":"c9aa1118","setAndRevealBaseURI(bytes32)":"8da62a17","setContractURI(bytes32)":"227a722e","setDropAndEndDate(uint256,uint256)":"baaafbb5","setDropDate(uint256)":"0f22ea1f","setMaxPerAddress(uint16)":"b08b27a6","setPhase(uint8)":"c03afb59","setReverseENSName(address,string)":"7e124f46","withdraw()":"3ccfd60b","withdrawERC20(address)":"f4f3b200","withdrawERC20Pro(uint256,uint256,address,bytes)":"372262b9","withdrawPro(uint256,uint256,bytes)":"c54993da","withdrawnAmount()":"830de4b1","withdrawnERC20Amount(address)":"8e5b37f3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filtered\",\"type\":\"address\"}],\"name\":\"AddressFiltered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantLowerCurrentPercentages\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantRevealYetWaitABitToBeAbleToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSetBaseURIAndPlaceholderAtTheSameTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CollectionSoldOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractMetadataURIAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputSizeMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDropDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputSizesDontMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFeeForFreeMinting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercentageOrDiscountValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPhaseWithoutDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevenuePercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerAddressExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetadataAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBaseURICantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPlaceholderCantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseURINorPlaceholderSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonTransferrableSoulboundNFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughAmountToMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAffiliateOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOwnerOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleInvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PublicSaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoyaltyFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaleFinished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyMinted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WaitUntilDropDate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"AffiliateSell\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"affiliateWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"affiliatesInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"affiliatePercentage\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"userDiscount\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newMintPrice\",\"type\":\"uint256\"}],\"name\":\"changeMintPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newPlaceholderImageCIDHash\",\"type\":\"bytes32\"}],\"name\":\"changePlaceholderImageCID\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentPhase\",\"outputs\":[{\"internalType\":\"enum IN2M_ERCStorage.SalePhase\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableOperatorFilterRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableOperatorFilterRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20PaymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"collectionENSName\",\"type\":\"string\"}],\"name\":\"initializeAndSetReverseENSName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isMetadataFixed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isOperatorFilterRegistryEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintingType\",\"outputs\":[{\"internalType\":\"enum IN2M_ERCStorage.MintingType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ownerMaxRevenue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"pendingAffiliateBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingTotalAffiliatesBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"randomTickets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumberToReveal\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"saleDates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dropDateTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endDateTimestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"userDiscount\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"affiliatePercentage\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"affiliateAddress\",\"type\":\"address\"}],\"name\":\"setAffiliatesPercentageAndDiscount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"baseURICIDHash\",\"type\":\"bytes32\"}],\"name\":\"setAndRevealBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newContractURIMetadataCIDHash\",\"type\":\"bytes32\"}],\"name\":\"setContractURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dropDateTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endDateTimestamp\",\"type\":\"uint256\"}],\"name\":\"setDropAndEndDate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dropDateTimestamp\",\"type\":\"uint256\"}],\"name\":\"setDropDate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newMaxPerAddress\",\"type\":\"uint16\"}],\"name\":\"setMaxPerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IN2M_ERCStorage.SalePhase\",\"name\":\"newPhase\",\"type\":\"uint8\"}],\"name\":\"setPhase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rerverseResolver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"collectionENSName\",\"type\":\"string\"}],\"name\":\"setReverseENSName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"}],\"name\":\"withdrawERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signatureExpireDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n2mFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"withdrawERC20Pro\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signatureExpireDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n2mFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"withdrawPro\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawnAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20\",\"type\":\"address\"}],\"name\":\"withdrawnERC20Amount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AffiliateSell(address)\":{\"params\":{\"affiliate\":\"The affiliate address\"}}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"AddressFiltered(address)\":[{\"notice\":\"Operator address is filtered\"}],\"CantLowerCurrentPercentages()\":[{\"notice\":\"Can't lower current percentages\"}],\"CantRevealYetWaitABitToBeAbleToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets too soon\"}],\"CantSetBaseURIAndPlaceholderAtTheSameTime()\":[{\"notice\":\"Can't set BaseURI and Placeholder at the same time\"}],\"CollectionSoldOut()\":[{\"notice\":\"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\"}],\"ContractMetadataURIAlreadyFixed()\":[{\"notice\":\"Contract MetadataURI already fixed\"}],\"InputSizeMismatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidAmount()\":[{\"notice\":\"Error thrown when the input amount is not valid\"}],\"InvalidDropDate()\":[{\"notice\":\"Invalid drop date\"}],\"InvalidInputSizesDontMatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidMintFee()\":[{\"notice\":\"Error thrown when the sent amount is not valid\"}],\"InvalidMintFeeForFreeMinting()\":[{\"notice\":\"Error thrown when sending funds to a free minting\"}],\"InvalidMintingType()\":[{\"notice\":\"Invalid collection minting type for the current minting function\"}],\"InvalidPercentageOrDiscountValues()\":[{\"notice\":\"Invalid percentage or discount values\"}],\"InvalidPhaseWithoutDate()\":[{\"notice\":\"Invalid phase can't be set without giving a date, use the proper functions\"}],\"InvalidRevenuePercentage()\":[{\"notice\":\"The input revenue percentages are not valid\"}],\"InvalidTokenId()\":[{\"notice\":\"Error thrown when trying to mint a token with a given invalid id\"}],\"MaxPerAddressExceeded()\":[{\"notice\":\"The address exceeded the max per address amount\"}],\"MetadataAlreadyFixed()\":[{\"notice\":\"Metadata is already fixed. Can't change metadata once fixed\"}],\"NewBaseURICantBeEmpty()\":[{\"notice\":\"New BaseURI can't be empty\"}],\"NewPlaceholderCantBeEmpty()\":[{\"notice\":\"New Placeholder can't be empty\"}],\"NoBaseURINorPlaceholderSet()\":[{\"notice\":\"No BaseURI nor Placeholder set\"}],\"NonTransferrableSoulboundNFT()\":[{\"notice\":\"Can't transfer a Soulbound Token (SBT)\"}],\"NotEnoughAmountToMint()\":[{\"notice\":\"Error thrown when trying to mint more than the allowance to mint\"}],\"NothingToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets with no amount to redeem\"}],\"OnlyAffiliateOrN2M()\":[{\"notice\":\"Only the given affiliate or N2M can call this function\"}],\"OnlyOwnerOrN2M()\":[{\"notice\":\"Only owner of N2M can call this function\"}],\"PresaleInvalidMintingType()\":[{\"notice\":\"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\"}],\"PresaleNotOpen()\":[{\"notice\":\"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\"}],\"PublicSaleNotOpen()\":[{\"notice\":\"Error thrown when trying to mint and the collection current phase is not `open`\"}],\"ReentrancyGuard()\":[{\"notice\":\"Reentrancy Guard protection\"}],\"RoyaltyFeeTooHigh()\":[{\"notice\":\"Royalty fee can't be higher than 10%\"}],\"SaleFinished()\":[{\"notice\":\"Error thrown when trying to mint but the sale has already finished\"}],\"SignatureExpired()\":[{\"notice\":\"The signature has expired\"}],\"SignatureMismatch()\":[{\"notice\":\"The given signature doesn't match the input values\"}],\"TokenAlreadyMinted()\":[{\"notice\":\"Error thrown when trying to mint a token with a given id which is already minted\"}],\"TotalSupplyMustBeGreaterThanZero()\":[{\"notice\":\"Invalid input. Total supply must be greater than zero\"}],\"WaitUntilDropDate()\":[{\"notice\":\"Can't mint until specified drop date\"}]},\"events\":{\"AffiliateSell(address)\":{\"notice\":\"This event is emitted when a token is minted using an affiliate\"}},\"kind\":\"user\",\"methods\":{\"isMetadataFixed()\":{\"notice\":\"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IN2M_ERCLibrary.sol\":\"IN2M_ERCLibrary\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCLibrary.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"./IN2M_ERCStorage.sol\\\";\\n\\ninterface IN2M_ERCLibrary is IN2M_ERCStorage {\\n function setAndRevealBaseURI(bytes32 baseURICIDHash) external;\\n function changeMintPrice(uint256 newMintPrice) external;\\n function contractURI() external view returns (string memory);\\n function setContractURI(bytes32 newContractURIMetadataCIDHash) external;\\n function setAffiliatesPercentageAndDiscount(uint16 userDiscount, uint16 affiliatePercentage, address affiliateAddress) external;\\n function affiliateWithdraw(address affiliate) external;\\n function withdrawERC20(address erc20Address) external;\\n function withdrawERC20Pro(uint256 signatureExpireDate, uint n2mFee, address erc20Address, bytes calldata signature) external;\\n function withdraw() external;\\n function withdrawPro(uint256 signatureExpireDate, uint256 n2mFee, bytes calldata signature) external;\\n function setReverseENSName(address rerverseResolver, string calldata collectionENSName) external;\\n function initializeAndSetReverseENSName(address resolver, string calldata collectionENSName) external;\\n function changePlaceholderImageCID(bytes32 newPlaceholderImageCIDHash) external;\\n function setPhase(SalePhase newPhase) external;\\n function setDropDate(uint256 dropDateTimestamp) external;\\n function setDropAndEndDate(uint256 dropDateTimestamp, uint256 endDateTimestamp) external;\\n function setMaxPerAddress(uint16 newMaxPerAddress) external;\\n function isOperatorFilterRegistryEnabled() external view returns (bool);\\n function enableOperatorFilterRegistry() external;\\n function disableOperatorFilterRegistry() external;\\n function collectionSize() external view returns (uint256);\\n function randomTickets(address affiliate) external view returns (uint amount, uint blockNumberToReveal);\\n function affiliatesInfo(address affiliate) external view returns (bool enabled, uint16 affiliatePercentage, uint16 userDiscount);\\n function pendingAffiliateBalance(address affiliate) external view returns (uint256);\\n function pendingTotalAffiliatesBalance() external view returns (uint256);\\n function royaltyFee() external view returns (uint256);\\n function withdrawnAmount() external view returns (uint256);\\n function withdrawnERC20Amount(address erc20) external view returns (uint256);\\n function erc20PaymentAddress() external view returns (address);\\n function currentPhase() external view returns (SalePhase);\\n function mintingType() external view returns (MintingType);\\n function saleDates() external view returns (uint256 dropDateTimestamp, uint256 endDateTimestamp);\\n function isOpen() external view returns (bool);\\n function ownerMaxRevenue() external view returns (uint256);\\n\\n}\\n\\n\",\"keccak256\":\"0x90526238166f24f25c8425e986231e1262ea2e4aae15a1ae357f3d711d29752d\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0x2a133c164f90171559802fac306a2477e33a87e33ed1e69384489571a1fe9acb\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"AddressFiltered(address)":[{"notice":"Operator address is filtered"}],"CantLowerCurrentPercentages()":[{"notice":"Can't lower current percentages"}],"CantRevealYetWaitABitToBeAbleToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets too soon"}],"CantSetBaseURIAndPlaceholderAtTheSameTime()":[{"notice":"Can't set BaseURI and Placeholder at the same time"}],"CollectionSoldOut()":[{"notice":"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"}],"ContractMetadataURIAlreadyFixed()":[{"notice":"Contract MetadataURI already fixed"}],"InputSizeMismatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidAmount()":[{"notice":"Error thrown when the input amount is not valid"}],"InvalidDropDate()":[{"notice":"Invalid drop date"}],"InvalidInputSizesDontMatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidMintFee()":[{"notice":"Error thrown when the sent amount is not valid"}],"InvalidMintFeeForFreeMinting()":[{"notice":"Error thrown when sending funds to a free minting"}],"InvalidMintingType()":[{"notice":"Invalid collection minting type for the current minting function"}],"InvalidPercentageOrDiscountValues()":[{"notice":"Invalid percentage or discount values"}],"InvalidPhaseWithoutDate()":[{"notice":"Invalid phase can't be set without giving a date, use the proper functions"}],"InvalidRevenuePercentage()":[{"notice":"The input revenue percentages are not valid"}],"InvalidTokenId()":[{"notice":"Error thrown when trying to mint a token with a given invalid id"}],"MaxPerAddressExceeded()":[{"notice":"The address exceeded the max per address amount"}],"MetadataAlreadyFixed()":[{"notice":"Metadata is already fixed. Can't change metadata once fixed"}],"NewBaseURICantBeEmpty()":[{"notice":"New BaseURI can't be empty"}],"NewPlaceholderCantBeEmpty()":[{"notice":"New Placeholder can't be empty"}],"NoBaseURINorPlaceholderSet()":[{"notice":"No BaseURI nor Placeholder set"}],"NonTransferrableSoulboundNFT()":[{"notice":"Can't transfer a Soulbound Token (SBT)"}],"NotEnoughAmountToMint()":[{"notice":"Error thrown when trying to mint more than the allowance to mint"}],"NothingToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets with no amount to redeem"}],"OnlyAffiliateOrN2M()":[{"notice":"Only the given affiliate or N2M can call this function"}],"OnlyOwnerOrN2M()":[{"notice":"Only owner of N2M can call this function"}],"PresaleInvalidMintingType()":[{"notice":"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"}],"PresaleNotOpen()":[{"notice":"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"}],"PublicSaleNotOpen()":[{"notice":"Error thrown when trying to mint and the collection current phase is not `open`"}],"ReentrancyGuard()":[{"notice":"Reentrancy Guard protection"}],"RoyaltyFeeTooHigh()":[{"notice":"Royalty fee can't be higher than 10%"}],"SaleFinished()":[{"notice":"Error thrown when trying to mint but the sale has already finished"}],"SignatureExpired()":[{"notice":"The signature has expired"}],"SignatureMismatch()":[{"notice":"The given signature doesn't match the input values"}],"TokenAlreadyMinted()":[{"notice":"Error thrown when trying to mint a token with a given id which is already minted"}],"TotalSupplyMustBeGreaterThanZero()":[{"notice":"Invalid input. Total supply must be greater than zero"}],"WaitUntilDropDate()":[{"notice":"Can't mint until specified drop date"}]},"events":{"AffiliateSell(address)":{"notice":"This event is emitted when a token is minted using an affiliate"}},"kind":"user","methods":{"isMetadataFixed()":{"notice":"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."}},"version":1}}},"contracts/interfaces/IN2M_ERCStorage.sol":{"IN2M_ERCStorage":{"abi":[{"inputs":[{"internalType":"address","name":"filtered","type":"address"}],"name":"AddressFiltered","type":"error"},{"inputs":[],"name":"CantLowerCurrentPercentages","type":"error"},{"inputs":[],"name":"CantRevealYetWaitABitToBeAbleToRedeem","type":"error"},{"inputs":[],"name":"CantSetBaseURIAndPlaceholderAtTheSameTime","type":"error"},{"inputs":[],"name":"CollectionSoldOut","type":"error"},{"inputs":[],"name":"ContractMetadataURIAlreadyFixed","type":"error"},{"inputs":[],"name":"InputSizeMismatch","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidDropDate","type":"error"},{"inputs":[],"name":"InvalidInputSizesDontMatch","type":"error"},{"inputs":[],"name":"InvalidMintFee","type":"error"},{"inputs":[],"name":"InvalidMintFeeForFreeMinting","type":"error"},{"inputs":[],"name":"InvalidMintingType","type":"error"},{"inputs":[],"name":"InvalidPercentageOrDiscountValues","type":"error"},{"inputs":[],"name":"InvalidPhaseWithoutDate","type":"error"},{"inputs":[],"name":"InvalidRevenuePercentage","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MaxPerAddressExceeded","type":"error"},{"inputs":[],"name":"MetadataAlreadyFixed","type":"error"},{"inputs":[],"name":"NewBaseURICantBeEmpty","type":"error"},{"inputs":[],"name":"NewPlaceholderCantBeEmpty","type":"error"},{"inputs":[],"name":"NoBaseURINorPlaceholderSet","type":"error"},{"inputs":[],"name":"NonTransferrableSoulboundNFT","type":"error"},{"inputs":[],"name":"NotEnoughAmountToMint","type":"error"},{"inputs":[],"name":"NothingToRedeem","type":"error"},{"inputs":[],"name":"OnlyAffiliateOrN2M","type":"error"},{"inputs":[],"name":"OnlyOwnerOrN2M","type":"error"},{"inputs":[],"name":"PresaleInvalidMintingType","type":"error"},{"inputs":[],"name":"PresaleNotOpen","type":"error"},{"inputs":[],"name":"PublicSaleNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuard","type":"error"},{"inputs":[],"name":"RoyaltyFeeTooHigh","type":"error"},{"inputs":[],"name":"SaleFinished","type":"error"},{"inputs":[],"name":"SignatureExpired","type":"error"},{"inputs":[],"name":"SignatureMismatch","type":"error"},{"inputs":[],"name":"TokenAlreadyMinted","type":"error"},{"inputs":[],"name":"TotalSupplyMustBeGreaterThanZero","type":"error"},{"inputs":[],"name":"WaitUntilDropDate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"affiliate","type":"address"}],"name":"AffiliateSell","type":"event"},{"inputs":[],"name":"isMetadataFixed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n2mVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"devdoc":{"events":{"AffiliateSell(address)":{"params":{"affiliate":"The affiliate address"}}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isMetadataFixed()":"0de77eb8","n2mVersion()":"cb93c48f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filtered\",\"type\":\"address\"}],\"name\":\"AddressFiltered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantLowerCurrentPercentages\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantRevealYetWaitABitToBeAbleToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantSetBaseURIAndPlaceholderAtTheSameTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CollectionSoldOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractMetadataURIAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputSizeMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDropDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputSizesDontMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintFeeForFreeMinting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercentageOrDiscountValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPhaseWithoutDate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevenuePercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerAddressExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetadataAlreadyFixed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBaseURICantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPlaceholderCantBeEmpty\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBaseURINorPlaceholderSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonTransferrableSoulboundNFT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughAmountToMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToRedeem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAffiliateOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOwnerOrN2M\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleInvalidMintingType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PresaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PublicSaleNotOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuard\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoyaltyFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaleFinished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyMinted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WaitUntilDropDate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"affiliate\",\"type\":\"address\"}],\"name\":\"AffiliateSell\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"isMetadataFixed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n2mVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AffiliateSell(address)\":{\"params\":{\"affiliate\":\"The affiliate address\"}}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"AddressFiltered(address)\":[{\"notice\":\"Operator address is filtered\"}],\"CantLowerCurrentPercentages()\":[{\"notice\":\"Can't lower current percentages\"}],\"CantRevealYetWaitABitToBeAbleToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets too soon\"}],\"CantSetBaseURIAndPlaceholderAtTheSameTime()\":[{\"notice\":\"Can't set BaseURI and Placeholder at the same time\"}],\"CollectionSoldOut()\":[{\"notice\":\"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\"}],\"ContractMetadataURIAlreadyFixed()\":[{\"notice\":\"Contract MetadataURI already fixed\"}],\"InputSizeMismatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidAmount()\":[{\"notice\":\"Error thrown when the input amount is not valid\"}],\"InvalidDropDate()\":[{\"notice\":\"Invalid drop date\"}],\"InvalidInputSizesDontMatch()\":[{\"notice\":\"Error thrown when input variable differ in length\"}],\"InvalidMintFee()\":[{\"notice\":\"Error thrown when the sent amount is not valid\"}],\"InvalidMintFeeForFreeMinting()\":[{\"notice\":\"Error thrown when sending funds to a free minting\"}],\"InvalidMintingType()\":[{\"notice\":\"Invalid collection minting type for the current minting function\"}],\"InvalidPercentageOrDiscountValues()\":[{\"notice\":\"Invalid percentage or discount values\"}],\"InvalidPhaseWithoutDate()\":[{\"notice\":\"Invalid phase can't be set without giving a date, use the proper functions\"}],\"InvalidRevenuePercentage()\":[{\"notice\":\"The input revenue percentages are not valid\"}],\"InvalidTokenId()\":[{\"notice\":\"Error thrown when trying to mint a token with a given invalid id\"}],\"MaxPerAddressExceeded()\":[{\"notice\":\"The address exceeded the max per address amount\"}],\"MetadataAlreadyFixed()\":[{\"notice\":\"Metadata is already fixed. Can't change metadata once fixed\"}],\"NewBaseURICantBeEmpty()\":[{\"notice\":\"New BaseURI can't be empty\"}],\"NewPlaceholderCantBeEmpty()\":[{\"notice\":\"New Placeholder can't be empty\"}],\"NoBaseURINorPlaceholderSet()\":[{\"notice\":\"No BaseURI nor Placeholder set\"}],\"NonTransferrableSoulboundNFT()\":[{\"notice\":\"Can't transfer a Soulbound Token (SBT)\"}],\"NotEnoughAmountToMint()\":[{\"notice\":\"Error thrown when trying to mint more than the allowance to mint\"}],\"NothingToRedeem()\":[{\"notice\":\"Error thrown when trying to redeem random tickets with no amount to redeem\"}],\"OnlyAffiliateOrN2M()\":[{\"notice\":\"Only the given affiliate or N2M can call this function\"}],\"OnlyOwnerOrN2M()\":[{\"notice\":\"Only owner of N2M can call this function\"}],\"PresaleInvalidMintingType()\":[{\"notice\":\"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\"}],\"PresaleNotOpen()\":[{\"notice\":\"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\"}],\"PublicSaleNotOpen()\":[{\"notice\":\"Error thrown when trying to mint and the collection current phase is not `open`\"}],\"ReentrancyGuard()\":[{\"notice\":\"Reentrancy Guard protection\"}],\"RoyaltyFeeTooHigh()\":[{\"notice\":\"Royalty fee can't be higher than 10%\"}],\"SaleFinished()\":[{\"notice\":\"Error thrown when trying to mint but the sale has already finished\"}],\"SignatureExpired()\":[{\"notice\":\"The signature has expired\"}],\"SignatureMismatch()\":[{\"notice\":\"The given signature doesn't match the input values\"}],\"TokenAlreadyMinted()\":[{\"notice\":\"Error thrown when trying to mint a token with a given id which is already minted\"}],\"TotalSupplyMustBeGreaterThanZero()\":[{\"notice\":\"Invalid input. Total supply must be greater than zero\"}],\"WaitUntilDropDate()\":[{\"notice\":\"Can't mint until specified drop date\"}]},\"events\":{\"AffiliateSell(address)\":{\"notice\":\"This event is emitted when a token is minted using an affiliate\"}},\"kind\":\"user\",\"methods\":{\"isMetadataFixed()\":{\"notice\":\"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IN2M_ERCStorage.sol\":\"IN2M_ERCStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@nfts2me/contracts/important/README.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * .::. //\\n * ...... //\\n * .... ::. //\\n * .:.. :: ... //\\n * ..:. :: ... //\\n * ::. ..:-- ::. ... //\\n * .: ..:::::-==: :::::.. : //\\n * .: :::::::-====: :::::::: : //\\n * .: :::::::-======. :::::::: : //\\n * .: :::::::-=======-:::::::: : //\\n * .: :::::::-========-::::::: : //\\n * .: ::::::::========-::::::: : //\\n * .: :::::::. .======-::::::: : //\\n * .: :::::::. :====-::::::: : //\\n * .: .:::::. -==-:::::. : //\\n * .:. .:. .--:.. ... //\\n * .:. :. ... //\\n * .... :. .... //\\n * .:. .:. //\\n * .::::. //\\n * :--. //\\n * //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * More info at: https://docs.nfts2me.com/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.17;\\n\\n/// @title NFTs2Me.com Smart Contracts README\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\ninterface Readme {\\n function n2mVersion() external pure returns (uint256);\\n }\\n\",\"keccak256\":\"0x1f3de384eb52b674f28e7ae2f5814e76931959b79410f20435d344f2579a33e2\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IN2M_ERCStorage.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@nfts2me/contracts/important/README.sol\\\";\\n\\ninterface IN2M_ERCStorage is Readme {\\n /// @notice This event is emitted when a token is minted using an affiliate\\n /// @param affiliate The affiliate address\\n event AffiliateSell(address indexed affiliate);\\n\\n /// @notice Error thrown when trying to mint a token with a given id which is already minted\\n error TokenAlreadyMinted();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InvalidInputSizesDontMatch();\\n\\n /// @notice Error thrown when input variable differ in length\\n error InputSizeMismatch();\\n\\n /// @notice Error thrown when trying to mint a token with a given invalid id\\n error InvalidTokenId();\\n\\n /// @notice Error thrown when trying to redeem random tickets with no amount to redeem\\n error NothingToRedeem();\\n\\n /// @notice Error thrown when trying to redeem random tickets too soon\\n error CantRevealYetWaitABitToBeAbleToRedeem();\\n\\n /// @notice Error thrown when the input amount is not valid\\n error InvalidAmount();\\n\\n /// @notice Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply\\n error CollectionSoldOut();\\n\\n /// @notice Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`\\n error PresaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint and the collection current phase is not `open`\\n error PublicSaleNotOpen();\\n\\n /// @notice Error thrown when trying to mint but the sale has already finished\\n error SaleFinished();\\n\\n /// @notice Error thrown when trying to mint more than the allowance to mint\\n error NotEnoughAmountToMint();\\n\\n /// @notice Error thrown when sending funds to a free minting\\n error InvalidMintFeeForFreeMinting();\\n\\n /// @notice Error thrown when the sent amount is not valid\\n error InvalidMintFee();\\n\\n /// @notice Royalty fee can't be higher than 10%\\n error RoyaltyFeeTooHigh();\\n\\n /// @notice Invalid input. Total supply must be greater than zero\\n error TotalSupplyMustBeGreaterThanZero();\\n\\n /// @notice Can't set BaseURI and Placeholder at the same time\\n error CantSetBaseURIAndPlaceholderAtTheSameTime();\\n\\n /// @notice No BaseURI nor Placeholder set\\n error NoBaseURINorPlaceholderSet();\\n\\n /// @notice Can't transfer a Soulbound Token (SBT)\\n error NonTransferrableSoulboundNFT();\\n\\n /// @notice The input revenue percentages are not valid\\n error InvalidRevenuePercentage();\\n\\n /// @notice Can't mint until specified drop date\\n error WaitUntilDropDate();\\n\\n /// @notice Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist\\n error PresaleInvalidMintingType();\\n\\n /// @notice Metadata is already fixed. Can't change metadata once fixed\\n error MetadataAlreadyFixed();\\n\\n /// @notice Invalid collection minting type for the current minting function\\n error InvalidMintingType();\\n\\n /// @notice The address exceeded the max per address amount\\n error MaxPerAddressExceeded();\\n\\n /// @notice The given signature doesn't match the input values\\n error SignatureMismatch();\\n\\n /// @notice Reentrancy Guard protection\\n error ReentrancyGuard();\\n\\n /// @notice New Placeholder can't be empty\\n error NewPlaceholderCantBeEmpty();\\n\\n /// @notice New BaseURI can't be empty\\n error NewBaseURICantBeEmpty(); \\n\\n /// @notice Invalid percentage or discount values\\n error InvalidPercentageOrDiscountValues();\\n\\n /// @notice Can't lower current percentages\\n error CantLowerCurrentPercentages();\\n\\n /// @notice Contract MetadataURI already fixed\\n error ContractMetadataURIAlreadyFixed();\\n\\n /// @notice Only owner of N2M can call this function\\n error OnlyOwnerOrN2M();\\n\\n /// @notice Only the given affiliate or N2M can call this function\\n error OnlyAffiliateOrN2M();\\n\\n /// @notice The signature has expired\\n error SignatureExpired();\\n\\n /// @notice Invalid phase can't be set without giving a date, use the proper functions\\n error InvalidPhaseWithoutDate();\\n\\n /// @notice Invalid drop date\\n error InvalidDropDate();\\n\\n /// @notice Operator address is filtered\\n error AddressFiltered(address filtered);\\n\\n struct RandomTicket {\\n uint256 amount;\\n uint256 blockNumberToReveal;\\n }\\n\\n struct RevenueAddress {\\n address to;\\n uint16 percentage;\\n }\\n\\n struct AffiliateInformation {\\n bool enabled;\\n uint16 affiliatePercentage;\\n uint16 userDiscount;\\n }\\n\\n enum SalePhase { \\n CLOSED,\\n PRESALE,\\n PUBLIC,\\n DROP_DATE,\\n DROP_AND_END_DATE\\n }\\n\\n enum MintingType { \\n SEQUENTIAL, \\n RANDOM, \\n SPECIFY, \\n CUSTOM_URI \\n }\\n\\n enum OperatorFilterStatus { \\n ENABLED_NOT_INITIALIZED, \\n ENABLED_EXISTS, \\n DISABLED_NOT_INITIALIZED,\\n DISABLED_EXISTS \\n }\\n\\n /// @notice Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone.\\n function isMetadataFixed() external view returns (bool);\\n\\n}\\n\\n\",\"keccak256\":\"0x2a133c164f90171559802fac306a2477e33a87e33ed1e69384489571a1fe9acb\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"AddressFiltered(address)":[{"notice":"Operator address is filtered"}],"CantLowerCurrentPercentages()":[{"notice":"Can't lower current percentages"}],"CantRevealYetWaitABitToBeAbleToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets too soon"}],"CantSetBaseURIAndPlaceholderAtTheSameTime()":[{"notice":"Can't set BaseURI and Placeholder at the same time"}],"CollectionSoldOut()":[{"notice":"Error thrown when trying to mint a sold out collection or the amount to mint exceeds the remaining supply"}],"ContractMetadataURIAlreadyFixed()":[{"notice":"Contract MetadataURI already fixed"}],"InputSizeMismatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidAmount()":[{"notice":"Error thrown when the input amount is not valid"}],"InvalidDropDate()":[{"notice":"Invalid drop date"}],"InvalidInputSizesDontMatch()":[{"notice":"Error thrown when input variable differ in length"}],"InvalidMintFee()":[{"notice":"Error thrown when the sent amount is not valid"}],"InvalidMintFeeForFreeMinting()":[{"notice":"Error thrown when sending funds to a free minting"}],"InvalidMintingType()":[{"notice":"Invalid collection minting type for the current minting function"}],"InvalidPercentageOrDiscountValues()":[{"notice":"Invalid percentage or discount values"}],"InvalidPhaseWithoutDate()":[{"notice":"Invalid phase can't be set without giving a date, use the proper functions"}],"InvalidRevenuePercentage()":[{"notice":"The input revenue percentages are not valid"}],"InvalidTokenId()":[{"notice":"Error thrown when trying to mint a token with a given invalid id"}],"MaxPerAddressExceeded()":[{"notice":"The address exceeded the max per address amount"}],"MetadataAlreadyFixed()":[{"notice":"Metadata is already fixed. Can't change metadata once fixed"}],"NewBaseURICantBeEmpty()":[{"notice":"New BaseURI can't be empty"}],"NewPlaceholderCantBeEmpty()":[{"notice":"New Placeholder can't be empty"}],"NoBaseURINorPlaceholderSet()":[{"notice":"No BaseURI nor Placeholder set"}],"NonTransferrableSoulboundNFT()":[{"notice":"Can't transfer a Soulbound Token (SBT)"}],"NotEnoughAmountToMint()":[{"notice":"Error thrown when trying to mint more than the allowance to mint"}],"NothingToRedeem()":[{"notice":"Error thrown when trying to redeem random tickets with no amount to redeem"}],"OnlyAffiliateOrN2M()":[{"notice":"Only the given affiliate or N2M can call this function"}],"OnlyOwnerOrN2M()":[{"notice":"Only owner of N2M can call this function"}],"PresaleInvalidMintingType()":[{"notice":"Trying to use mintPresale method in a collection with a minting type that doesn't support whitelist"}],"PresaleNotOpen()":[{"notice":"Error thrown when trying to presale/whitelist mint and the collection current phase is `closed`"}],"PublicSaleNotOpen()":[{"notice":"Error thrown when trying to mint and the collection current phase is not `open`"}],"ReentrancyGuard()":[{"notice":"Reentrancy Guard protection"}],"RoyaltyFeeTooHigh()":[{"notice":"Royalty fee can't be higher than 10%"}],"SaleFinished()":[{"notice":"Error thrown when trying to mint but the sale has already finished"}],"SignatureExpired()":[{"notice":"The signature has expired"}],"SignatureMismatch()":[{"notice":"The given signature doesn't match the input values"}],"TokenAlreadyMinted()":[{"notice":"Error thrown when trying to mint a token with a given id which is already minted"}],"TotalSupplyMustBeGreaterThanZero()":[{"notice":"Invalid input. Total supply must be greater than zero"}],"WaitUntilDropDate()":[{"notice":"Can't mint until specified drop date"}]},"events":{"AffiliateSell(address)":{"notice":"This event is emitted when a token is minted using an affiliate"}},"kind":"user","methods":{"isMetadataFixed()":{"notice":"Returns true if the metadata is fixed and immutable. If the metadata hasn't been fixed yet it will return false. Once fixed, it can't be changed by anyone."}},"version":1}}},"contracts/interfaces/IOperatorFilterRegistry.sol":{"IOperatorFilterRegistry":{"abi":[{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"codeHashOf","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"registrantToCopy","type":"address"}],"name":"copyEntriesOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"filteredCodeHashAt","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"filteredCodeHashes","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"filteredOperatorAt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"filteredOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"bytes32","name":"codeHash","type":"bytes32"}],"name":"isCodeHashFiltered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"operatorWithCode","type":"address"}],"name":"isCodeHashOfFiltered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isOperatorAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isOperatorFiltered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"registrantToCopy","type":"address"}],"name":"registerAndCopyEntries","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"subscription","type":"address"}],"name":"registerAndSubscribe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"registrantToSubscribe","type":"address"}],"name":"subscribe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"subscriberAt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"}],"name":"subscribers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"subscriptionOf","outputs":[{"internalType":"address","name":"registrant","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"bool","name":"copyExistingEntries","type":"bool"}],"name":"unsubscribe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"bytes32","name":"codehash","type":"bytes32"},{"internalType":"bool","name":"filtered","type":"bool"}],"name":"updateCodeHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"bytes32[]","name":"codeHashes","type":"bytes32[]"},{"internalType":"bool","name":"filtered","type":"bool"}],"name":"updateCodeHashes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"filtered","type":"bool"}],"name":"updateOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bool","name":"filtered","type":"bool"}],"name":"updateOperators","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"codeHashOf(address)":"bbd652c7","copyEntriesOf(address,address)":"1e06b4b4","filteredCodeHashAt(address,uint256)":"a6529eb5","filteredCodeHashes(address)":"22fa2762","filteredOperatorAt(address,uint256)":"3f1cc5fa","filteredOperators(address)":"c4308805","isCodeHashFiltered(address,bytes32)":"6af0c315","isCodeHashOfFiltered(address,address)":"5eae3173","isOperatorAllowed(address,address)":"c6171134","isOperatorFiltered(address,address)":"e4aecb54","isRegistered(address)":"c3c5a547","register(address)":"4420e486","registerAndCopyEntries(address,address)":"a0af2903","registerAndSubscribe(address,address)":"7d3e3dbe","subscribe(address,address)":"b314d414","subscriberAt(address,uint256)":"55940e51","subscribers(address)":"5745ae28","subscriptionOf(address)":"3c5030bb","unsubscribe(address,bool)":"34a0dc10","updateCodeHash(address,bytes32,bool)":"712fc00b","updateCodeHashes(address,bytes32[],bool)":"063298b6","updateOperator(address,address,bool)":"a2f367ab","updateOperators(address,address[],bool)":"a14584c1"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"codeHashOf\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"registrantToCopy\",\"type\":\"address\"}],\"name\":\"copyEntriesOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"filteredCodeHashAt\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"filteredCodeHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"filteredOperatorAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"filteredOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"codeHash\",\"type\":\"bytes32\"}],\"name\":\"isCodeHashFiltered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorWithCode\",\"type\":\"address\"}],\"name\":\"isCodeHashOfFiltered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorFiltered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"registrantToCopy\",\"type\":\"address\"}],\"name\":\"registerAndCopyEntries\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"subscription\",\"type\":\"address\"}],\"name\":\"registerAndSubscribe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"registrantToSubscribe\",\"type\":\"address\"}],\"name\":\"subscribe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"subscriberAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"}],\"name\":\"subscribers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"subscriptionOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"copyExistingEntries\",\"type\":\"bool\"}],\"name\":\"unsubscribe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"codehash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"filtered\",\"type\":\"bool\"}],\"name\":\"updateCodeHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"codeHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"bool\",\"name\":\"filtered\",\"type\":\"bool\"}],\"name\":\"updateCodeHashes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"filtered\",\"type\":\"bool\"}],\"name\":\"updateOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrant\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"filtered\",\"type\":\"bool\"}],\"name\":\"updateOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IOperatorFilterRegistry.sol\":\"IOperatorFilterRegistry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IOperatorFilterRegistry.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\ninterface IOperatorFilterRegistry {\\n function isOperatorAllowed(address registrant, address operator) external view returns (bool);\\n function register(address registrant) external;\\n function registerAndSubscribe(address registrant, address subscription) external;\\n function registerAndCopyEntries(address registrant, address registrantToCopy) external;\\n function updateOperator(address registrant, address operator, bool filtered) external;\\n function updateOperators(address registrant, address[] calldata operators, bool filtered) external;\\n function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;\\n function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;\\n function subscribe(address registrant, address registrantToSubscribe) external;\\n function unsubscribe(address registrant, bool copyExistingEntries) external;\\n function subscriptionOf(address addr) external returns (address registrant);\\n function subscribers(address registrant) external returns (address[] memory);\\n function subscriberAt(address registrant, uint256 index) external returns (address);\\n function copyEntriesOf(address registrant, address registrantToCopy) external;\\n function isOperatorFiltered(address registrant, address operator) external returns (bool);\\n function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);\\n function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);\\n function filteredOperators(address addr) external returns (address[] memory);\\n function filteredCodeHashes(address addr) external returns (bytes32[] memory);\\n function filteredOperatorAt(address registrant, uint256 index) external returns (address);\\n function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);\\n function isRegistered(address addr) external view returns (bool);\\n function codeHashOf(address addr) external view returns (bytes32);\\n}\",\"keccak256\":\"0x51f0bed89c0a334cd5b10a28273545a2a1d1f71f6eb752a57419dfd447022df5\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IReverseRegistrar.sol":{"IReverseRegistrar":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"claim","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"}],"name":"claimForAddr","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"}],"name":"claimWithResolver","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"node","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"resolver","type":"address"}],"name":"setDefaultResolver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"setName","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"string","name":"name","type":"string"}],"name":"setNameForAddr","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"claim(address)":"1e83409a","claimForAddr(address,address,address)":"65669631","claimWithResolver(address,address)":"0f5a5466","node(address)":"bffbe61c","setDefaultResolver(address)":"c66485b2","setName(string)":"c47f0027","setNameForAddr(address,address,address,string)":"7a806d6b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"claimForAddr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"claimWithResolver\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"node\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setDefaultResolver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setNameForAddr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IReverseRegistrar.sol\":\"IReverseRegistrar\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IReverseRegistrar.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\ninterface IReverseRegistrar {\\n function setDefaultResolver(address resolver) external;\\n\\n function claim(address owner) external returns (bytes32);\\n\\n function claimForAddr(\\n address addr,\\n address owner,\\n address resolver\\n ) external returns (bytes32);\\n\\n function claimWithResolver(address owner, address resolver)\\n external\\n returns (bytes32);\\n\\n function setName(string memory name) external returns (bytes32);\\n\\n function setNameForAddr(\\n address addr,\\n address owner,\\n address resolver,\\n string memory name\\n ) external returns (bytes32);\\n\\n function node(address addr) external pure returns (bytes32);\\n}\",\"keccak256\":\"0x35ec5a50e71264729a9d0050f3fe4ada5037c16007b0ce75cf22245035951793\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/ownable/NFTOwnableUpgradeable.sol":{"NFTOwnableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"The NFTs2Me Team","custom:security-contact":"security@nfts2me.com","custom:terms-of-service":"https://nfts2me.com/terms-of-service/","custom:website":"https://nfts2me.com/","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."}},"title":"NFTs2Me.com Smart Contracts","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"The NFTs2Me Team\",\"custom:security-contact\":\"security@nfts2me.com\",\"custom:terms-of-service\":\"https://nfts2me.com/terms-of-service/\",\"custom:website\":\"https://nfts2me.com/\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"}},\"title\":\"NFTs2Me.com Smart Contracts\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Read our terms of service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ownable/NFTOwnableUpgradeable.sol\":\"NFTOwnableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":17766},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"contracts/ownable/NFTOwnableUpgradeable.sol\":{\"content\":\"/** ---------------------------------------------------------------------------- //\\n * //\\n * .:::. //\\n * .:::::::. //\\n * ::::::::. //\\n * .:::::::::. //\\n * ..:::. .. //\\n * .::::. ::::.. //\\n * ..:::.. ::::::::. //\\n * .::::. :::. ..:::. //\\n * ..:::.. :::. .:::. //\\n * .::::. :::. .:::.. //\\n * .:::.. .. :::. .::::. //\\n * .::::. ..:::=- :::: ..:::. //\\n * :::. .:::::::===: ::::::. .:::: //\\n * .::. .:::::::::::=====. ::::::::::. .::. //\\n * .:: .:::::::::::::::=======. :::::::::::::.. ::. //\\n * .:: .::::::::::::::::========- ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==========: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::============: ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==============. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::===============-. ::::::::::::::::: ::. //\\n * .:: .::::::::::::::::=================:::::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .::::::::::::::::==================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::::=================-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-===============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .==============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :============-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: :==========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::::: .-========-:::::::::::::::: ::. //\\n * .:: .:::::::::::::: .=======-::::::::::::::. ::. //\\n * .::. .:::::::::: .=====-::::::::::.. ::. //\\n * :::.. ..:::::: :===-::::::.. .:::. //\\n * .:::.. .::: -=-:::. .::::. //\\n * .::::. .::: .. .::::. //\\n * .::::. .::: ..:::. //\\n * .:::. .::: .::::. //\\n * .:::.. .::: ..:::.. //\\n * .::::.::: .::::. //\\n * ..:::: ..:::.. //\\n * .: .::::. //\\n * :::::.::::. //\\n * ::::::::. //\\n * :::::::. //\\n * .::::. //\\n * //\\n * //\\n * Smart contract generated by https://nfts2me.com //\\n * //\\n * NFTs2Me. Make an NFT Collection. //\\n * With ZERO Coding Skills. //\\n * //\\n * NFTs2Me is not associated or affiliated with this project. //\\n * NFTs2Me is not liable for any bugs or issues associated with this contract. //\\n * NFTs2Me Terms of Service: https://nfts2me.com/terms-of-service/ //\\n * ----------------------------------------------------------------------------- */\\n\\n/// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.18;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\n/// @title NFTs2Me.com Smart Contracts\\n/// @author The NFTs2Me Team\\n/// @notice Read our terms of service\\n/// @custom:security-contact security@nfts2me.com\\n/// @custom:terms-of-service https://nfts2me.com/terms-of-service/\\n/// @custom:website https://nfts2me.com/\\nabstract contract NFTOwnableUpgradeable is Initializable, ContextUpgradeable {\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n modifier onlyStrictOwner() {\\n _checkStrictOwner();\\n _;\\n }\\n\\n modifier onlyOwnerOrN2M() {\\n _checkOwnerOrN2M();\\n _;\\n }\\n\\n modifier onlyN2M() {\\n _checkN2M();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address);\\n function _strictOwner() internal view virtual returns (address);\\n function _getN2MFeeAddress() internal view virtual returns (address);\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkStrictOwner() internal view virtual {\\n require(_strictOwner() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkOwnerOrN2M() internal view virtual {\\n require(owner() == msg.sender || _getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n function _checkN2M() internal view virtual {\\n require(_getN2MFeeAddress() == msg.sender, \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n}\",\"keccak256\":\"0x211aa015a87135c104386e5cd411e4daef3fe3a2b37192fc5112215e8e9a8407\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1304,"contract":"contracts/ownable/NFTOwnableUpgradeable.sol:NFTOwnableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":1307,"contract":"contracts/ownable/NFTOwnableUpgradeable.sol:NFTOwnableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":6488,"contract":"contracts/ownable/NFTOwnableUpgradeable.sol:NFTOwnableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"notice":"Read our terms of service","version":1}}}}}}