{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenByIndex","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokenOfOwnerByIndex","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This implements an optional extension of {ERC721} defined in the EIP that adds enumerability of all the token ids in the contract as well as all token ids owned by each account.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":\"ERC721Enumerable\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":{\"keccak256\":\"0x0a79511df8151b10b0a0004d6a76ad956582d32824af4c0f4886bdbdfe5746e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afbedcf17f31db719e6fdc56caa8f458799c5fa2eb94cb1e94ef18f89af85768\",\"dweb:/ipfs/QmVmqRdBfbgYThpZSoAJ5o9mnAMjx8mCHHjv3Rh8cQAAg3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"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"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenByIndex(uint256)":{"details":"See {IERC721Enumerable-tokenByIndex}."},"tokenOfOwnerByIndex(address,uint256)":{"details":"See {IERC721Enumerable-tokenOfOwnerByIndex}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"totalSupply()":{"details":"See {IERC721Enumerable-totalSupply}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol":"ERC721Enumerable"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e","urls":["bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea","dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f","urls":["bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f","dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da","urls":["bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708","dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol":{"keccak256":"0x0a79511df8151b10b0a0004d6a76ad956582d32824af4c0f4886bdbdfe5746e5","urls":["bzz-raw://afbedcf17f31db719e6fdc56caa8f458799c5fa2eb94cb1e94ef18f89af85768","dweb:/ipfs/QmVmqRdBfbgYThpZSoAJ5o9mnAMjx8mCHHjv3Rh8cQAAg3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"keccak256":"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf","urls":["bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34","dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9","urls":["bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146","dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b","urls":["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d","dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":52214,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":52216,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":52220,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":52224,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":52228,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":52234,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":53204,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_ownedTokens","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_uint256,t_uint256))"},{"astId":53208,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_ownedTokensIndex","offset":0,"slot":"7","type":"t_mapping(t_uint256,t_uint256)"},{"astId":53211,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_allTokens","offset":0,"slot":"8","type":"t_array(t_uint256)dyn_storage"},{"astId":53215,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol:ERC721Enumerable","label":"_allTokensIndex","offset":0,"slot":"9","type":"t_mapping(t_uint256,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)dyn_storage":{"encoding":"dynamic_array","label":"uint256[]","numberOfBytes":"32","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_mapping(t_uint256,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => uint256))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","details":"This implements an optional extension of {ERC721} defined in the EIP that adds enumerability of all the token ids in the contract as well as all token ids owned by each account.","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenByIndex(uint256)":{"details":"See {IERC721Enumerable-tokenByIndex}."},"tokenOfOwnerByIndex(address,uint256)":{"details":"See {IERC721Enumerable-tokenOfOwnerByIndex}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"totalSupply()":{"details":"See {IERC721Enumerable-totalSupply}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}}},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol","id":53528,"exportedSymbols":{"Address":[53880],"Context":[53902],"ERC165":[54851],"ERC721":[53055],"ERC721Enumerable":[53527],"IERC165":[55057],"IERC721":[53171],"IERC721Enumerable":[53558],"IERC721Metadata":[53585],"IERC721Receiver":[53189],"Strings":[54202]},"nodeType":"SourceUnit","src":"113:6889:61","nodes":[{"id":53191,"nodeType":"PragmaDirective","src":"113:23:61","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":53192,"nodeType":"ImportDirective","src":"138:23:61","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","file":"../ERC721.sol","nameLocation":"-1:-1:-1","scope":53528,"sourceUnit":53056,"symbolAliases":[],"unitAlias":""},{"id":53193,"nodeType":"ImportDirective","src":"162:33:61","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol","file":"./IERC721Enumerable.sol","nameLocation":"-1:-1:-1","scope":53528,"sourceUnit":53559,"symbolAliases":[],"unitAlias":""},{"id":53527,"nodeType":"ContractDefinition","src":"397:6604:61","nodes":[{"id":53204,"nodeType":"VariableDeclaration","src":"520:68:61","nodes":[],"constant":false,"mutability":"mutable","name":"_ownedTokens","nameLocation":"576:12:61","scope":53527,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":53203,"keyType":{"id":53199,"name":"address","nodeType":"ElementaryTypeName","src":"528:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"520:47:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":53202,"keyType":{"id":53200,"name":"uint256","nodeType":"ElementaryTypeName","src":"547:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"539:27:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":53201,"name":"uint256","nodeType":"ElementaryTypeName","src":"558:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"id":53208,"nodeType":"VariableDeclaration","src":"658:53:61","nodes":[],"constant":false,"mutability":"mutable","name":"_ownedTokensIndex","nameLocation":"694:17:61","scope":53527,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":53207,"keyType":{"id":53205,"name":"uint256","nodeType":"ElementaryTypeName","src":"666:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"658:27:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":53206,"name":"uint256","nodeType":"ElementaryTypeName","src":"677:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":53211,"nodeType":"VariableDeclaration","src":"772:28:61","nodes":[],"constant":false,"mutability":"mutable","name":"_allTokens","nameLocation":"790:10:61","scope":53527,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[]"},"typeName":{"baseType":{"id":53209,"name":"uint256","nodeType":"ElementaryTypeName","src":"772:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":53210,"nodeType":"ArrayTypeName","src":"772:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"private"},{"id":53215,"nodeType":"VariableDeclaration","src":"871:51:61","nodes":[],"constant":false,"mutability":"mutable","name":"_allTokensIndex","nameLocation":"907:15:61","scope":53527,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":53214,"keyType":{"id":53212,"name":"uint256","nodeType":"ElementaryTypeName","src":"879:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"871:27:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":53213,"name":"uint256","nodeType":"ElementaryTypeName","src":"890:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":53239,"nodeType":"FunctionDefinition","src":"990:222:61","nodes":[],"body":{"id":53238,"nodeType":"Block","src":"1098:114:61","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":53236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":53231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":53226,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53218,"src":"1115:11:61","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":53228,"name":"IERC721Enumerable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53558,"src":"1135:17:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Enumerable_$53558_$","typeString":"type(contract IERC721Enumerable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Enumerable_$53558_$","typeString":"type(contract IERC721Enumerable)"}],"id":53227,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1130:4:61","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":53229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1130:23:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Enumerable_$53558","typeString":"type(contract IERC721Enumerable)"}},"id":53230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"1130:35:61","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1115:50:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":53234,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53218,"src":"1193:11:61","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":53232,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1169:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721Enumerable_$53527_$","typeString":"type(contract super ERC721Enumerable)"}},"id":53233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":52282,"src":"1169:23:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":53235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1169:36:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1115:90:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":53225,"id":53237,"nodeType":"Return","src":"1108:97:61"}]},"baseFunctions":[52282,55056],"documentation":{"id":53216,"nodeType":"StructuredDocumentation","src":"929:56:61","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"999:17:61","overrides":{"id":53222,"nodeType":"OverrideSpecifier","overrides":[{"id":53220,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":55057,"src":"1066:7:61"},{"id":53221,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":53055,"src":"1075:6:61"}],"src":"1057:25:61"},"parameters":{"id":53219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53218,"mutability":"mutable","name":"interfaceId","nameLocation":"1024:11:61","nodeType":"VariableDeclaration","scope":53239,"src":"1017:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":53217,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1017:6:61","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1016:20:61"},"returnParameters":{"id":53225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":53239,"src":"1092:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":53223,"name":"bool","nodeType":"ElementaryTypeName","src":"1092:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1091:6:61"},"scope":53527,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":53267,"nodeType":"FunctionDefinition","src":"1291:253:61","nodes":[],"body":{"id":53266,"nodeType":"Block","src":"1397:147:61","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":53256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":53251,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53244,"src":"1415:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"id":53254,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53242,"src":"1440:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":53252,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53055,"src":"1423:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$53055_$","typeString":"type(contract ERC721)"}},"id":53253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":52306,"src":"1423:16:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":53255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1423:23:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1415:31:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e6473","id":53257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1448:45:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c","typeString":"literal_string \"ERC721Enumerable: owner index out of bounds\""},"value":"ERC721Enumerable: owner index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c","typeString":"literal_string \"ERC721Enumerable: owner index out of bounds\""}],"id":53250,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1407:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":53258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1407:87:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53259,"nodeType":"ExpressionStatement","src":"1407:87:61"},{"expression":{"baseExpression":{"baseExpression":{"id":53260,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53204,"src":"1511:12:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":53262,"indexExpression":{"id":53261,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53242,"src":"1524:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1511:19:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53264,"indexExpression":{"id":53263,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53244,"src":"1531:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1511:26:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":53249,"id":53265,"nodeType":"Return","src":"1504:33:61"}]},"baseFunctions":[53549],"documentation":{"id":53240,"nodeType":"StructuredDocumentation","src":"1218:68:61","text":" @dev See {IERC721Enumerable-tokenOfOwnerByIndex}."},"functionSelector":"2f745c59","implemented":true,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"1300:19:61","overrides":{"id":53246,"nodeType":"OverrideSpecifier","overrides":[],"src":"1370:8:61"},"parameters":{"id":53245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53242,"mutability":"mutable","name":"owner","nameLocation":"1328:5:61","nodeType":"VariableDeclaration","scope":53267,"src":"1320:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53241,"name":"address","nodeType":"ElementaryTypeName","src":"1320:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53244,"mutability":"mutable","name":"index","nameLocation":"1343:5:61","nodeType":"VariableDeclaration","scope":53267,"src":"1335:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53243,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1319:30:61"},"returnParameters":{"id":53249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53248,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":53267,"src":"1388:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53247,"name":"uint256","nodeType":"ElementaryTypeName","src":"1388:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1387:9:61"},"scope":53527,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":53278,"nodeType":"FunctionDefinition","src":"1615:111:61","nodes":[],"body":{"id":53277,"nodeType":"Block","src":"1685:41:61","nodes":[],"statements":[{"expression":{"expression":{"id":53274,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53211,"src":"1702:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":53275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1702:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":53273,"id":53276,"nodeType":"Return","src":"1695:24:61"}]},"baseFunctions":[53539],"documentation":{"id":53268,"nodeType":"StructuredDocumentation","src":"1550:60:61","text":" @dev See {IERC721Enumerable-totalSupply}."},"functionSelector":"18160ddd","implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"1624:11:61","overrides":{"id":53270,"nodeType":"OverrideSpecifier","overrides":[],"src":"1658:8:61"},"parameters":{"id":53269,"nodeType":"ParameterList","parameters":[],"src":"1635:2:61"},"returnParameters":{"id":53273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53272,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":53278,"src":"1676:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53271,"name":"uint256","nodeType":"ElementaryTypeName","src":"1676:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1675:9:61"},"scope":53527,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":53301,"nodeType":"FunctionDefinition","src":"1798:230:61","nodes":[],"body":{"id":53300,"nodeType":"Block","src":"1882:146:61","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":53292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":53288,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53281,"src":"1900:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":53289,"name":"ERC721Enumerable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53527,"src":"1908:16:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Enumerable_$53527_$","typeString":"type(contract ERC721Enumerable)"}},"id":53290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":53278,"src":"1908:28:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":53291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1908:30:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1900:38:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473","id":53293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1940:46:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc","typeString":"literal_string \"ERC721Enumerable: global index out of bounds\""},"value":"ERC721Enumerable: global index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc","typeString":"literal_string \"ERC721Enumerable: global index out of bounds\""}],"id":53287,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1892:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":53294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1892:95:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53295,"nodeType":"ExpressionStatement","src":"1892:95:61"},{"expression":{"baseExpression":{"id":53296,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53211,"src":"2004:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":53298,"indexExpression":{"id":53297,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53281,"src":"2015:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2004:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":53286,"id":53299,"nodeType":"Return","src":"1997:24:61"}]},"baseFunctions":[53557],"documentation":{"id":53279,"nodeType":"StructuredDocumentation","src":"1732:61:61","text":" @dev See {IERC721Enumerable-tokenByIndex}."},"functionSelector":"4f6ccce7","implemented":true,"kind":"function","modifiers":[],"name":"tokenByIndex","nameLocation":"1807:12:61","overrides":{"id":53283,"nodeType":"OverrideSpecifier","overrides":[],"src":"1855:8:61"},"parameters":{"id":53282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53281,"mutability":"mutable","name":"index","nameLocation":"1828:5:61","nodeType":"VariableDeclaration","scope":53301,"src":"1820:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53280,"name":"uint256","nodeType":"ElementaryTypeName","src":"1820:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1819:15:61"},"returnParameters":{"id":53286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":53301,"src":"1873:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53284,"name":"uint256","nodeType":"ElementaryTypeName","src":"1873:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1872:9:61"},"scope":53527,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":53365,"nodeType":"FunctionDefinition","src":"2624:572:61","nodes":[],"body":{"id":53364,"nodeType":"Block","src":"2753:443:61","nodes":[],"statements":[{"expression":{"arguments":[{"id":53315,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53304,"src":"2790:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":53316,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53306,"src":"2796:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":53317,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53308,"src":"2800:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":53312,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2763:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721Enumerable_$53527_$","typeString":"type(contract super ERC721Enumerable)"}},"id":53314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_beforeTokenTransfer","nodeType":"MemberAccess","referencedDeclaration":53043,"src":"2763:26:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":53318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2763:45:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53319,"nodeType":"ExpressionStatement","src":"2763:45:61"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":53325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":53320,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53304,"src":"2823:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":53323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2839:1:61","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":53322,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2831:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":53321,"name":"address","nodeType":"ElementaryTypeName","src":"2831:7:61","typeDescriptions":{}}},"id":53324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2831:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2823:18:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":53333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":53331,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53304,"src":"2918:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":53332,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53306,"src":"2926:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2918:10:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":53340,"nodeType":"IfStatement","src":"2914:88:61","trueBody":{"id":53339,"nodeType":"Block","src":"2930:72:61","statements":[{"expression":{"arguments":[{"id":53335,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53304,"src":"2977:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":53336,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53308,"src":"2983:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":53334,"name":"_removeTokenFromOwnerEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53478,"src":"2944:32:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":53337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2944:47:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53338,"nodeType":"ExpressionStatement","src":"2944:47:61"}]}},"id":53341,"nodeType":"IfStatement","src":"2819:183:61","trueBody":{"id":53330,"nodeType":"Block","src":"2843:65:61","statements":[{"expression":{"arguments":[{"id":53327,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53308,"src":"2889:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":53326,"name":"_addTokenToAllTokensEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53415,"src":"2857:31:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":53328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2857:40:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53329,"nodeType":"ExpressionStatement","src":"2857:40:61"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":53347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":53342,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53306,"src":"3015:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":53345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3029:1:61","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":53344,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3021:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":53343,"name":"address","nodeType":"ElementaryTypeName","src":"3021:7:61","typeDescriptions":{}}},"id":53346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3021:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3015:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":53355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":53353,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53306,"src":"3113:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":53354,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53304,"src":"3119:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3113:10:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":53362,"nodeType":"IfStatement","src":"3109:81:61","trueBody":{"id":53361,"nodeType":"Block","src":"3125:65:61","statements":[{"expression":{"arguments":[{"id":53357,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53306,"src":"3167:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":53358,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53308,"src":"3171:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":53356,"name":"_addTokenToOwnerEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53395,"src":"3139:27:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":53359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3139:40:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53360,"nodeType":"ExpressionStatement","src":"3139:40:61"}]}},"id":53363,"nodeType":"IfStatement","src":"3011:179:61","trueBody":{"id":53352,"nodeType":"Block","src":"3033:70:61","statements":[{"expression":{"arguments":[{"id":53349,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53308,"src":"3084:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":53348,"name":"_removeTokenFromAllTokensEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53526,"src":"3047:36:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":53350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3047:45:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53351,"nodeType":"ExpressionStatement","src":"3047:45:61"}]}}]},"baseFunctions":[53043],"documentation":{"id":53302,"nodeType":"StructuredDocumentation","src":"2034:585:61","text":" @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"2633:20:61","overrides":{"id":53310,"nodeType":"OverrideSpecifier","overrides":[],"src":"2744:8:61"},"parameters":{"id":53309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53304,"mutability":"mutable","name":"from","nameLocation":"2671:4:61","nodeType":"VariableDeclaration","scope":53365,"src":"2663:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53303,"name":"address","nodeType":"ElementaryTypeName","src":"2663:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53306,"mutability":"mutable","name":"to","nameLocation":"2693:2:61","nodeType":"VariableDeclaration","scope":53365,"src":"2685:10:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53305,"name":"address","nodeType":"ElementaryTypeName","src":"2685:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53308,"mutability":"mutable","name":"tokenId","nameLocation":"2713:7:61","nodeType":"VariableDeclaration","scope":53365,"src":"2705:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53307,"name":"uint256","nodeType":"ElementaryTypeName","src":"2705:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2653:73:61"},"returnParameters":{"id":53311,"nodeType":"ParameterList","parameters":[],"src":"2753:0:61"},"scope":53527,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":53395,"nodeType":"FunctionDefinition","src":"3490:217:61","nodes":[],"body":{"id":53394,"nodeType":"Block","src":"3564:143:61","nodes":[],"statements":[{"assignments":[53374],"declarations":[{"constant":false,"id":53374,"mutability":"mutable","name":"length","nameLocation":"3582:6:61","nodeType":"VariableDeclaration","scope":53394,"src":"3574:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53373,"name":"uint256","nodeType":"ElementaryTypeName","src":"3574:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":53379,"initialValue":{"arguments":[{"id":53377,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53368,"src":"3608:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":53375,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53055,"src":"3591:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$53055_$","typeString":"type(contract ERC721)"}},"id":53376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":52306,"src":"3591:16:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":53378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3591:20:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3574:37:61"},{"expression":{"id":53386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":53380,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53204,"src":"3621:12:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":53383,"indexExpression":{"id":53381,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53368,"src":"3634:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3621:16:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53384,"indexExpression":{"id":53382,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53374,"src":"3638:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3621:24:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":53385,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53370,"src":"3648:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3621:34:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":53387,"nodeType":"ExpressionStatement","src":"3621:34:61"},{"expression":{"id":53392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":53388,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53208,"src":"3665:17:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53390,"indexExpression":{"id":53389,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53370,"src":"3683:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3665:26:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":53391,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53374,"src":"3694:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3665:35:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":53393,"nodeType":"ExpressionStatement","src":"3665:35:61"}]},"documentation":{"id":53366,"nodeType":"StructuredDocumentation","src":"3202:283:61","text":" @dev Private function to add a token to this extension's ownership-tracking data structures.\n @param to address representing the new owner of the given token ID\n @param tokenId uint256 ID of the token to be added to the tokens list of the given address"},"implemented":true,"kind":"function","modifiers":[],"name":"_addTokenToOwnerEnumeration","nameLocation":"3499:27:61","parameters":{"id":53371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53368,"mutability":"mutable","name":"to","nameLocation":"3535:2:61","nodeType":"VariableDeclaration","scope":53395,"src":"3527:10:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53367,"name":"address","nodeType":"ElementaryTypeName","src":"3527:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53370,"mutability":"mutable","name":"tokenId","nameLocation":"3547:7:61","nodeType":"VariableDeclaration","scope":53395,"src":"3539:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53369,"name":"uint256","nodeType":"ElementaryTypeName","src":"3539:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3526:29:61"},"returnParameters":{"id":53372,"nodeType":"ParameterList","parameters":[],"src":"3564:0:61"},"scope":53527,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":53415,"nodeType":"FunctionDefinition","src":"3902:161:61","nodes":[],"body":{"id":53414,"nodeType":"Block","src":"3968:95:61","nodes":[],"statements":[{"expression":{"id":53406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":53401,"name":"_allTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53215,"src":"3978:15:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53403,"indexExpression":{"id":53402,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53398,"src":"3994:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3978:24:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":53404,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53211,"src":"4005:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":53405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4005:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3978:44:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":53407,"nodeType":"ExpressionStatement","src":"3978:44:61"},{"expression":{"arguments":[{"id":53411,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53398,"src":"4048:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":53408,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53211,"src":"4032:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":53410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"4032:15:61","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256)"}},"id":53412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4032:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53413,"nodeType":"ExpressionStatement","src":"4032:24:61"}]},"documentation":{"id":53396,"nodeType":"StructuredDocumentation","src":"3713:184:61","text":" @dev Private function to add a token to this extension's token tracking data structures.\n @param tokenId uint256 ID of the token to be added to the tokens list"},"implemented":true,"kind":"function","modifiers":[],"name":"_addTokenToAllTokensEnumeration","nameLocation":"3911:31:61","parameters":{"id":53399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53398,"mutability":"mutable","name":"tokenId","nameLocation":"3951:7:61","nodeType":"VariableDeclaration","scope":53415,"src":"3943:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53397,"name":"uint256","nodeType":"ElementaryTypeName","src":"3943:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3942:17:61"},"returnParameters":{"id":53400,"nodeType":"ParameterList","parameters":[],"src":"3968:0:61"},"scope":53527,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":53478,"nodeType":"FunctionDefinition","src":"4680:970:61","nodes":[],"body":{"id":53477,"nodeType":"Block","src":"4761:889:61","nodes":[],"statements":[{"assignments":[53424],"declarations":[{"constant":false,"id":53424,"mutability":"mutable","name":"lastTokenIndex","nameLocation":"4950:14:61","nodeType":"VariableDeclaration","scope":53477,"src":"4942:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53423,"name":"uint256","nodeType":"ElementaryTypeName","src":"4942:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":53431,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":53430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":53427,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53418,"src":"4984:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":53425,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53055,"src":"4967:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$53055_$","typeString":"type(contract ERC721)"}},"id":53426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":52306,"src":"4967:16:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":53428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4967:22:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":53429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4992:1:61","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4967:26:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4942:51:61"},{"assignments":[53433],"declarations":[{"constant":false,"id":53433,"mutability":"mutable","name":"tokenIndex","nameLocation":"5011:10:61","nodeType":"VariableDeclaration","scope":53477,"src":"5003:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53432,"name":"uint256","nodeType":"ElementaryTypeName","src":"5003:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":53437,"initialValue":{"baseExpression":{"id":53434,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53208,"src":"5024:17:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53436,"indexExpression":{"id":53435,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53420,"src":"5042:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5024:26:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5003:47:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":53440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":53438,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53433,"src":"5154:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":53439,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53424,"src":"5168:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5154:28:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":53464,"nodeType":"IfStatement","src":"5150:323:61","trueBody":{"id":53463,"nodeType":"Block","src":"5184:289:61","statements":[{"assignments":[53442],"declarations":[{"constant":false,"id":53442,"mutability":"mutable","name":"lastTokenId","nameLocation":"5206:11:61","nodeType":"VariableDeclaration","scope":53463,"src":"5198:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53441,"name":"uint256","nodeType":"ElementaryTypeName","src":"5198:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":53448,"initialValue":{"baseExpression":{"baseExpression":{"id":53443,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53204,"src":"5220:12:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":53445,"indexExpression":{"id":53444,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53418,"src":"5233:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5220:18:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53447,"indexExpression":{"id":53446,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53424,"src":"5239:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5220:34:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5198:56:61"},{"expression":{"id":53455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":53449,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53204,"src":"5269:12:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":53452,"indexExpression":{"id":53450,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53418,"src":"5282:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5269:18:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53453,"indexExpression":{"id":53451,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53433,"src":"5288:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5269:30:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":53454,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53442,"src":"5302:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5269:44:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":53456,"nodeType":"ExpressionStatement","src":"5269:44:61"},{"expression":{"id":53461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":53457,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53208,"src":"5385:17:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53459,"indexExpression":{"id":53458,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53442,"src":"5403:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5385:30:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":53460,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53433,"src":"5418:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5385:43:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":53462,"nodeType":"ExpressionStatement","src":"5385:43:61"}]}},{"expression":{"id":53468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5559:33:61","subExpression":{"baseExpression":{"id":53465,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53208,"src":"5566:17:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53467,"indexExpression":{"id":53466,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53420,"src":"5584:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5566:26:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53469,"nodeType":"ExpressionStatement","src":"5559:33:61"},{"expression":{"id":53475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5602:41:61","subExpression":{"baseExpression":{"baseExpression":{"id":53470,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53204,"src":"5609:12:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":53472,"indexExpression":{"id":53471,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53418,"src":"5622:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5609:18:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53474,"indexExpression":{"id":53473,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53424,"src":"5628:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5609:34:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53476,"nodeType":"ExpressionStatement","src":"5602:41:61"}]},"documentation":{"id":53416,"nodeType":"StructuredDocumentation","src":"4069:606:61","text":" @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\n gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n This has O(1) time complexity, but alters the order of the _ownedTokens array.\n @param from address representing the previous owner of the given token ID\n @param tokenId uint256 ID of the token to be removed from the tokens list of the given address"},"implemented":true,"kind":"function","modifiers":[],"name":"_removeTokenFromOwnerEnumeration","nameLocation":"4689:32:61","parameters":{"id":53421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53418,"mutability":"mutable","name":"from","nameLocation":"4730:4:61","nodeType":"VariableDeclaration","scope":53478,"src":"4722:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53417,"name":"address","nodeType":"ElementaryTypeName","src":"4722:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53420,"mutability":"mutable","name":"tokenId","nameLocation":"4744:7:61","nodeType":"VariableDeclaration","scope":53478,"src":"4736:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53419,"name":"uint256","nodeType":"ElementaryTypeName","src":"4736:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4721:31:61"},"returnParameters":{"id":53422,"nodeType":"ParameterList","parameters":[],"src":"4761:0:61"},"scope":53527,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":53526,"nodeType":"FunctionDefinition","src":"5938:1061:61","nodes":[],"body":{"id":53525,"nodeType":"Block","src":"6009:990:61","nodes":[],"statements":[{"assignments":[53485],"declarations":[{"constant":false,"id":53485,"mutability":"mutable","name":"lastTokenIndex","nameLocation":"6195:14:61","nodeType":"VariableDeclaration","scope":53525,"src":"6187:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53484,"name":"uint256","nodeType":"ElementaryTypeName","src":"6187:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":53490,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":53489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":53486,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53211,"src":"6212:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":53487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6212:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":53488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6232:1:61","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6212:21:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6187:46:61"},{"assignments":[53492],"declarations":[{"constant":false,"id":53492,"mutability":"mutable","name":"tokenIndex","nameLocation":"6251:10:61","nodeType":"VariableDeclaration","scope":53525,"src":"6243:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53491,"name":"uint256","nodeType":"ElementaryTypeName","src":"6243:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":53496,"initialValue":{"baseExpression":{"id":53493,"name":"_allTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53215,"src":"6264:15:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53495,"indexExpression":{"id":53494,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53481,"src":"6280:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6264:24:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6243:45:61"},{"assignments":[53498],"declarations":[{"constant":false,"id":53498,"mutability":"mutable","name":"lastTokenId","nameLocation":"6618:11:61","nodeType":"VariableDeclaration","scope":53525,"src":"6610:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53497,"name":"uint256","nodeType":"ElementaryTypeName","src":"6610:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":53502,"initialValue":{"baseExpression":{"id":53499,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53211,"src":"6632:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":53501,"indexExpression":{"id":53500,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53485,"src":"6643:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6632:26:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6610:48:61"},{"expression":{"id":53507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":53503,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53211,"src":"6669:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":53505,"indexExpression":{"id":53504,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53492,"src":"6680:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6669:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":53506,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53498,"src":"6694:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6669:36:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":53508,"nodeType":"ExpressionStatement","src":"6669:36:61"},{"expression":{"id":53513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":53509,"name":"_allTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53215,"src":"6773:15:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53511,"indexExpression":{"id":53510,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53498,"src":"6789:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6773:28:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":53512,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53492,"src":"6804:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6773:41:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":53514,"nodeType":"ExpressionStatement","src":"6773:41:61"},{"expression":{"id":53518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6935:31:61","subExpression":{"baseExpression":{"id":53515,"name":"_allTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53215,"src":"6942:15:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":53517,"indexExpression":{"id":53516,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53481,"src":"6958:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6942:24:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53519,"nodeType":"ExpressionStatement","src":"6935:31:61"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":53520,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53211,"src":"6976:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":53522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"6976:14:61","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer)"}},"id":53523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6976:16:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53524,"nodeType":"ExpressionStatement","src":"6976:16:61"}]},"documentation":{"id":53479,"nodeType":"StructuredDocumentation","src":"5656:277:61","text":" @dev Private function to remove a token from this extension's token tracking data structures.\n This has O(1) time complexity, but alters the order of the _allTokens array.\n @param tokenId uint256 ID of the token to be removed from the tokens list"},"implemented":true,"kind":"function","modifiers":[],"name":"_removeTokenFromAllTokensEnumeration","nameLocation":"5947:36:61","parameters":{"id":53482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53481,"mutability":"mutable","name":"tokenId","nameLocation":"5992:7:61","nodeType":"VariableDeclaration","scope":53526,"src":"5984:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53480,"name":"uint256","nodeType":"ElementaryTypeName","src":"5984:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5983:17:61"},"returnParameters":{"id":53483,"nodeType":"ParameterList","parameters":[],"src":"6009:0:61"},"scope":53527,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":53195,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":53055,"src":"435:6:61"},"id":53196,"nodeType":"InheritanceSpecifier","src":"435:6:61"},{"baseName":{"id":53197,"name":"IERC721Enumerable","nodeType":"IdentifierPath","referencedDeclaration":53558,"src":"443:17:61"},"id":53198,"nodeType":"InheritanceSpecifier","src":"443:17:61"}],"canonicalName":"ERC721Enumerable","contractDependencies":[],"contractKind":"contract","documentation":{"id":53194,"nodeType":"StructuredDocumentation","src":"197:199:61","text":" @dev This implements an optional extension of {ERC721} defined in the EIP that adds\n enumerability of all the token ids in the contract as well as all token ids owned by each\n account."},"fullyImplemented":false,"linearizedBaseContracts":[53527,53558,53055,53585,53171,54851,55057,53902],"name":"ERC721Enumerable","nameLocation":"415:16:61","scope":53528,"usedErrors":[]}],"license":"MIT"},"id":61}