interface IERC721Receiver {
	/**
	 * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
	 * by `operator` from `from`, this function is called.
	 *
	 * It must return its Solidity selector to confirm the token transfer.
	 * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
	 *
	 * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
	 */
	function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}
function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);

/**
 	 * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
 	 * by `operator` from `from`, this function is called.
 	 *
 	 * It must return its Solidity selector to confirm the token transfer.
 	 * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
 	 *
 	 * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
 	 */