becrypto/build/contracts/IBurnableERC721.json
2023-12-27 14:21:00 +08:00

7181 lines
298 KiB
JSON

{
"contractName": "IBurnableERC721",
"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"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "tokenIds",
"type": "uint256[]"
}
],
"name": "batchMint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"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\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"batchMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":{\"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\":{\"project:/contracts/logic/EvolveProxy.sol\":\"IBurnableERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4\",\"dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2\",\"dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"project:/contracts/core/HasSignature.sol\":{\"keccak256\":\"0x8d4aed7c48ff80fa8feddd3644aed86f94a8246a40023072e58996b3461ee399\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bbba2c6d64bc44877420629c9d7c37c446080336595322d9991b0714be21936\",\"dweb:/ipfs/QmUd6KxHMxDYJjoeeByZLJRAfiytzgsd3HQV1PFfBHgeka\"]},\"project:/contracts/logic/EvolveProxy.sol\":{\"keccak256\":\"0x30f2b5ce15ecd95d268fd93ddc55a74dd81470c1159f96b059a56661212469ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://216111be26f1ea22791295c65266941f35926c45ecb5c024ac590ee2ca2bfa07\",\"dweb:/ipfs/QmZbBRDtgGmx1ebwFuBU1B5P6pxKcEkCGA9P4HyAfLjWG9\"]},\"project:/contracts/utils/TimeChecker.sol\":{\"keccak256\":\"0x1f73a457228fbce3dc365f0c5199f00b2b004c217af932b691a9f823af266804\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0659f8f79b89ac12e5c58bb1560ad26b70a5bf9f1f860a2dbbf7f00088e99d62\",\"dweb:/ipfs/QmPqqPTteQHPQejcnNbpiQkwe9iQ9nPBZe1SCfFabnUeii\"]},\"project:/contracts/utils/UInt.sol\":{\"keccak256\":\"0xabf10d6f1fd47ffe04ab44b8b2f6638eece2276c3a8ba170d0c660e8212a7a8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2b1d61926fb315a771d8fd0d5d9a85ea58a154cd976a7500e12a1e2b3e14083\",\"dweb:/ipfs/QmbJkytTjjABgWbYLJBHv3uoLEAcbF7pWig71sd2rjGG2M\"]}},\"version\":1}",
"bytecode": "0x",
"deployedBytecode": "0x",
"immutableReferences": {},
"generatedSources": [],
"deployedGeneratedSources": [],
"sourceMap": "",
"deployedSourceMap": "",
"source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"../core/HasSignature.sol\";\nimport \"../utils/TimeChecker.sol\";\nimport \"../utils/UInt.sol\";\n\ninterface IBurnableERC721 is IERC721 {\n function burn(uint256 tokenId) external;\n\n function batchMint(address to, uint256[] memory tokenIds) external;\n}\n\ncontract EvolveProxy is Ownable, TimeChecker, HasSignature {\n using UInt for uint256;\n\n IBurnableERC721 public nft;\n\n address public executor;\n\n event TokenEvolved(\n uint256 indexed evolveEventId,\n address indexed owner,\n uint256[] tokenIds\n );\n\n constructor(address _address){\n nft = IBurnableERC721(_address);\n }\n\n /**\n * @dev update executor\n */\n function updateExecutor(address account) external onlyOwner {\n require(account != address(0), \"address can not be zero\");\n executor = account;\n }\n\n /**\n * @dev evolve function to Counter Fire nft NFT\n * tokenIds: [nft_to_evolve, nft_for_burn, nft_for_burn...]\n * nft_to_evolve: nft to evolve, auto mint if not exist\n */\n function evolveNft(\n uint256 evolveEventId,\n uint256[] calldata tokenIds,\n uint256 startTime,\n uint256 saltNonce,\n bytes calldata signature\n ) external signatureValid(signature) timeValid(startTime) {\n require(tokenIds.length > 0, \"EvolveProxy: tokenIds length must > 0\");\n require(tokenIds[0] > 0, \"EvolveProxy: nft to evolve can not be 0\");\n address user = _msgSender();\n \n bytes32 criteriaMessageHash = getMessageHash(\n evolveEventId,\n user,\n startTime,\n saltNonce,\n tokenIds\n );\n checkSigner(executor, criteriaMessageHash, signature);\n try nft.batchMint(user, tokenIds[0].asSingletonArray()) {} catch {}\n require(nft.ownerOf(tokenIds[0]) == user,\"EvolveProxy: not owner of this nft now\");\n if (tokenIds.length > 1) {\n for (uint256 i = 1; i < tokenIds.length; ++i) {\n nft.burn(tokenIds[i]);\n }\n }\n _useSignature(signature);\n emit TokenEvolved(evolveEventId,user,tokenIds);\n }\n\n function getMessageHash(\n uint256 _eventId,\n address _user,\n uint256 _startTime,\n uint256 _saltNonce,\n uint256[] memory _tokenIds\n ) public pure returns (bytes32) {\n bytes memory encoded = abi.encodePacked(_eventId, _user, _startTime, _saltNonce);\n uint256 len = _tokenIds.length;\n for (uint256 i = 0; i < len; ++i) {\n encoded = bytes.concat(encoded, abi.encodePacked(_tokenIds[i]));\n }\n return keccak256(encoded);\n }\n}\n",
"sourcePath": "/Users/zhl/Documents/workspace/crypto/becrypto/contracts/logic/EvolveProxy.sol",
"ast": {
"absolutePath": "project:/contracts/logic/EvolveProxy.sol",
"exportedSymbols": {
"Context": [
6696
],
"ECDSA": [
7365
],
"EvolveProxy": [
11623
],
"HasSignature": [
10869
],
"IBurnableERC721": [
11379
],
"IERC165": [
7401
],
"IERC721": [
5840
],
"Math": [
8267
],
"Ownable": [
651
],
"SignedMath": [
8684
],
"Strings": [
6999
],
"TimeChecker": [
21232
],
"UInt": [
21263
]
},
"id": 11624,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 11358,
"literals": [
"solidity",
"0.8",
".10"
],
"nodeType": "PragmaDirective",
"src": "32:23:54"
},
{
"absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
"file": "@openzeppelin/contracts/access/Ownable.sol",
"id": 11359,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 11624,
"sourceUnit": 652,
"src": "56:52:54",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
"file": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
"id": 11360,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 11624,
"sourceUnit": 5841,
"src": "109:58:54",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "project:/contracts/core/HasSignature.sol",
"file": "../core/HasSignature.sol",
"id": 11361,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 11624,
"sourceUnit": 10870,
"src": "168:34:54",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "project:/contracts/utils/TimeChecker.sol",
"file": "../utils/TimeChecker.sol",
"id": 11362,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 11624,
"sourceUnit": 21233,
"src": "203:34:54",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "project:/contracts/utils/UInt.sol",
"file": "../utils/UInt.sol",
"id": 11363,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 11624,
"sourceUnit": 21264,
"src": "238:27:54",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 11364,
"name": "IERC721",
"nodeType": "IdentifierPath",
"referencedDeclaration": 5840,
"src": "296:7:54"
},
"id": 11365,
"nodeType": "InheritanceSpecifier",
"src": "296:7:54"
}
],
"canonicalName": "IBurnableERC721",
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 11379,
"linearizedBaseContracts": [
11379,
5840,
7401
],
"name": "IBurnableERC721",
"nameLocation": "277:15:54",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "42966c68",
"id": 11370,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "burn",
"nameLocation": "317:4:54",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11368,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11367,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "330:7:54",
"nodeType": "VariableDeclaration",
"scope": 11370,
"src": "322:15:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11366,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "322:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "321:17:54"
},
"returnParameters": {
"id": 11369,
"nodeType": "ParameterList",
"parameters": [],
"src": "347:0:54"
},
"scope": 11379,
"src": "308:40:54",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "4684d7e9",
"id": 11378,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "batchMint",
"nameLocation": "361:9:54",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11376,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11372,
"mutability": "mutable",
"name": "to",
"nameLocation": "379:2:54",
"nodeType": "VariableDeclaration",
"scope": 11378,
"src": "371:10:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11371,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "371:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11375,
"mutability": "mutable",
"name": "tokenIds",
"nameLocation": "400:8:54",
"nodeType": "VariableDeclaration",
"scope": 11378,
"src": "383:25:54",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[]"
},
"typeName": {
"baseType": {
"id": 11373,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "383:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11374,
"nodeType": "ArrayTypeName",
"src": "383:9:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
},
"visibility": "internal"
}
],
"src": "370:39:54"
},
"returnParameters": {
"id": 11377,
"nodeType": "ParameterList",
"parameters": [],
"src": "418:0:54"
},
"scope": 11379,
"src": "352:67:54",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 11624,
"src": "267:154:54",
"usedErrors": []
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 11380,
"name": "Ownable",
"nodeType": "IdentifierPath",
"referencedDeclaration": 651,
"src": "447:7:54"
},
"id": 11381,
"nodeType": "InheritanceSpecifier",
"src": "447:7:54"
},
{
"baseName": {
"id": 11382,
"name": "TimeChecker",
"nodeType": "IdentifierPath",
"referencedDeclaration": 21232,
"src": "456:11:54"
},
"id": 11383,
"nodeType": "InheritanceSpecifier",
"src": "456:11:54"
},
{
"baseName": {
"id": 11384,
"name": "HasSignature",
"nodeType": "IdentifierPath",
"referencedDeclaration": 10869,
"src": "469:12:54"
},
"id": 11385,
"nodeType": "InheritanceSpecifier",
"src": "469:12:54"
}
],
"canonicalName": "EvolveProxy",
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"id": 11623,
"linearizedBaseContracts": [
11623,
10869,
21232,
651,
6696
],
"name": "EvolveProxy",
"nameLocation": "432:11:54",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 11388,
"libraryName": {
"id": 11386,
"name": "UInt",
"nodeType": "IdentifierPath",
"referencedDeclaration": 21263,
"src": "492:4:54"
},
"nodeType": "UsingForDirective",
"src": "486:23:54",
"typeName": {
"id": 11387,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "501:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": false,
"functionSelector": "47ccca02",
"id": 11391,
"mutability": "mutable",
"name": "nft",
"nameLocation": "536:3:54",
"nodeType": "VariableDeclaration",
"scope": 11623,
"src": "513:26:54",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
},
"typeName": {
"id": 11390,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 11389,
"name": "IBurnableERC721",
"nodeType": "IdentifierPath",
"referencedDeclaration": 11379,
"src": "513:15:54"
},
"referencedDeclaration": 11379,
"src": "513:15:54",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "c34c08e5",
"id": 11393,
"mutability": "mutable",
"name": "executor",
"nameLocation": "559:8:54",
"nodeType": "VariableDeclaration",
"scope": 11623,
"src": "544:23:54",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11392,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "544:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "public"
},
{
"anonymous": false,
"id": 11402,
"name": "TokenEvolved",
"nameLocation": "578:12:54",
"nodeType": "EventDefinition",
"parameters": {
"id": 11401,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11395,
"indexed": true,
"mutability": "mutable",
"name": "evolveEventId",
"nameLocation": "612:13:54",
"nodeType": "VariableDeclaration",
"scope": 11402,
"src": "596:29:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11394,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "596:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11397,
"indexed": true,
"mutability": "mutable",
"name": "owner",
"nameLocation": "647:5:54",
"nodeType": "VariableDeclaration",
"scope": 11402,
"src": "631:21:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11396,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "631:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11400,
"indexed": false,
"mutability": "mutable",
"name": "tokenIds",
"nameLocation": "668:8:54",
"nodeType": "VariableDeclaration",
"scope": 11402,
"src": "658:18:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[]"
},
"typeName": {
"baseType": {
"id": 11398,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "658:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11399,
"nodeType": "ArrayTypeName",
"src": "658:9:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
},
"visibility": "internal"
}
],
"src": "590:90:54"
},
"src": "572:109:54"
},
{
"body": {
"id": 11413,
"nodeType": "Block",
"src": "714:42:54",
"statements": [
{
"expression": {
"id": 11411,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 11407,
"name": "nft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11391,
"src": "720:3:54",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 11409,
"name": "_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11404,
"src": "742:8:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11408,
"name": "IBurnableERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11379,
"src": "726:15:54",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IBurnableERC721_$11379_$",
"typeString": "type(contract IBurnableERC721)"
}
},
"id": 11410,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "726:25:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"src": "720:31:54",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"id": 11412,
"nodeType": "ExpressionStatement",
"src": "720:31:54"
}
]
},
"id": 11414,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11405,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11404,
"mutability": "mutable",
"name": "_address",
"nameLocation": "705:8:54",
"nodeType": "VariableDeclaration",
"scope": 11414,
"src": "697:16:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11403,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "697:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "696:18:54"
},
"returnParameters": {
"id": 11406,
"nodeType": "ParameterList",
"parameters": [],
"src": "714:0:54"
},
"scope": 11623,
"src": "685:71:54",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11436,
"nodeType": "Block",
"src": "858:92:54",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 11428,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 11423,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11417,
"src": "872:7:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 11426,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "891:1:54",
"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": 11425,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "883:7:54",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11424,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "883:7:54",
"typeDescriptions": {}
}
},
"id": 11427,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "883:10:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "872:21:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "616464726573732063616e206e6f74206265207a65726f",
"id": 11429,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "895:25:54",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8acc3ee93e123270baeb206c430cf52b6f082d016072bd6f96b9fec703556e4c",
"typeString": "literal_string \"address can not be zero\""
},
"value": "address can not be zero"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8acc3ee93e123270baeb206c430cf52b6f082d016072bd6f96b9fec703556e4c",
"typeString": "literal_string \"address can not be zero\""
}
],
"id": 11422,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "864:7:54",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 11430,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "864:57:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11431,
"nodeType": "ExpressionStatement",
"src": "864:57:54"
},
{
"expression": {
"id": 11434,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 11432,
"name": "executor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11393,
"src": "927:8:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 11433,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11417,
"src": "938:7:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "927:18:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11435,
"nodeType": "ExpressionStatement",
"src": "927:18:54"
}
]
},
"documentation": {
"id": 11415,
"nodeType": "StructuredDocumentation",
"src": "760:35:54",
"text": " @dev update executor"
},
"functionSelector": "74936c16",
"id": 11437,
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 11420,
"kind": "modifierInvocation",
"modifierName": {
"id": 11419,
"name": "onlyOwner",
"nodeType": "IdentifierPath",
"referencedDeclaration": 570,
"src": "848:9:54"
},
"nodeType": "ModifierInvocation",
"src": "848:9:54"
}
],
"name": "updateExecutor",
"nameLocation": "807:14:54",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11418,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11417,
"mutability": "mutable",
"name": "account",
"nameLocation": "830:7:54",
"nodeType": "VariableDeclaration",
"scope": 11437,
"src": "822:15:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11416,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "822:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "821:17:54"
},
"returnParameters": {
"id": 11421,
"nodeType": "ParameterList",
"parameters": [],
"src": "858:0:54"
},
"scope": 11623,
"src": "798:152:54",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 11559,
"nodeType": "Block",
"src": "1351:761:54",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11462,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 11459,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1365:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11460,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "1365:15:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 11461,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1383:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1365:19:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45766f6c766550726f78793a20746f6b656e496473206c656e677468206d757374203e2030",
"id": 11463,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1386:39:54",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8621f1acaf303cbf3d59288adfded750d8b832d0e195e7ed11c71e6adcd95106",
"typeString": "literal_string \"EvolveProxy: tokenIds length must > 0\""
},
"value": "EvolveProxy: tokenIds length must > 0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8621f1acaf303cbf3d59288adfded750d8b832d0e195e7ed11c71e6adcd95106",
"typeString": "literal_string \"EvolveProxy: tokenIds length must > 0\""
}
],
"id": 11458,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "1357:7:54",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 11464,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1357:69:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11465,
"nodeType": "ExpressionStatement",
"src": "1357:69:54"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11471,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"baseExpression": {
"id": 11467,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1440:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11469,
"indexExpression": {
"hexValue": "30",
"id": 11468,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1449:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1440:11:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 11470,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1454:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1440:15:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45766f6c766550726f78793a206e667420746f2065766f6c76652063616e206e6f742062652030",
"id": 11472,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1457:41:54",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b4a8830f3b93c410a9e6707b0f453ccc025d08a261e6c89cde145ebecb9afb39",
"typeString": "literal_string \"EvolveProxy: nft to evolve can not be 0\""
},
"value": "EvolveProxy: nft to evolve can not be 0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b4a8830f3b93c410a9e6707b0f453ccc025d08a261e6c89cde145ebecb9afb39",
"typeString": "literal_string \"EvolveProxy: nft to evolve can not be 0\""
}
],
"id": 11466,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "1432:7:54",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 11473,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1432:67:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11474,
"nodeType": "ExpressionStatement",
"src": "1432:67:54"
},
{
"assignments": [
11476
],
"declarations": [
{
"constant": false,
"id": 11476,
"mutability": "mutable",
"name": "user",
"nameLocation": "1513:4:54",
"nodeType": "VariableDeclaration",
"scope": 11559,
"src": "1505:12:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11475,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1505:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 11479,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 11477,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6686,
"src": "1520:10:54",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 11478,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1520:12:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1505:27:54"
},
{
"assignments": [
11481
],
"declarations": [
{
"constant": false,
"id": 11481,
"mutability": "mutable",
"name": "criteriaMessageHash",
"nameLocation": "1551:19:54",
"nodeType": "VariableDeclaration",
"scope": 11559,
"src": "1543:27:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 11480,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1543:7:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"id": 11489,
"initialValue": {
"arguments": [
{
"id": 11483,
"name": "evolveEventId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11440,
"src": "1595:13:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 11484,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11476,
"src": "1616:4:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 11485,
"name": "startTime",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11445,
"src": "1628:9:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 11486,
"name": "saltNonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11447,
"src": "1645:9:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 11487,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1662:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
],
"id": 11482,
"name": "getMessageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11622,
"src": "1573:14:54",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (uint256,address,uint256,uint256,uint256[] memory) pure returns (bytes32)"
}
},
"id": 11488,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1573:103:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1543:133:54"
},
{
"expression": {
"arguments": [
{
"id": 11491,
"name": "executor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11393,
"src": "1694:8:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 11492,
"name": "criteriaMessageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11481,
"src": "1704:19:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"id": 11493,
"name": "signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11449,
"src": "1725:9:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
],
"id": 11490,
"name": "checkSigner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10836,
"src": "1682:11:54",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address,bytes32,bytes memory) pure"
}
},
"id": 11494,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1682:53:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11495,
"nodeType": "ExpressionStatement",
"src": "1682:53:54"
},
{
"clauses": [
{
"block": {
"id": 11505,
"nodeType": "Block",
"src": "1797:2:54",
"statements": []
},
"errorName": "",
"id": 11506,
"nodeType": "TryCatchClause",
"src": "1797:2:54"
},
{
"block": {
"id": 11507,
"nodeType": "Block",
"src": "1806:2:54",
"statements": []
},
"errorName": "",
"id": 11508,
"nodeType": "TryCatchClause",
"src": "1800:8:54"
}
],
"externalCall": {
"arguments": [
{
"id": 11498,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11476,
"src": "1759:4:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"baseExpression": {
"id": 11499,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1765:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11501,
"indexExpression": {
"hexValue": "30",
"id": 11500,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1774:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1765:11:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11502,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "asSingletonArray",
"nodeType": "MemberAccess",
"referencedDeclaration": 21262,
"src": "1765:28:54",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$bound_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256[] memory)"
}
},
"id": 11503,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1765:30:54",
"tryCall": false,
"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"
}
],
"expression": {
"id": 11496,
"name": "nft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11391,
"src": "1745:3:54",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"id": 11497,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "batchMint",
"nodeType": "MemberAccess",
"referencedDeclaration": 11378,
"src": "1745:13:54",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
"typeString": "function (address,uint256[] memory) external"
}
},
"id": 11504,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1745:51:54",
"tryCall": true,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11509,
"nodeType": "TryStatement",
"src": "1741:67:54"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 11518,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"baseExpression": {
"id": 11513,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1833:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11515,
"indexExpression": {
"hexValue": "30",
"id": 11514,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1842:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1833:11:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 11511,
"name": "nft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11391,
"src": "1821:3:54",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"id": 11512,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 5773,
"src": "1821:11:54",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view external returns (address)"
}
},
"id": 11516,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1821:24:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 11517,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11476,
"src": "1849:4:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1821:32:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45766f6c766550726f78793a206e6f74206f776e6572206f662074686973206e6674206e6f77",
"id": 11519,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1854:40:54",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_5ebbc34bdac4db27a4af5b77a5bf5ab3476d8a96b6a96535d1460b8ed795cdf1",
"typeString": "literal_string \"EvolveProxy: not owner of this nft now\""
},
"value": "EvolveProxy: not owner of this nft now"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_5ebbc34bdac4db27a4af5b77a5bf5ab3476d8a96b6a96535d1460b8ed795cdf1",
"typeString": "literal_string \"EvolveProxy: not owner of this nft now\""
}
],
"id": 11510,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "1813:7:54",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 11520,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1813:82:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11521,
"nodeType": "ExpressionStatement",
"src": "1813:82:54"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11525,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 11522,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1905:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11523,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "1905:15:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "31",
"id": 11524,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1923:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "1905:19:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11548,
"nodeType": "IfStatement",
"src": "1901:125:54",
"trueBody": {
"id": 11547,
"nodeType": "Block",
"src": "1926:100:54",
"statements": [
{
"body": {
"id": 11545,
"nodeType": "Block",
"src": "1980:40:54",
"statements": [
{
"expression": {
"arguments": [
{
"baseExpression": {
"id": 11540,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1999:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11542,
"indexExpression": {
"id": 11541,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11527,
"src": "2008:1:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1999:11:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 11537,
"name": "nft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11391,
"src": "1990:3:54",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"id": 11539,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "burn",
"nodeType": "MemberAccess",
"referencedDeclaration": 11370,
"src": "1990:8:54",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256) external"
}
},
"id": 11543,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1990:21:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11544,
"nodeType": "ExpressionStatement",
"src": "1990:21:54"
}
]
},
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11533,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 11530,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11527,
"src": "1954:1:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"expression": {
"id": 11531,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1958:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11532,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "1958:15:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1954:19:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11546,
"initializationExpression": {
"assignments": [
11527
],
"declarations": [
{
"constant": false,
"id": 11527,
"mutability": "mutable",
"name": "i",
"nameLocation": "1947:1:54",
"nodeType": "VariableDeclaration",
"scope": 11546,
"src": "1939:9:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11526,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1939:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 11529,
"initialValue": {
"hexValue": "31",
"id": 11528,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1951:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"nodeType": "VariableDeclarationStatement",
"src": "1939:13:54"
},
"loopExpression": {
"expression": {
"id": 11535,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": true,
"src": "1975:3:54",
"subExpression": {
"id": 11534,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11527,
"src": "1977:1:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11536,
"nodeType": "ExpressionStatement",
"src": "1975:3:54"
},
"nodeType": "ForStatement",
"src": "1934:86:54"
}
]
}
},
{
"expression": {
"arguments": [
{
"id": 11550,
"name": "signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11449,
"src": "2045:9:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
],
"id": 11549,
"name": "_useSignature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10868,
"src": "2031:13:54",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes_calldata_ptr_$returns$__$",
"typeString": "function (bytes calldata)"
}
},
"id": 11551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2031:24:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11552,
"nodeType": "ExpressionStatement",
"src": "2031:24:54"
},
{
"eventCall": {
"arguments": [
{
"id": 11554,
"name": "evolveEventId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11440,
"src": "2079:13:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 11555,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11476,
"src": "2093:4:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 11556,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "2098:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
],
"id": 11553,
"name": "TokenEvolved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11402,
"src": "2066:12:54",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
"typeString": "function (uint256,address,uint256[] memory)"
}
},
"id": 11557,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2066:41:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11558,
"nodeType": "EmitStatement",
"src": "2061:46:54"
}
]
},
"documentation": {
"id": 11438,
"nodeType": "StructuredDocumentation",
"src": "954:179:54",
"text": " @dev evolve function to Counter Fire nft NFT\n tokenIds: [nft_to_evolve, nft_for_burn, nft_for_burn...]\n nft_to_evolve: nft to evolve, auto mint if not exist"
},
"functionSelector": "89cc6c67",
"id": 11560,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"id": 11452,
"name": "signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11449,
"src": "1319:9:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"id": 11453,
"kind": "modifierInvocation",
"modifierName": {
"id": 11451,
"name": "signatureValid",
"nodeType": "IdentifierPath",
"referencedDeclaration": 10850,
"src": "1304:14:54"
},
"nodeType": "ModifierInvocation",
"src": "1304:25:54"
},
{
"arguments": [
{
"id": 11455,
"name": "startTime",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11445,
"src": "1340:9:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 11456,
"kind": "modifierInvocation",
"modifierName": {
"id": 11454,
"name": "timeValid",
"nodeType": "IdentifierPath",
"referencedDeclaration": 21202,
"src": "1330:9:54"
},
"nodeType": "ModifierInvocation",
"src": "1330:20:54"
}
],
"name": "evolveNft",
"nameLocation": "1145:9:54",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11450,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11440,
"mutability": "mutable",
"name": "evolveEventId",
"nameLocation": "1168:13:54",
"nodeType": "VariableDeclaration",
"scope": 11560,
"src": "1160:21:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11439,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1160:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11443,
"mutability": "mutable",
"name": "tokenIds",
"nameLocation": "1206:8:54",
"nodeType": "VariableDeclaration",
"scope": 11560,
"src": "1187:27:54",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[]"
},
"typeName": {
"baseType": {
"id": 11441,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1187:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11442,
"nodeType": "ArrayTypeName",
"src": "1187:9:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11445,
"mutability": "mutable",
"name": "startTime",
"nameLocation": "1228:9:54",
"nodeType": "VariableDeclaration",
"scope": 11560,
"src": "1220:17:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11444,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1220:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11447,
"mutability": "mutable",
"name": "saltNonce",
"nameLocation": "1251:9:54",
"nodeType": "VariableDeclaration",
"scope": 11560,
"src": "1243:17:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11446,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1243:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11449,
"mutability": "mutable",
"name": "signature",
"nameLocation": "1281:9:54",
"nodeType": "VariableDeclaration",
"scope": 11560,
"src": "1266:24:54",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 11448,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1266:5:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "1154:140:54"
},
"returnParameters": {
"id": 11457,
"nodeType": "ParameterList",
"parameters": [],
"src": "1351:0:54"
},
"scope": 11623,
"src": "1136:976:54",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 11621,
"nodeType": "Block",
"src": "2295:275:54",
"statements": [
{
"assignments": [
11577
],
"declarations": [
{
"constant": false,
"id": 11577,
"mutability": "mutable",
"name": "encoded",
"nameLocation": "2314:7:54",
"nodeType": "VariableDeclaration",
"scope": 11621,
"src": "2301:20:54",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 11576,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2301:5:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 11585,
"initialValue": {
"arguments": [
{
"id": 11580,
"name": "_eventId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11562,
"src": "2341:8:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 11581,
"name": "_user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11564,
"src": "2351:5:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 11582,
"name": "_startTime",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11566,
"src": "2358:10:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 11583,
"name": "_saltNonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11568,
"src": "2370:10:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 11578,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967295,
"src": "2324:3:54",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 11579,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"src": "2324:16:54",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 11584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2324:57:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2301:80:54"
},
{
"assignments": [
11587
],
"declarations": [
{
"constant": false,
"id": 11587,
"mutability": "mutable",
"name": "len",
"nameLocation": "2395:3:54",
"nodeType": "VariableDeclaration",
"scope": 11621,
"src": "2387:11:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11586,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2387:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 11590,
"initialValue": {
"expression": {
"id": 11588,
"name": "_tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11571,
"src": "2401:9:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 11589,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "2401:16:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2387:30:54"
},
{
"body": {
"id": 11615,
"nodeType": "Block",
"src": "2457:78:54",
"statements": [
{
"expression": {
"id": 11613,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 11601,
"name": "encoded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11577,
"src": "2465:7:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 11605,
"name": "encoded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11577,
"src": "2488:7:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"arguments": [
{
"baseExpression": {
"id": 11608,
"name": "_tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11571,
"src": "2514:9:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 11610,
"indexExpression": {
"id": 11609,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11592,
"src": "2524:1:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2514:12:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 11606,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967295,
"src": "2497:3:54",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 11607,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"src": "2497:16:54",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 11611,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2497:30:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 11603,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2475:5:54",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
"typeString": "type(bytes storage pointer)"
},
"typeName": {
"id": 11602,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2475:5:54",
"typeDescriptions": {}
}
},
"id": 11604,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "concat",
"nodeType": "MemberAccess",
"src": "2475:12:54",
"typeDescriptions": {
"typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 11612,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2475:53:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"src": "2465:63:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 11614,
"nodeType": "ExpressionStatement",
"src": "2465:63:54"
}
]
},
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 11595,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11592,
"src": "2443:1:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"id": 11596,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11587,
"src": "2447:3:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2443:7:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11616,
"initializationExpression": {
"assignments": [
11592
],
"declarations": [
{
"constant": false,
"id": 11592,
"mutability": "mutable",
"name": "i",
"nameLocation": "2436:1:54",
"nodeType": "VariableDeclaration",
"scope": 11616,
"src": "2428:9:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11591,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2428:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 11594,
"initialValue": {
"hexValue": "30",
"id": 11593,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2440:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "2428:13:54"
},
"loopExpression": {
"expression": {
"id": 11599,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": true,
"src": "2452:3:54",
"subExpression": {
"id": 11598,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11592,
"src": "2454:1:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11600,
"nodeType": "ExpressionStatement",
"src": "2452:3:54"
},
"nodeType": "ForStatement",
"src": "2423:112:54"
},
{
"expression": {
"arguments": [
{
"id": 11618,
"name": "encoded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11577,
"src": "2557:7:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 11617,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967288,
"src": "2547:9:54",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 11619,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2547:18:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 11575,
"id": 11620,
"nodeType": "Return",
"src": "2540:25:54"
}
]
},
"functionSelector": "79578cc8",
"id": 11622,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getMessageHash",
"nameLocation": "2125:14:54",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11572,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11562,
"mutability": "mutable",
"name": "_eventId",
"nameLocation": "2153:8:54",
"nodeType": "VariableDeclaration",
"scope": 11622,
"src": "2145:16:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11561,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2145:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11564,
"mutability": "mutable",
"name": "_user",
"nameLocation": "2175:5:54",
"nodeType": "VariableDeclaration",
"scope": 11622,
"src": "2167:13:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11563,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2167:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11566,
"mutability": "mutable",
"name": "_startTime",
"nameLocation": "2194:10:54",
"nodeType": "VariableDeclaration",
"scope": 11622,
"src": "2186:18:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11565,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2186:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11568,
"mutability": "mutable",
"name": "_saltNonce",
"nameLocation": "2218:10:54",
"nodeType": "VariableDeclaration",
"scope": 11622,
"src": "2210:18:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11567,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2210:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11571,
"mutability": "mutable",
"name": "_tokenIds",
"nameLocation": "2251:9:54",
"nodeType": "VariableDeclaration",
"scope": 11622,
"src": "2234:26:54",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[]"
},
"typeName": {
"baseType": {
"id": 11569,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2234:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11570,
"nodeType": "ArrayTypeName",
"src": "2234:9:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
},
"visibility": "internal"
}
],
"src": "2139:125:54"
},
"returnParameters": {
"id": 11575,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11574,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 11622,
"src": "2286:7:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 11573,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2286:7:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "2285:9:54"
},
"scope": 11623,
"src": "2116:454:54",
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
}
],
"scope": 11624,
"src": "423:2149:54",
"usedErrors": []
}
],
"src": "32:2541:54"
},
"legacyAST": {
"absolutePath": "project:/contracts/logic/EvolveProxy.sol",
"exportedSymbols": {
"Context": [
6696
],
"ECDSA": [
7365
],
"EvolveProxy": [
11623
],
"HasSignature": [
10869
],
"IBurnableERC721": [
11379
],
"IERC165": [
7401
],
"IERC721": [
5840
],
"Math": [
8267
],
"Ownable": [
651
],
"SignedMath": [
8684
],
"Strings": [
6999
],
"TimeChecker": [
21232
],
"UInt": [
21263
]
},
"id": 11624,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 11358,
"literals": [
"solidity",
"0.8",
".10"
],
"nodeType": "PragmaDirective",
"src": "32:23:54"
},
{
"absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
"file": "@openzeppelin/contracts/access/Ownable.sol",
"id": 11359,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 11624,
"sourceUnit": 652,
"src": "56:52:54",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
"file": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
"id": 11360,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 11624,
"sourceUnit": 5841,
"src": "109:58:54",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "project:/contracts/core/HasSignature.sol",
"file": "../core/HasSignature.sol",
"id": 11361,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 11624,
"sourceUnit": 10870,
"src": "168:34:54",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "project:/contracts/utils/TimeChecker.sol",
"file": "../utils/TimeChecker.sol",
"id": 11362,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 11624,
"sourceUnit": 21233,
"src": "203:34:54",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "project:/contracts/utils/UInt.sol",
"file": "../utils/UInt.sol",
"id": 11363,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 11624,
"sourceUnit": 21264,
"src": "238:27:54",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 11364,
"name": "IERC721",
"nodeType": "IdentifierPath",
"referencedDeclaration": 5840,
"src": "296:7:54"
},
"id": 11365,
"nodeType": "InheritanceSpecifier",
"src": "296:7:54"
}
],
"canonicalName": "IBurnableERC721",
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 11379,
"linearizedBaseContracts": [
11379,
5840,
7401
],
"name": "IBurnableERC721",
"nameLocation": "277:15:54",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "42966c68",
"id": 11370,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "burn",
"nameLocation": "317:4:54",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11368,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11367,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "330:7:54",
"nodeType": "VariableDeclaration",
"scope": 11370,
"src": "322:15:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11366,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "322:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "321:17:54"
},
"returnParameters": {
"id": 11369,
"nodeType": "ParameterList",
"parameters": [],
"src": "347:0:54"
},
"scope": 11379,
"src": "308:40:54",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "4684d7e9",
"id": 11378,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "batchMint",
"nameLocation": "361:9:54",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11376,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11372,
"mutability": "mutable",
"name": "to",
"nameLocation": "379:2:54",
"nodeType": "VariableDeclaration",
"scope": 11378,
"src": "371:10:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11371,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "371:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11375,
"mutability": "mutable",
"name": "tokenIds",
"nameLocation": "400:8:54",
"nodeType": "VariableDeclaration",
"scope": 11378,
"src": "383:25:54",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[]"
},
"typeName": {
"baseType": {
"id": 11373,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "383:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11374,
"nodeType": "ArrayTypeName",
"src": "383:9:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
},
"visibility": "internal"
}
],
"src": "370:39:54"
},
"returnParameters": {
"id": 11377,
"nodeType": "ParameterList",
"parameters": [],
"src": "418:0:54"
},
"scope": 11379,
"src": "352:67:54",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 11624,
"src": "267:154:54",
"usedErrors": []
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 11380,
"name": "Ownable",
"nodeType": "IdentifierPath",
"referencedDeclaration": 651,
"src": "447:7:54"
},
"id": 11381,
"nodeType": "InheritanceSpecifier",
"src": "447:7:54"
},
{
"baseName": {
"id": 11382,
"name": "TimeChecker",
"nodeType": "IdentifierPath",
"referencedDeclaration": 21232,
"src": "456:11:54"
},
"id": 11383,
"nodeType": "InheritanceSpecifier",
"src": "456:11:54"
},
{
"baseName": {
"id": 11384,
"name": "HasSignature",
"nodeType": "IdentifierPath",
"referencedDeclaration": 10869,
"src": "469:12:54"
},
"id": 11385,
"nodeType": "InheritanceSpecifier",
"src": "469:12:54"
}
],
"canonicalName": "EvolveProxy",
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"id": 11623,
"linearizedBaseContracts": [
11623,
10869,
21232,
651,
6696
],
"name": "EvolveProxy",
"nameLocation": "432:11:54",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 11388,
"libraryName": {
"id": 11386,
"name": "UInt",
"nodeType": "IdentifierPath",
"referencedDeclaration": 21263,
"src": "492:4:54"
},
"nodeType": "UsingForDirective",
"src": "486:23:54",
"typeName": {
"id": 11387,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "501:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": false,
"functionSelector": "47ccca02",
"id": 11391,
"mutability": "mutable",
"name": "nft",
"nameLocation": "536:3:54",
"nodeType": "VariableDeclaration",
"scope": 11623,
"src": "513:26:54",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
},
"typeName": {
"id": 11390,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 11389,
"name": "IBurnableERC721",
"nodeType": "IdentifierPath",
"referencedDeclaration": 11379,
"src": "513:15:54"
},
"referencedDeclaration": 11379,
"src": "513:15:54",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "c34c08e5",
"id": 11393,
"mutability": "mutable",
"name": "executor",
"nameLocation": "559:8:54",
"nodeType": "VariableDeclaration",
"scope": 11623,
"src": "544:23:54",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11392,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "544:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "public"
},
{
"anonymous": false,
"id": 11402,
"name": "TokenEvolved",
"nameLocation": "578:12:54",
"nodeType": "EventDefinition",
"parameters": {
"id": 11401,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11395,
"indexed": true,
"mutability": "mutable",
"name": "evolveEventId",
"nameLocation": "612:13:54",
"nodeType": "VariableDeclaration",
"scope": 11402,
"src": "596:29:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11394,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "596:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11397,
"indexed": true,
"mutability": "mutable",
"name": "owner",
"nameLocation": "647:5:54",
"nodeType": "VariableDeclaration",
"scope": 11402,
"src": "631:21:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11396,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "631:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11400,
"indexed": false,
"mutability": "mutable",
"name": "tokenIds",
"nameLocation": "668:8:54",
"nodeType": "VariableDeclaration",
"scope": 11402,
"src": "658:18:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[]"
},
"typeName": {
"baseType": {
"id": 11398,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "658:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11399,
"nodeType": "ArrayTypeName",
"src": "658:9:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
},
"visibility": "internal"
}
],
"src": "590:90:54"
},
"src": "572:109:54"
},
{
"body": {
"id": 11413,
"nodeType": "Block",
"src": "714:42:54",
"statements": [
{
"expression": {
"id": 11411,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 11407,
"name": "nft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11391,
"src": "720:3:54",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 11409,
"name": "_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11404,
"src": "742:8:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 11408,
"name": "IBurnableERC721",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11379,
"src": "726:15:54",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IBurnableERC721_$11379_$",
"typeString": "type(contract IBurnableERC721)"
}
},
"id": 11410,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "726:25:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"src": "720:31:54",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"id": 11412,
"nodeType": "ExpressionStatement",
"src": "720:31:54"
}
]
},
"id": 11414,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11405,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11404,
"mutability": "mutable",
"name": "_address",
"nameLocation": "705:8:54",
"nodeType": "VariableDeclaration",
"scope": 11414,
"src": "697:16:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11403,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "697:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "696:18:54"
},
"returnParameters": {
"id": 11406,
"nodeType": "ParameterList",
"parameters": [],
"src": "714:0:54"
},
"scope": 11623,
"src": "685:71:54",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 11436,
"nodeType": "Block",
"src": "858:92:54",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 11428,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 11423,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11417,
"src": "872:7:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 11426,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "891:1:54",
"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": 11425,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "883:7:54",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 11424,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "883:7:54",
"typeDescriptions": {}
}
},
"id": 11427,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "883:10:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "872:21:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "616464726573732063616e206e6f74206265207a65726f",
"id": 11429,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "895:25:54",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8acc3ee93e123270baeb206c430cf52b6f082d016072bd6f96b9fec703556e4c",
"typeString": "literal_string \"address can not be zero\""
},
"value": "address can not be zero"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8acc3ee93e123270baeb206c430cf52b6f082d016072bd6f96b9fec703556e4c",
"typeString": "literal_string \"address can not be zero\""
}
],
"id": 11422,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "864:7:54",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 11430,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "864:57:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11431,
"nodeType": "ExpressionStatement",
"src": "864:57:54"
},
{
"expression": {
"id": 11434,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 11432,
"name": "executor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11393,
"src": "927:8:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 11433,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11417,
"src": "938:7:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "927:18:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 11435,
"nodeType": "ExpressionStatement",
"src": "927:18:54"
}
]
},
"documentation": {
"id": 11415,
"nodeType": "StructuredDocumentation",
"src": "760:35:54",
"text": " @dev update executor"
},
"functionSelector": "74936c16",
"id": 11437,
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 11420,
"kind": "modifierInvocation",
"modifierName": {
"id": 11419,
"name": "onlyOwner",
"nodeType": "IdentifierPath",
"referencedDeclaration": 570,
"src": "848:9:54"
},
"nodeType": "ModifierInvocation",
"src": "848:9:54"
}
],
"name": "updateExecutor",
"nameLocation": "807:14:54",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11418,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11417,
"mutability": "mutable",
"name": "account",
"nameLocation": "830:7:54",
"nodeType": "VariableDeclaration",
"scope": 11437,
"src": "822:15:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11416,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "822:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "821:17:54"
},
"returnParameters": {
"id": 11421,
"nodeType": "ParameterList",
"parameters": [],
"src": "858:0:54"
},
"scope": 11623,
"src": "798:152:54",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 11559,
"nodeType": "Block",
"src": "1351:761:54",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11462,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 11459,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1365:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11460,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "1365:15:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 11461,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1383:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1365:19:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45766f6c766550726f78793a20746f6b656e496473206c656e677468206d757374203e2030",
"id": 11463,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1386:39:54",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8621f1acaf303cbf3d59288adfded750d8b832d0e195e7ed11c71e6adcd95106",
"typeString": "literal_string \"EvolveProxy: tokenIds length must > 0\""
},
"value": "EvolveProxy: tokenIds length must > 0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8621f1acaf303cbf3d59288adfded750d8b832d0e195e7ed11c71e6adcd95106",
"typeString": "literal_string \"EvolveProxy: tokenIds length must > 0\""
}
],
"id": 11458,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "1357:7:54",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 11464,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1357:69:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11465,
"nodeType": "ExpressionStatement",
"src": "1357:69:54"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11471,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"baseExpression": {
"id": 11467,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1440:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11469,
"indexExpression": {
"hexValue": "30",
"id": 11468,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1449:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1440:11:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 11470,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1454:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1440:15:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45766f6c766550726f78793a206e667420746f2065766f6c76652063616e206e6f742062652030",
"id": 11472,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1457:41:54",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b4a8830f3b93c410a9e6707b0f453ccc025d08a261e6c89cde145ebecb9afb39",
"typeString": "literal_string \"EvolveProxy: nft to evolve can not be 0\""
},
"value": "EvolveProxy: nft to evolve can not be 0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b4a8830f3b93c410a9e6707b0f453ccc025d08a261e6c89cde145ebecb9afb39",
"typeString": "literal_string \"EvolveProxy: nft to evolve can not be 0\""
}
],
"id": 11466,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "1432:7:54",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 11473,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1432:67:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11474,
"nodeType": "ExpressionStatement",
"src": "1432:67:54"
},
{
"assignments": [
11476
],
"declarations": [
{
"constant": false,
"id": 11476,
"mutability": "mutable",
"name": "user",
"nameLocation": "1513:4:54",
"nodeType": "VariableDeclaration",
"scope": 11559,
"src": "1505:12:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11475,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1505:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 11479,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 11477,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6686,
"src": "1520:10:54",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 11478,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1520:12:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1505:27:54"
},
{
"assignments": [
11481
],
"declarations": [
{
"constant": false,
"id": 11481,
"mutability": "mutable",
"name": "criteriaMessageHash",
"nameLocation": "1551:19:54",
"nodeType": "VariableDeclaration",
"scope": 11559,
"src": "1543:27:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 11480,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1543:7:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"id": 11489,
"initialValue": {
"arguments": [
{
"id": 11483,
"name": "evolveEventId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11440,
"src": "1595:13:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 11484,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11476,
"src": "1616:4:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 11485,
"name": "startTime",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11445,
"src": "1628:9:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 11486,
"name": "saltNonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11447,
"src": "1645:9:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 11487,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1662:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
],
"id": 11482,
"name": "getMessageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11622,
"src": "1573:14:54",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (uint256,address,uint256,uint256,uint256[] memory) pure returns (bytes32)"
}
},
"id": 11488,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1573:103:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1543:133:54"
},
{
"expression": {
"arguments": [
{
"id": 11491,
"name": "executor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11393,
"src": "1694:8:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 11492,
"name": "criteriaMessageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11481,
"src": "1704:19:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"id": 11493,
"name": "signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11449,
"src": "1725:9:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
],
"id": 11490,
"name": "checkSigner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10836,
"src": "1682:11:54",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address,bytes32,bytes memory) pure"
}
},
"id": 11494,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1682:53:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11495,
"nodeType": "ExpressionStatement",
"src": "1682:53:54"
},
{
"clauses": [
{
"block": {
"id": 11505,
"nodeType": "Block",
"src": "1797:2:54",
"statements": []
},
"errorName": "",
"id": 11506,
"nodeType": "TryCatchClause",
"src": "1797:2:54"
},
{
"block": {
"id": 11507,
"nodeType": "Block",
"src": "1806:2:54",
"statements": []
},
"errorName": "",
"id": 11508,
"nodeType": "TryCatchClause",
"src": "1800:8:54"
}
],
"externalCall": {
"arguments": [
{
"id": 11498,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11476,
"src": "1759:4:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"baseExpression": {
"id": 11499,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1765:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11501,
"indexExpression": {
"hexValue": "30",
"id": 11500,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1774:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1765:11:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11502,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "asSingletonArray",
"nodeType": "MemberAccess",
"referencedDeclaration": 21262,
"src": "1765:28:54",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$bound_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256[] memory)"
}
},
"id": 11503,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1765:30:54",
"tryCall": false,
"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"
}
],
"expression": {
"id": 11496,
"name": "nft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11391,
"src": "1745:3:54",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"id": 11497,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "batchMint",
"nodeType": "MemberAccess",
"referencedDeclaration": 11378,
"src": "1745:13:54",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
"typeString": "function (address,uint256[] memory) external"
}
},
"id": 11504,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1745:51:54",
"tryCall": true,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11509,
"nodeType": "TryStatement",
"src": "1741:67:54"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 11518,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"baseExpression": {
"id": 11513,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1833:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11515,
"indexExpression": {
"hexValue": "30",
"id": 11514,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1842:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1833:11:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 11511,
"name": "nft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11391,
"src": "1821:3:54",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"id": 11512,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "ownerOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 5773,
"src": "1821:11:54",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view external returns (address)"
}
},
"id": 11516,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1821:24:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 11517,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11476,
"src": "1849:4:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1821:32:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "45766f6c766550726f78793a206e6f74206f776e6572206f662074686973206e6674206e6f77",
"id": 11519,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1854:40:54",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_5ebbc34bdac4db27a4af5b77a5bf5ab3476d8a96b6a96535d1460b8ed795cdf1",
"typeString": "literal_string \"EvolveProxy: not owner of this nft now\""
},
"value": "EvolveProxy: not owner of this nft now"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_5ebbc34bdac4db27a4af5b77a5bf5ab3476d8a96b6a96535d1460b8ed795cdf1",
"typeString": "literal_string \"EvolveProxy: not owner of this nft now\""
}
],
"id": 11510,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "1813:7:54",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 11520,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1813:82:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11521,
"nodeType": "ExpressionStatement",
"src": "1813:82:54"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11525,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 11522,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1905:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11523,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "1905:15:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "31",
"id": 11524,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1923:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "1905:19:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11548,
"nodeType": "IfStatement",
"src": "1901:125:54",
"trueBody": {
"id": 11547,
"nodeType": "Block",
"src": "1926:100:54",
"statements": [
{
"body": {
"id": 11545,
"nodeType": "Block",
"src": "1980:40:54",
"statements": [
{
"expression": {
"arguments": [
{
"baseExpression": {
"id": 11540,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1999:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11542,
"indexExpression": {
"id": 11541,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11527,
"src": "2008:1:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1999:11:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 11537,
"name": "nft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11391,
"src": "1990:3:54",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBurnableERC721_$11379",
"typeString": "contract IBurnableERC721"
}
},
"id": 11539,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "burn",
"nodeType": "MemberAccess",
"referencedDeclaration": 11370,
"src": "1990:8:54",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256) external"
}
},
"id": 11543,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1990:21:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11544,
"nodeType": "ExpressionStatement",
"src": "1990:21:54"
}
]
},
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11533,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 11530,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11527,
"src": "1954:1:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"expression": {
"id": 11531,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "1958:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
},
"id": 11532,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "1958:15:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1954:19:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11546,
"initializationExpression": {
"assignments": [
11527
],
"declarations": [
{
"constant": false,
"id": 11527,
"mutability": "mutable",
"name": "i",
"nameLocation": "1947:1:54",
"nodeType": "VariableDeclaration",
"scope": 11546,
"src": "1939:9:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11526,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1939:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 11529,
"initialValue": {
"hexValue": "31",
"id": 11528,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1951:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"nodeType": "VariableDeclarationStatement",
"src": "1939:13:54"
},
"loopExpression": {
"expression": {
"id": 11535,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": true,
"src": "1975:3:54",
"subExpression": {
"id": 11534,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11527,
"src": "1977:1:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11536,
"nodeType": "ExpressionStatement",
"src": "1975:3:54"
},
"nodeType": "ForStatement",
"src": "1934:86:54"
}
]
}
},
{
"expression": {
"arguments": [
{
"id": 11550,
"name": "signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11449,
"src": "2045:9:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
],
"id": 11549,
"name": "_useSignature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10868,
"src": "2031:13:54",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes_calldata_ptr_$returns$__$",
"typeString": "function (bytes calldata)"
}
},
"id": 11551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2031:24:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11552,
"nodeType": "ExpressionStatement",
"src": "2031:24:54"
},
{
"eventCall": {
"arguments": [
{
"id": 11554,
"name": "evolveEventId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11440,
"src": "2079:13:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 11555,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11476,
"src": "2093:4:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 11556,
"name": "tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11443,
"src": "2098:8:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[] calldata"
}
],
"id": 11553,
"name": "TokenEvolved",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11402,
"src": "2066:12:54",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
"typeString": "function (uint256,address,uint256[] memory)"
}
},
"id": 11557,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2066:41:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 11558,
"nodeType": "EmitStatement",
"src": "2061:46:54"
}
]
},
"documentation": {
"id": 11438,
"nodeType": "StructuredDocumentation",
"src": "954:179:54",
"text": " @dev evolve function to Counter Fire nft NFT\n tokenIds: [nft_to_evolve, nft_for_burn, nft_for_burn...]\n nft_to_evolve: nft to evolve, auto mint if not exist"
},
"functionSelector": "89cc6c67",
"id": 11560,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": [
{
"id": 11452,
"name": "signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11449,
"src": "1319:9:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"id": 11453,
"kind": "modifierInvocation",
"modifierName": {
"id": 11451,
"name": "signatureValid",
"nodeType": "IdentifierPath",
"referencedDeclaration": 10850,
"src": "1304:14:54"
},
"nodeType": "ModifierInvocation",
"src": "1304:25:54"
},
{
"arguments": [
{
"id": 11455,
"name": "startTime",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11445,
"src": "1340:9:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 11456,
"kind": "modifierInvocation",
"modifierName": {
"id": 11454,
"name": "timeValid",
"nodeType": "IdentifierPath",
"referencedDeclaration": 21202,
"src": "1330:9:54"
},
"nodeType": "ModifierInvocation",
"src": "1330:20:54"
}
],
"name": "evolveNft",
"nameLocation": "1145:9:54",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11450,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11440,
"mutability": "mutable",
"name": "evolveEventId",
"nameLocation": "1168:13:54",
"nodeType": "VariableDeclaration",
"scope": 11560,
"src": "1160:21:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11439,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1160:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11443,
"mutability": "mutable",
"name": "tokenIds",
"nameLocation": "1206:8:54",
"nodeType": "VariableDeclaration",
"scope": 11560,
"src": "1187:27:54",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
"typeString": "uint256[]"
},
"typeName": {
"baseType": {
"id": 11441,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1187:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11442,
"nodeType": "ArrayTypeName",
"src": "1187:9:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11445,
"mutability": "mutable",
"name": "startTime",
"nameLocation": "1228:9:54",
"nodeType": "VariableDeclaration",
"scope": 11560,
"src": "1220:17:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11444,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1220:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11447,
"mutability": "mutable",
"name": "saltNonce",
"nameLocation": "1251:9:54",
"nodeType": "VariableDeclaration",
"scope": 11560,
"src": "1243:17:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11446,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1243:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11449,
"mutability": "mutable",
"name": "signature",
"nameLocation": "1281:9:54",
"nodeType": "VariableDeclaration",
"scope": 11560,
"src": "1266:24:54",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 11448,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1266:5:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "1154:140:54"
},
"returnParameters": {
"id": 11457,
"nodeType": "ParameterList",
"parameters": [],
"src": "1351:0:54"
},
"scope": 11623,
"src": "1136:976:54",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 11621,
"nodeType": "Block",
"src": "2295:275:54",
"statements": [
{
"assignments": [
11577
],
"declarations": [
{
"constant": false,
"id": 11577,
"mutability": "mutable",
"name": "encoded",
"nameLocation": "2314:7:54",
"nodeType": "VariableDeclaration",
"scope": 11621,
"src": "2301:20:54",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 11576,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2301:5:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 11585,
"initialValue": {
"arguments": [
{
"id": 11580,
"name": "_eventId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11562,
"src": "2341:8:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 11581,
"name": "_user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11564,
"src": "2351:5:54",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 11582,
"name": "_startTime",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11566,
"src": "2358:10:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 11583,
"name": "_saltNonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11568,
"src": "2370:10:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 11578,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967295,
"src": "2324:3:54",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 11579,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"src": "2324:16:54",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 11584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2324:57:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2301:80:54"
},
{
"assignments": [
11587
],
"declarations": [
{
"constant": false,
"id": 11587,
"mutability": "mutable",
"name": "len",
"nameLocation": "2395:3:54",
"nodeType": "VariableDeclaration",
"scope": 11621,
"src": "2387:11:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11586,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2387:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 11590,
"initialValue": {
"expression": {
"id": 11588,
"name": "_tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11571,
"src": "2401:9:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 11589,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "2401:16:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2387:30:54"
},
{
"body": {
"id": 11615,
"nodeType": "Block",
"src": "2457:78:54",
"statements": [
{
"expression": {
"id": 11613,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 11601,
"name": "encoded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11577,
"src": "2465:7:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 11605,
"name": "encoded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11577,
"src": "2488:7:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"arguments": [
{
"baseExpression": {
"id": 11608,
"name": "_tokenIds",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11571,
"src": "2514:9:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 11610,
"indexExpression": {
"id": 11609,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11592,
"src": "2524:1:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2514:12:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 11606,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967295,
"src": "2497:3:54",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 11607,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"src": "2497:16:54",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 11611,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2497:30:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 11603,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2475:5:54",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
"typeString": "type(bytes storage pointer)"
},
"typeName": {
"id": 11602,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2475:5:54",
"typeDescriptions": {}
}
},
"id": 11604,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "concat",
"nodeType": "MemberAccess",
"src": "2475:12:54",
"typeDescriptions": {
"typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 11612,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2475:53:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"src": "2465:63:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 11614,
"nodeType": "ExpressionStatement",
"src": "2465:63:54"
}
]
},
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 11597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 11595,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11592,
"src": "2443:1:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"id": 11596,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11587,
"src": "2447:3:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2443:7:54",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 11616,
"initializationExpression": {
"assignments": [
11592
],
"declarations": [
{
"constant": false,
"id": 11592,
"mutability": "mutable",
"name": "i",
"nameLocation": "2436:1:54",
"nodeType": "VariableDeclaration",
"scope": 11616,
"src": "2428:9:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11591,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2428:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 11594,
"initialValue": {
"hexValue": "30",
"id": 11593,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2440:1:54",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "2428:13:54"
},
"loopExpression": {
"expression": {
"id": 11599,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": true,
"src": "2452:3:54",
"subExpression": {
"id": 11598,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11592,
"src": "2454:1:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11600,
"nodeType": "ExpressionStatement",
"src": "2452:3:54"
},
"nodeType": "ForStatement",
"src": "2423:112:54"
},
{
"expression": {
"arguments": [
{
"id": 11618,
"name": "encoded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11577,
"src": "2557:7:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 11617,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967288,
"src": "2547:9:54",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 11619,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2547:18:54",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 11575,
"id": 11620,
"nodeType": "Return",
"src": "2540:25:54"
}
]
},
"functionSelector": "79578cc8",
"id": 11622,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getMessageHash",
"nameLocation": "2125:14:54",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11572,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11562,
"mutability": "mutable",
"name": "_eventId",
"nameLocation": "2153:8:54",
"nodeType": "VariableDeclaration",
"scope": 11622,
"src": "2145:16:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11561,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2145:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11564,
"mutability": "mutable",
"name": "_user",
"nameLocation": "2175:5:54",
"nodeType": "VariableDeclaration",
"scope": 11622,
"src": "2167:13:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 11563,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2167:7:54",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11566,
"mutability": "mutable",
"name": "_startTime",
"nameLocation": "2194:10:54",
"nodeType": "VariableDeclaration",
"scope": 11622,
"src": "2186:18:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11565,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2186:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11568,
"mutability": "mutable",
"name": "_saltNonce",
"nameLocation": "2218:10:54",
"nodeType": "VariableDeclaration",
"scope": 11622,
"src": "2210:18:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11567,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2210:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11571,
"mutability": "mutable",
"name": "_tokenIds",
"nameLocation": "2251:9:54",
"nodeType": "VariableDeclaration",
"scope": 11622,
"src": "2234:26:54",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[]"
},
"typeName": {
"baseType": {
"id": 11569,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2234:7:54",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 11570,
"nodeType": "ArrayTypeName",
"src": "2234:9:54",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
},
"visibility": "internal"
}
],
"src": "2139:125:54"
},
"returnParameters": {
"id": 11575,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11574,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 11622,
"src": "2286:7:54",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 11573,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2286:7:54",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "2285:9:54"
},
"scope": 11623,
"src": "2116:454:54",
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
}
],
"scope": 11624,
"src": "423:2149:54",
"usedErrors": []
}
],
"src": "32:2541:54"
},
"compiler": {
"name": "solc",
"version": "0.8.10+commit.fc410830.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.4.4",
"updatedAt": "2023-12-01T09:03:16.575Z",
"devdoc": {
"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
}
}