// Copyright (C) 2025-present ScyllaDB
// SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0

#pragma once

#ifdef SCYLLA_USE_PRECOMPILED_HEADER

#include <absl/container/btree_set.h>
#include <absl/container/flat_hash_map.h>
#include <algorithm>
#include <antlr3.hpp>
#include <any>
#include <arpa/inet.h>
#include <array>
#include <assert.h>
#include <atomic>
#include <bit>
#include <bitset>
#include <boost/accumulators/framework/accumulator_set.hpp>
#include <boost/accumulators/framework/features.hpp>
#include <boost/accumulators/statistics/error_of_mean.hpp>
#include <boost/accumulators/statistics/mean.hpp>
#include <boost/algorithm/string/classification.hpp>
#include <boost/algorithm/string/split.hpp>
#include <boost/any.hpp>
#include <boost/asio/ip/address_v4.hpp>
#include <boost/circular_buffer.hpp>
#include <boost/container/deque.hpp>
#include <boost/container/small_vector.hpp>
#include <boost/container/static_vector.hpp>
#include <boost/dynamic_bitset.hpp>
#include <boost/endian/conversion.hpp>
#include <boost/functional/hash.hpp>
#include <boost/heap/binomial_heap.hpp>
#include <boost/icl/interval.hpp>
#include <boost/icl/interval_map.hpp>
#include <boost/icl/interval_set.hpp>
#include <boost/implicit_cast.hpp>
#include <boost/intrusive/list.hpp>
#include <boost/intrusive/parent_from_member.hpp>
#include <boost/intrusive_ptr.hpp>
#include <boost/intrusive/set.hpp>
#include <boost/intrusive/slist.hpp>
#include <boost/intrusive/unordered_set.hpp>
#include <boost/iterator/transform_iterator.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/lockfree/queue.hpp>
#include <boost/lockfree/spsc_queue.hpp>
#include <boost/mp11/algorithm.hpp>
#include <boost/multiprecision/cpp_int.hpp>
#include <boost/multiprecision/fwd.hpp>
#include <boost/outcome/bad_access.hpp>
#include <boost/outcome/basic_result.hpp>
#include <boost/outcome/config.hpp>
#include <boost/outcome/policy/base.hpp>
#include <boost/outcome/result.hpp>
#include <boost/preprocessor/comparison/equal.hpp>
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/variadic/size.hpp>
#include <boost/program_options/errors.hpp>
#include <boost/program_options.hpp>
#include <boost/program_options/value_semantic.hpp>
#include <boost/program_options/variables_map.hpp>
#include <boost/range/numeric.hpp>
#include <boost/regex_fwd.hpp>
#include <boost/regex.hpp>
#include <boost/signals2/connection.hpp>
#include <boost/signals2/dummy_mutex.hpp>
#include <boost/signals2/signal_type.hpp>
#include <boost/test/unit_test.hpp>
#include <boost/thread/barrier.hpp>
#include <boost/type.hpp>
#include <boost/units/detail/utility.hpp>
#include <boost/variant/variant.hpp>
#include <byteswap.h>
#include <cassert>
#include <cctype>
#include <cerrno>
#include <charconv>
#include <chrono>
#include <cmath>
#if __has_include(<compare>)
#include <compare>
#endif
#include <concepts>
#include <condition_variable>
#include <coroutine>
#include <cstddef>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>

#include "utils/rolling_max_tracker.hh"

#include <endian.h>
#include <exception>
#if __has_include(<execinfo.h>)
#include <execinfo.h>
#endif
#include <expected>
#if __has_include(<experimental/source_location>)
#include <experimental/source_location>
#endif
#include <fcntl.h>
#include <filesystem>
#include <fmt/chrono.h>
#include <fmt/core.h>
#include <fmt/format.h>
#include <fmt/ostream.h>
#include <fmt/ranges.h>
#include <fmt/std.h>
#include <forward_list>
#include <functional>
#include <future>
#include <gnutls/crypto.h>
#include <hwloc.h>
#include <initializer_list>
#include <iomanip>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <libdeflate.h>
#include <limits>
#include <linux/fs.h>
#include <linux/magic.h>
#include <linux/perf_event.h>
#include <list>
#include <lua.hpp>
#include <lz4.h>
#include <malloc.h>
#include <map>
#include <memory>
#if __has_include(<memory_resource>)
#include <memory_resource>
#endif
#include <mutex>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <new>
#include <optional>
#include <ostream>
#include <pthread.h>
#include <queue>
#include <random>
#include <ranges>
#include <ratio>
#include <regex>
#include <sched.h>
#include <seastar/core/abortable_fifo.hh>
#include <seastar/core/abort_on_expiry.hh>
#include <seastar/core/abort_source.hh>
#include <seastar/core/alien.hh>
#include <seastar/core/aligned_buffer.hh>
#include <seastar/core/align.hh>
#include <seastar/core/app-template.hh>
#include <seastar/core/bitops.hh>
#include <seastar/core/bitset-iter.hh>
#include <seastar/core/byteorder.hh>
#include <seastar/core/cacheline.hh>
#include <seastar/core/checked_ptr.hh>
#include <seastar/core/chunked_fifo.hh>
#include <seastar/core/circular_buffer_fixed_capacity.hh>
#include <seastar/core/circular_buffer.hh>
#include <seastar/core/condition-variable.hh>
#include <seastar/core/coroutine.hh>
#include <seastar/core/deleter.hh>
#include <seastar/core/distributed.hh>
#include <seastar/core/do_with.hh>
#include <seastar/core/enum.hh>
#include <seastar/core/execution_stage.hh>
#include <seastar/core/expiring_fifo.hh>
#include <seastar/core/fair_queue.hh>
#include <seastar/core/file.hh>
#include <seastar/core/file-types.hh>
#include <seastar/core/format.hh>
#include <seastar/core/fstream.hh>
#include <seastar/core/function_traits.hh>
#include <seastar/core/future.hh>
#include <seastar/core/future-util.hh>
#include <seastar/core/gate.hh>
#include <seastar/core/idle_cpu_handler.hh>
#include <seastar/core/internal/api-level.hh>
#include <seastar/core/internal/buffer_allocator.hh>
#include <seastar/core/internal/estimated_histogram.hh>
#include <seastar/core/internal/io_desc.hh>
#include <seastar/core/internal/io_intent.hh>
#include <seastar/core/internal/io_request.hh>
#include <seastar/core/internal/io_sink.hh>
#include <seastar/core/internal/pollable_fd.hh>
#include <seastar/core/internal/poll.hh>
#include <seastar/core/internal/run_in_background.hh>
#include <seastar/core/io_priority_class.hh>
#include <seastar/core/iostream.hh>
#include <seastar/core/loop.hh>
#include <seastar/core/lowres_clock.hh>
#include <seastar/core/make_task.hh>
#include <seastar/core/manual_clock.hh>
#include <seastar/core/map_reduce.hh>
#include <seastar/core/memory.hh>
#include <seastar/core/metrics_api.hh>
#include <seastar/core/metrics.hh>
#include <seastar/core/metrics_registration.hh>
#include <seastar/core/metrics_types.hh>
#include <seastar/core/on_internal_error.hh>
#include <seastar/core/polymorphic_temporary_buffer.hh>
#include <seastar/core/posix.hh>
#include <seastar/core/preempt.hh>
#include <seastar/core/queue.hh>
#include <seastar/core/reactor_config.hh>
#include <seastar/core/reactor.hh>
#include <seastar/core/resource.hh>
#include <seastar/core/rwlock.hh>
#include <seastar/core/scattered_message.hh>
#include <seastar/core/scheduling.hh>
#include <seastar/core/scheduling_specific.hh>
#include <seastar/core/scollectd.hh>
#include <seastar/core/seastar.hh>
#include <seastar/core/semaphore.hh>
#include <seastar/core/sharded.hh>
#include <seastar/core/shard_id.hh>
#include <seastar/core/shared_future.hh>
#include <seastar/core/shared_mutex.hh>
#include <seastar/core/shared_ptr_debug_helper.hh>
#include <seastar/core/shared_ptr.hh>
#include <seastar/core/signal.hh>
#include <seastar/core/simple-stream.hh>
#include <seastar/core/sleep.hh>
#include <seastar/core/smp.hh>
#include <seastar/core/smp_options.hh>
#include <seastar/core/sstring.hh>
#include <seastar/core/stream.hh>
#include <seastar/core/task.hh>
#include <seastar/core/temporary_buffer.hh>
#include <seastar/core/thread_cputime_clock.hh>
#include <seastar/core/thread.hh>
#include <seastar/core/thread_impl.hh>
#include <seastar/core/timed_out_error.hh>
#include <seastar/core/timer.hh>
#include <seastar/core/timer-set.hh>
#include <seastar/core/transfer.hh>
#include <seastar/core/unaligned.hh>
#include <seastar/core/units.hh>
#include <seastar/core/weak_ptr.hh>
#include <seastar/core/when_all.hh>
#include <seastar/core/with_scheduling_group.hh>
#include <seastar/core/with_timeout.hh>
#include <seastar/coroutine/all.hh>
#include <seastar/coroutine/as_future.hh>
#include <seastar/coroutine/exception.hh>
#include <seastar/coroutine/generator.hh>
#include <seastar/coroutine/maybe_yield.hh>
#include <seastar/coroutine/parallel_for_each.hh>
#include <seastar/http/api_docs.hh>
#include <seastar/http/client.hh>
#include <seastar/http/common.hh>
#include <seastar/http/connection_factory.hh>
#include <seastar/http/exception.hh>
#include <seastar/http/file_handler.hh>
#include <seastar/http/function_handlers.hh>
#include <seastar/http/handlers.hh>
#include <seastar/http/httpd.hh>
#include <seastar/http/matcher.hh>
#include <seastar/http/matchrules.hh>
#include <seastar/http/mime_types.hh>
#include <seastar/http/reply.hh>
#include <seastar/http/request.hh>
#include <seastar/http/request_parser.hh>
#include <seastar/http/response_parser.hh>
#include <seastar/http/routes.hh>
#include <seastar/http/transformers.hh>
#include <seastar/http/url.hh>
#include <seastar/json/formatter.hh>
#include <seastar/json/json_elements.hh>
#include <seastar/net/api.hh>
#include <seastar/net/arp.hh>
#include <seastar/net/byteorder.hh>
#include <seastar/net/config.hh>
#include <seastar/net/const.hh>
#include <seastar/net/dns.hh>
#include <seastar/net/dpdk.hh>
#include <seastar/net/ethernet.hh>
#include <seastar/net/inet_address.hh>
#include <seastar/net/ip_checksum.hh>
#include <seastar/net/ip.hh>
#include <seastar/net/ipv4_address.hh>
#include <seastar/net/ipv6_address.hh>
#include <seastar/net/net.hh>
#include <seastar/net/packet-data-source.hh>
#include <seastar/net/packet.hh>
#include <seastar/net/packet-util.hh>
#include <seastar/net/socket_defs.hh>
#include <seastar/net/stack.hh>
#include <seastar/net/tls.hh>
#include <seastar/net/toeplitz.hh>
#include <seastar/net/udp.hh>
#include <seastar/net/unix_address.hh>
#include <seastar/net/virtio.hh>
#include <seastar/rpc/rpc.hh>
#include <seastar/rpc/rpc_types.hh>
#include <seastar/util/alloc_failure_injector.hh>
#include <seastar/util/assert.hh>
#include <seastar/util/backtrace.hh>
#include <seastar/util/bool_class.hh>
#include <seastar/util/closeable.hh>
#include <seastar/util/critical_alloc_section.hh>
#include <seastar/util/defer.hh>
#include <seastar/util/eclipse.hh>
#include <seastar/util/indirect.hh>
#include <seastar/util/iostream.hh>
#include <seastar/util/is_smart_ptr.hh>
#include <seastar/util/later.hh>
#include <seastar/util/lazy.hh>
#include <seastar/util/log-cli.hh>
#include <seastar/util/log.hh>
#include <seastar/util/log-impl.hh>
#include <seastar/util/memory_diagnostics.hh>
#include <seastar/util/noncopyable_function.hh>
#include <seastar/util/optimized_optional.hh>
#include <seastar/util/process.hh>
#include <seastar/util/program-options.hh>
#include <seastar/util/reference_wrapper.hh>
#include <seastar/util/sampler.hh>
#include <seastar/util/shared_token_bucket.hh>
#include <seastar/util/short_streams.hh>
#include <seastar/util/spinlock.hh>
#include <seastar/util/std-compat.hh>
#include <seastar/util/string_utils.hh>
#include <seastar/util/tmp_file.hh>
#include <seastar/util/tuple_utils.hh>
#include <seastar/util/used_size.hh>
#include <seastar/util/variant_utils.hh>
#include <seastar/websocket/common.hh>
#include <seastar/websocket/parser.hh>
#include <set>
#include <setjmp.h>
#include <shared_mutex>
#include <signal.h>
#if defined(__x86_64__) || defined(__i386__)
#include <smmintrin.h>
#endif
#if __has_include(<source_location>)
#include <source_location>
#endif
#include <span>
#include <spawn.h>
#include <sstream>
#include <stack>
#include <stddef.h>
#include <stdexcept>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <strings.h>
#include <string_view>
#include <sys/epoll.h>
#include <sys/eventfd.h>
#include <sys/inotify.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/statvfs.h>
#include <systemd/sd-daemon.h>
#include <system_error>
#include <sys/time.h>
#include <sys/timerfd.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <sys/un.h>
#include <thread>
#include <time.h>
#include <tuple>
#include <typeindex>
#include <typeinfo>
#include <type_traits>
#if defined(__linux__)
#include <ucontext.h>
#endif
#include <unistd.h>
#include <unordered_map>
#include <unordered_set>
#include <unwind.h>
#include <utility>
#include <variant>
#include <vector>
#include <version>
#if defined(__x86_64__) || defined(__i386__)
#include <wmmintrin.h>
#include <xmmintrin.h>
#endif
#include <xxhash.h>
#include <yaml-cpp/node/convert.h>
#include <yaml-cpp/yaml.h>
#include <zlib.h>
#define ZSTD_STATIC_LINKING_ONLY
#include <zstd.h>

#endif
