#include <iostream>

#include "flatbuffers/util.h"

extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size);

int main(int argc, char* argv[]) {
  if (argc < 2) {
    std::cerr << "Usage: scalar_debug <path to fuzzer crash file>\n";
    return 0;
  }
  std::string crash_file_name(argv[1]);
  std::string crash_file_data;
  auto done =
      flatbuffers::LoadFile(crash_file_name.c_str(), true, &crash_file_data);
  if (!done) {
    std::cerr << "Can not load file: '" << crash_file_name << "'";
    return -1;
  }
  if (crash_file_data.size() < 3) {
    std::cerr << "Invalid file data: '" << crash_file_data << "'";
    return -2;
  }
  auto rc = LLVMFuzzerTestOneInput(
      reinterpret_cast<const uint8_t*>(crash_file_data.data()),
      crash_file_data.size());
  std::cout << "LLVMFuzzerTestOneInput finished with code " << rc << "\n\n";
  return rc;
}
