#pragma once

#include <GL/glew.h>
#include <SFML/Window/Context.hpp>
#include <algorithm>
#include <array>
#include <boost/algorithm/cxx11/all_of.hpp>
#include <boost/asio/deadline_timer.hpp>
#include <boost/asio/dispatch.hpp>
#include <boost/asio/io_context.hpp>
#include <boost/asio/io_service.hpp>
#include <boost/asio/post.hpp>
#include <boost/asio/spawn.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/noncopyable.hpp>
#include <boost/property_tree/ptree_fwd.hpp>
#include <boost/range/adaptor/transformed.hpp>
#include <boost/range/algorithm_ext/erase.hpp>
#include <cmath>
#include <common/array.h>
#include <common/assert.h>
#include <common/env.h>
#include <common/except.h>
#include <common/forward.h>
#include <common/future.h>
#include <common/gl/gl_check.h>
#include <common/memory.h>
#include <common/scope_exit.h>
#include <core/frame/frame.h>
#include <core/frame/frame_transform.h>
#include <core/frame/frame_visitor.h>
#include <core/frame/geometry.h>
#include <core/frame/pixel_format.h>
#include <core/fwd.h>
#include <core/mixer/image/blend_modes.h>
#include <core/mixer/image/image_mixer.h>
#include <core/video_format.h>
#include <cstddef>
#include <cstdint>
#include <future>
#include <memory>
#include <mutex>
#include <set>
#include <string>
#include <tbb/concurrent_queue.h>
#include <tbb/concurrent_unordered_map.h>
#include <thread>
#include <type_traits>
#include <unordered_map>
#include <vector>
