text: #pragma once
  
  #include <zlib.h>
  
  #include <cstring>
  #include <string>
  
  inline bool gzipInflate(const std::string& compressedBytes,
                          std::string& uncompressedBytes)
  {
      if (compressedBytes.empty())
      {
          uncompressedBytes = compressedBytes;
          return true;
      }
  
      uncompressedBytes.clear();
  
      unsigned half_length = compressedBytes.size() / 2;
  
      z_stream strm{};
  
      // The following line is nolint because we're declaring away constness.
      // It's not clear why the input buffers on zlib aren't const, so this is a
      // bit of a cheat for the moment
      strm.next_in = (Bytef*)compressedBytes.data(); // NOLINT
      strm.avail_in = compressedBytes.size();
      strm.total_out = 0;
      strm.zalloc = Z_NULL;
      strm.zfree = Z_NULL;
  
      bool done = false;
  
      if (inflateInit2(&strm, (16 + MAX_WBITS)) != Z_OK)
      {
          return false;
      }
  
      while (!done)
      {
          // If our output buffer is too small
          if (strm.total_out >= uncompressedBytes.size())
          {
              uncompressedBytes.resize(uncompressedBytes.size() + half_length);
          }
  
          strm.next_out =
              (Bytef*)(uncompressedBytes.data() + strm.total_out); // NOLINT
          strm.avail_out =
              ((uLong)uncompressedBytes.size() - strm.total_out); // NOLINT
  
          // Inflate another chunk.
          int err = inflate(&strm, Z_SYNC_FLUSH);
          if (err == Z_STREAM_END)
          {
              done = true;
          }
          else if (err != Z_OK)
          {
              break;
          }
      }
  
      return inflateEnd(&strm) == Z_OK;
  }