contract CardBase is Ownable {
  bytes4 constant InterfaceSignature_ERC165 = 0x01ffc9a7;
  bytes4 constant InterfaceSignature_ERC721 = 0x80ac58cd;
  bytes4 internal constant InterfaceId_ERC721Exists = 0x4f558e79;

  /// @notice Introspection interface as per ERC-165 (https://github.com/ethereum/EIPs/issues/165).
  ///  Returns true for any standardized interfaces implemented by this contract. We implement
  ///  ERC-165 (obviously!) and ERC-721.
  function supportsInterface(bytes4 _interfaceID) external view returns (bool)
  {
    return (
      (_interfaceID == InterfaceSignature_ERC165) ||
      (_interfaceID == InterfaceSignature_ERC721) ||
      (_interfaceID == InterfaceId_ERC721Exists)
    );
  }
}
function supportsInterface(bytes4 _interfaceID) external view returns (bool)
{
  return (
    (_interfaceID == InterfaceSignature_ERC165) ||
    (_interfaceID == InterfaceSignature_ERC721) ||
    (_interfaceID == InterfaceId_ERC721Exists)
  );
}

/// @notice Introspection interface as per ERC-165 (https://github.com/ethereum/EIPs/issues/165).
///  Returns true for any standardized interfaces implemented by this contract. We implement
///  ERC-165 (obviously!) and ERC-721.