blob: 271e875bc76bc65e6a3774467c1bcd4f2cdcd037 [file] [log] [blame]
// gpu/ipc/common/gpu_preferences.mojom-blink.h is auto generated by mojom_bindings_generator.py, do not edit
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef GPU_IPC_COMMON_GPU_PREFERENCES_MOJOM_BLINK_H_
#define GPU_IPC_COMMON_GPU_PREFERENCES_MOJOM_BLINK_H_
#include <stdint.h>
#include <limits>
#include <optional>
#include <type_traits>
#include <utility>
#include "mojo/public/cpp/bindings/clone_traits.h"
#include "mojo/public/cpp/bindings/equals_traits.h"
#include "mojo/public/cpp/bindings/struct_ptr.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "mojo/public/cpp/bindings/union_traits.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h"
#include "gpu/ipc/common/gpu_preferences.mojom-features.h" // IWYU pragma: export
#include "gpu/ipc/common/gpu_preferences.mojom-shared.h" // IWYU pragma: export
#include "gpu/ipc/common/gpu_preferences.mojom-blink-forward.h" // IWYU pragma: export
#include "ui/gfx/mojom/buffer_types.mojom-blink-forward.h"
#include "mojo/public/cpp/bindings/lib/wtf_clone_equals_util.h"
#include "mojo/public/cpp/bindings/lib/wtf_hash_util.h"
#include "third_party/blink/renderer/platform/wtf/hash_functions.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
#if !BLINK_MOJO_IMPL && !INSIDE_BLINK
#error "File must only be imported inside blink"
#endif
#ifdef KYTHE_IS_RUNNING
#pragma kythe_inline_metadata "Metadata comment"
#endif
namespace gpu::mojom::blink {
// @generated_from: gpu.mojom.GpuPreferences
class GpuPreferences {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<GpuPreferences, T>::value>;
using DataView = GpuPreferencesDataView;
using Data_ = internal::GpuPreferences_Data;
template <typename... Args>
static GpuPreferencesPtr New(Args&&... args) {
return GpuPreferencesPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static GpuPreferencesPtr From(const U& u) {
return mojo::TypeConverter<GpuPreferencesPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, GpuPreferences>::Convert(*this);
}
GpuPreferences();
GpuPreferences(
bool disable_accelerated_video_decode,
bool disable_accelerated_video_encode,
bool gpu_startup_dialog,
bool disable_gpu_watchdog,
bool gpu_sandbox_start_early,
bool enable_low_latency_dxva,
bool enable_zero_copy_dxgi_video,
bool enable_nv12_dxgi_video,
bool disable_software_rasterizer,
bool log_gpu_control_list_decisions,
bool compile_shader_always_succeeds,
bool disable_gl_error_limit,
bool disable_glsl_translator,
bool disable_shader_name_hashing,
bool enable_gpu_command_logging,
bool enable_gpu_debugging,
bool enable_gpu_service_logging_gpu,
bool enable_gpu_driver_debug_logging,
bool disable_gpu_program_cache,
bool enforce_gl_minimums,
uint32_t force_gpu_mem_discardable_limit_bytes,
uint32_t force_max_texture_size,
uint32_t gpu_program_cache_size,
bool disable_gpu_shader_disk_cache,
bool enable_threaded_texture_mailboxes,
bool gl_shader_interm_output,
bool perform_graphite_precompilation,
bool enable_gpu_service_logging,
bool enable_gpu_service_tracing,
bool use_passthrough_cmd_decoder,
bool ignore_gpu_blocklist,
bool watchdog_starts_backgrounded,
GrContextType gr_context_type,
VulkanImplementationName use_vulkan,
bool enable_vulkan_protected_memory,
bool disable_vulkan_surface,
bool disable_vulkan_fallback_to_gl_for_testing,
uint32_t vulkan_heap_memory_limit,
uint32_t vulkan_sync_cpu_memory_limit,
bool enable_gpu_benchmarking_extension,
bool enable_webgpu,
bool enable_unsafe_webgpu,
bool enable_webgpu_developer_features,
bool enable_webgpu_experimental_features,
WebGPUAdapterName use_webgpu_adapter,
WebGPUPowerPreference use_webgpu_power_preference,
bool force_webgpu_compat,
DawnBackendValidationLevel enable_dawn_backend_validation,
::blink::Vector<::blink::String> enabled_dawn_features_list,
::blink::Vector<::blink::String> disabled_dawn_features_list,
bool enable_perf_data_collection,
bool enable_native_gpu_memory_buffers,
bool force_separate_egl_display_for_webgl_testing);
~GpuPreferences();
// Clone() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Clone() or copy
// constructor/assignment are available for members.
template <typename StructPtrType = GpuPreferencesPtr>
GpuPreferencesPtr Clone() const;
// Equals() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Equals() or == operator
// are available for members.
template <typename T, GpuPreferences::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, GpuPreferences::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, GpuPreferences::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
template <mojo::internal::SendValidation send_validation, typename UserType>
static ::blink::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
GpuPreferences::DataView, ::blink::Vector<uint8_t>, send_validation>(input);
}
template <typename UserType>
static ::blink::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
GpuPreferences::DataView, ::blink::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
GpuPreferences::DataView>(input);
}
// The returned Message is serialized only if the message is moved
// cross-process or cross-language. Otherwise if the message is Deserialized
// as the same UserType |input| will just be moved to |output| in
// DeserializeFromMessage.
template <typename UserType>
static mojo::Message WrapAsMessage(UserType input) {
return mojo::Message(std::make_unique<
internal::GpuPreferences_UnserializedMessageContext<
UserType, GpuPreferences::DataView>>(0, 0, std::move(input)),
MOJO_CREATE_MESSAGE_FLAG_NONE);
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
mojo::Message message;
return mojo::internal::DeserializeImpl<GpuPreferences::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(base::span<const uint8_t> input,
UserType* output) {
return GpuPreferences::Deserialize(
input.empty() ? nullptr : input.data(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::GpuPreferences_UnserializedMessageContext<
UserType, GpuPreferences::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<GpuPreferences::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: gpu.mojom.GpuPreferences.disable_accelerated_video_decode
bool disable_accelerated_video_decode;
// @generated_from: gpu.mojom.GpuPreferences.disable_accelerated_video_encode
bool disable_accelerated_video_encode;
// @generated_from: gpu.mojom.GpuPreferences.gpu_startup_dialog
bool gpu_startup_dialog;
// @generated_from: gpu.mojom.GpuPreferences.disable_gpu_watchdog
bool disable_gpu_watchdog;
// @generated_from: gpu.mojom.GpuPreferences.gpu_sandbox_start_early
bool gpu_sandbox_start_early;
// @generated_from: gpu.mojom.GpuPreferences.enable_low_latency_dxva
bool enable_low_latency_dxva;
// @generated_from: gpu.mojom.GpuPreferences.enable_zero_copy_dxgi_video
bool enable_zero_copy_dxgi_video;
// @generated_from: gpu.mojom.GpuPreferences.enable_nv12_dxgi_video
bool enable_nv12_dxgi_video;
// @generated_from: gpu.mojom.GpuPreferences.disable_software_rasterizer
bool disable_software_rasterizer;
// @generated_from: gpu.mojom.GpuPreferences.log_gpu_control_list_decisions
bool log_gpu_control_list_decisions;
// @generated_from: gpu.mojom.GpuPreferences.compile_shader_always_succeeds
bool compile_shader_always_succeeds;
// @generated_from: gpu.mojom.GpuPreferences.disable_gl_error_limit
bool disable_gl_error_limit;
// @generated_from: gpu.mojom.GpuPreferences.disable_glsl_translator
bool disable_glsl_translator;
// @generated_from: gpu.mojom.GpuPreferences.disable_shader_name_hashing
bool disable_shader_name_hashing;
// @generated_from: gpu.mojom.GpuPreferences.enable_gpu_command_logging
bool enable_gpu_command_logging;
// @generated_from: gpu.mojom.GpuPreferences.enable_gpu_debugging
bool enable_gpu_debugging;
// @generated_from: gpu.mojom.GpuPreferences.enable_gpu_service_logging_gpu
bool enable_gpu_service_logging_gpu;
// @generated_from: gpu.mojom.GpuPreferences.enable_gpu_driver_debug_logging
bool enable_gpu_driver_debug_logging;
// @generated_from: gpu.mojom.GpuPreferences.disable_gpu_program_cache
bool disable_gpu_program_cache;
// @generated_from: gpu.mojom.GpuPreferences.enforce_gl_minimums
bool enforce_gl_minimums;
// @generated_from: gpu.mojom.GpuPreferences.force_gpu_mem_discardable_limit_bytes
uint32_t force_gpu_mem_discardable_limit_bytes;
// @generated_from: gpu.mojom.GpuPreferences.force_max_texture_size
uint32_t force_max_texture_size;
// @generated_from: gpu.mojom.GpuPreferences.gpu_program_cache_size
uint32_t gpu_program_cache_size;
// @generated_from: gpu.mojom.GpuPreferences.disable_gpu_shader_disk_cache
bool disable_gpu_shader_disk_cache;
// @generated_from: gpu.mojom.GpuPreferences.enable_threaded_texture_mailboxes
bool enable_threaded_texture_mailboxes;
// @generated_from: gpu.mojom.GpuPreferences.gl_shader_interm_output
bool gl_shader_interm_output;
// @generated_from: gpu.mojom.GpuPreferences.perform_graphite_precompilation
bool perform_graphite_precompilation;
// @generated_from: gpu.mojom.GpuPreferences.enable_gpu_service_logging
bool enable_gpu_service_logging;
// @generated_from: gpu.mojom.GpuPreferences.enable_gpu_service_tracing
bool enable_gpu_service_tracing;
// @generated_from: gpu.mojom.GpuPreferences.use_passthrough_cmd_decoder
bool use_passthrough_cmd_decoder;
// @generated_from: gpu.mojom.GpuPreferences.ignore_gpu_blocklist
bool ignore_gpu_blocklist;
// @generated_from: gpu.mojom.GpuPreferences.watchdog_starts_backgrounded
bool watchdog_starts_backgrounded;
// @generated_from: gpu.mojom.GpuPreferences.gr_context_type
GrContextType gr_context_type;
// @generated_from: gpu.mojom.GpuPreferences.use_vulkan
VulkanImplementationName use_vulkan;
// @generated_from: gpu.mojom.GpuPreferences.enable_vulkan_protected_memory
bool enable_vulkan_protected_memory;
// @generated_from: gpu.mojom.GpuPreferences.disable_vulkan_surface
bool disable_vulkan_surface;
// @generated_from: gpu.mojom.GpuPreferences.disable_vulkan_fallback_to_gl_for_testing
bool disable_vulkan_fallback_to_gl_for_testing;
// @generated_from: gpu.mojom.GpuPreferences.vulkan_heap_memory_limit
uint32_t vulkan_heap_memory_limit;
// @generated_from: gpu.mojom.GpuPreferences.vulkan_sync_cpu_memory_limit
uint32_t vulkan_sync_cpu_memory_limit;
// @generated_from: gpu.mojom.GpuPreferences.enable_gpu_benchmarking_extension
bool enable_gpu_benchmarking_extension;
// @generated_from: gpu.mojom.GpuPreferences.enable_webgpu
bool enable_webgpu;
// @generated_from: gpu.mojom.GpuPreferences.enable_unsafe_webgpu
bool enable_unsafe_webgpu;
// @generated_from: gpu.mojom.GpuPreferences.enable_webgpu_developer_features
bool enable_webgpu_developer_features;
// @generated_from: gpu.mojom.GpuPreferences.enable_webgpu_experimental_features
bool enable_webgpu_experimental_features;
// @generated_from: gpu.mojom.GpuPreferences.use_webgpu_adapter
WebGPUAdapterName use_webgpu_adapter;
// @generated_from: gpu.mojom.GpuPreferences.use_webgpu_power_preference
WebGPUPowerPreference use_webgpu_power_preference;
// @generated_from: gpu.mojom.GpuPreferences.force_webgpu_compat
bool force_webgpu_compat;
// @generated_from: gpu.mojom.GpuPreferences.enable_dawn_backend_validation
DawnBackendValidationLevel enable_dawn_backend_validation;
// @generated_from: gpu.mojom.GpuPreferences.enabled_dawn_features_list
::blink::Vector<::blink::String> enabled_dawn_features_list;
// @generated_from: gpu.mojom.GpuPreferences.disabled_dawn_features_list
::blink::Vector<::blink::String> disabled_dawn_features_list;
// @generated_from: gpu.mojom.GpuPreferences.enable_perf_data_collection
bool enable_perf_data_collection;
// @generated_from: gpu.mojom.GpuPreferences.enable_native_gpu_memory_buffers
bool enable_native_gpu_memory_buffers;
// @generated_from: gpu.mojom.GpuPreferences.force_separate_egl_display_for_webgl_testing
bool force_separate_egl_display_for_webgl_testing;
// Serialise this struct into a trace.
void WriteIntoTrace(perfetto::TracedValue traced_context) const;
private:
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
};
// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, GpuPreferences::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, GpuPreferences::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, GpuPreferences::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, GpuPreferences::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
template <typename StructPtrType>
GpuPreferencesPtr GpuPreferences::Clone() const {
return New(
mojo::Clone(disable_accelerated_video_decode),
mojo::Clone(disable_accelerated_video_encode),
mojo::Clone(gpu_startup_dialog),
mojo::Clone(disable_gpu_watchdog),
mojo::Clone(gpu_sandbox_start_early),
mojo::Clone(enable_low_latency_dxva),
mojo::Clone(enable_zero_copy_dxgi_video),
mojo::Clone(enable_nv12_dxgi_video),
mojo::Clone(disable_software_rasterizer),
mojo::Clone(log_gpu_control_list_decisions),
mojo::Clone(compile_shader_always_succeeds),
mojo::Clone(disable_gl_error_limit),
mojo::Clone(disable_glsl_translator),
mojo::Clone(disable_shader_name_hashing),
mojo::Clone(enable_gpu_command_logging),
mojo::Clone(enable_gpu_debugging),
mojo::Clone(enable_gpu_service_logging_gpu),
mojo::Clone(enable_gpu_driver_debug_logging),
mojo::Clone(disable_gpu_program_cache),
mojo::Clone(enforce_gl_minimums),
mojo::Clone(force_gpu_mem_discardable_limit_bytes),
mojo::Clone(force_max_texture_size),
mojo::Clone(gpu_program_cache_size),
mojo::Clone(disable_gpu_shader_disk_cache),
mojo::Clone(enable_threaded_texture_mailboxes),
mojo::Clone(gl_shader_interm_output),
mojo::Clone(perform_graphite_precompilation),
mojo::Clone(enable_gpu_service_logging),
mojo::Clone(enable_gpu_service_tracing),
mojo::Clone(use_passthrough_cmd_decoder),
mojo::Clone(ignore_gpu_blocklist),
mojo::Clone(watchdog_starts_backgrounded),
mojo::Clone(gr_context_type),
mojo::Clone(use_vulkan),
mojo::Clone(enable_vulkan_protected_memory),
mojo::Clone(disable_vulkan_surface),
mojo::Clone(disable_vulkan_fallback_to_gl_for_testing),
mojo::Clone(vulkan_heap_memory_limit),
mojo::Clone(vulkan_sync_cpu_memory_limit),
mojo::Clone(enable_gpu_benchmarking_extension),
mojo::Clone(enable_webgpu),
mojo::Clone(enable_unsafe_webgpu),
mojo::Clone(enable_webgpu_developer_features),
mojo::Clone(enable_webgpu_experimental_features),
mojo::Clone(use_webgpu_adapter),
mojo::Clone(use_webgpu_power_preference),
mojo::Clone(force_webgpu_compat),
mojo::Clone(enable_dawn_backend_validation),
mojo::Clone(enabled_dawn_features_list),
mojo::Clone(disabled_dawn_features_list),
mojo::Clone(enable_perf_data_collection),
mojo::Clone(enable_native_gpu_memory_buffers),
mojo::Clone(force_separate_egl_display_for_webgl_testing)
);
}
template <typename T, GpuPreferences::EnableIfSame<T>*>
bool GpuPreferences::Equals(const T& other_struct) const {
if (!mojo::Equals(this->disable_accelerated_video_decode, other_struct.disable_accelerated_video_decode))
return false;
if (!mojo::Equals(this->disable_accelerated_video_encode, other_struct.disable_accelerated_video_encode))
return false;
if (!mojo::Equals(this->gpu_startup_dialog, other_struct.gpu_startup_dialog))
return false;
if (!mojo::Equals(this->disable_gpu_watchdog, other_struct.disable_gpu_watchdog))
return false;
if (!mojo::Equals(this->gpu_sandbox_start_early, other_struct.gpu_sandbox_start_early))
return false;
if (!mojo::Equals(this->enable_low_latency_dxva, other_struct.enable_low_latency_dxva))
return false;
if (!mojo::Equals(this->enable_zero_copy_dxgi_video, other_struct.enable_zero_copy_dxgi_video))
return false;
if (!mojo::Equals(this->enable_nv12_dxgi_video, other_struct.enable_nv12_dxgi_video))
return false;
if (!mojo::Equals(this->disable_software_rasterizer, other_struct.disable_software_rasterizer))
return false;
if (!mojo::Equals(this->log_gpu_control_list_decisions, other_struct.log_gpu_control_list_decisions))
return false;
if (!mojo::Equals(this->compile_shader_always_succeeds, other_struct.compile_shader_always_succeeds))
return false;
if (!mojo::Equals(this->disable_gl_error_limit, other_struct.disable_gl_error_limit))
return false;
if (!mojo::Equals(this->disable_glsl_translator, other_struct.disable_glsl_translator))
return false;
if (!mojo::Equals(this->disable_shader_name_hashing, other_struct.disable_shader_name_hashing))
return false;
if (!mojo::Equals(this->enable_gpu_command_logging, other_struct.enable_gpu_command_logging))
return false;
if (!mojo::Equals(this->enable_gpu_debugging, other_struct.enable_gpu_debugging))
return false;
if (!mojo::Equals(this->enable_gpu_service_logging_gpu, other_struct.enable_gpu_service_logging_gpu))
return false;
if (!mojo::Equals(this->enable_gpu_driver_debug_logging, other_struct.enable_gpu_driver_debug_logging))
return false;
if (!mojo::Equals(this->disable_gpu_program_cache, other_struct.disable_gpu_program_cache))
return false;
if (!mojo::Equals(this->enforce_gl_minimums, other_struct.enforce_gl_minimums))
return false;
if (!mojo::Equals(this->force_gpu_mem_discardable_limit_bytes, other_struct.force_gpu_mem_discardable_limit_bytes))
return false;
if (!mojo::Equals(this->force_max_texture_size, other_struct.force_max_texture_size))
return false;
if (!mojo::Equals(this->gpu_program_cache_size, other_struct.gpu_program_cache_size))
return false;
if (!mojo::Equals(this->disable_gpu_shader_disk_cache, other_struct.disable_gpu_shader_disk_cache))
return false;
if (!mojo::Equals(this->enable_threaded_texture_mailboxes, other_struct.enable_threaded_texture_mailboxes))
return false;
if (!mojo::Equals(this->gl_shader_interm_output, other_struct.gl_shader_interm_output))
return false;
if (!mojo::Equals(this->perform_graphite_precompilation, other_struct.perform_graphite_precompilation))
return false;
if (!mojo::Equals(this->enable_gpu_service_logging, other_struct.enable_gpu_service_logging))
return false;
if (!mojo::Equals(this->enable_gpu_service_tracing, other_struct.enable_gpu_service_tracing))
return false;
if (!mojo::Equals(this->use_passthrough_cmd_decoder, other_struct.use_passthrough_cmd_decoder))
return false;
if (!mojo::Equals(this->ignore_gpu_blocklist, other_struct.ignore_gpu_blocklist))
return false;
if (!mojo::Equals(this->watchdog_starts_backgrounded, other_struct.watchdog_starts_backgrounded))
return false;
if (!mojo::Equals(this->gr_context_type, other_struct.gr_context_type))
return false;
if (!mojo::Equals(this->use_vulkan, other_struct.use_vulkan))
return false;
if (!mojo::Equals(this->enable_vulkan_protected_memory, other_struct.enable_vulkan_protected_memory))
return false;
if (!mojo::Equals(this->disable_vulkan_surface, other_struct.disable_vulkan_surface))
return false;
if (!mojo::Equals(this->disable_vulkan_fallback_to_gl_for_testing, other_struct.disable_vulkan_fallback_to_gl_for_testing))
return false;
if (!mojo::Equals(this->vulkan_heap_memory_limit, other_struct.vulkan_heap_memory_limit))
return false;
if (!mojo::Equals(this->vulkan_sync_cpu_memory_limit, other_struct.vulkan_sync_cpu_memory_limit))
return false;
if (!mojo::Equals(this->enable_gpu_benchmarking_extension, other_struct.enable_gpu_benchmarking_extension))
return false;
if (!mojo::Equals(this->enable_webgpu, other_struct.enable_webgpu))
return false;
if (!mojo::Equals(this->enable_unsafe_webgpu, other_struct.enable_unsafe_webgpu))
return false;
if (!mojo::Equals(this->enable_webgpu_developer_features, other_struct.enable_webgpu_developer_features))
return false;
if (!mojo::Equals(this->enable_webgpu_experimental_features, other_struct.enable_webgpu_experimental_features))
return false;
if (!mojo::Equals(this->use_webgpu_adapter, other_struct.use_webgpu_adapter))
return false;
if (!mojo::Equals(this->use_webgpu_power_preference, other_struct.use_webgpu_power_preference))
return false;
if (!mojo::Equals(this->force_webgpu_compat, other_struct.force_webgpu_compat))
return false;
if (!mojo::Equals(this->enable_dawn_backend_validation, other_struct.enable_dawn_backend_validation))
return false;
if (!mojo::Equals(this->enabled_dawn_features_list, other_struct.enabled_dawn_features_list))
return false;
if (!mojo::Equals(this->disabled_dawn_features_list, other_struct.disabled_dawn_features_list))
return false;
if (!mojo::Equals(this->enable_perf_data_collection, other_struct.enable_perf_data_collection))
return false;
if (!mojo::Equals(this->enable_native_gpu_memory_buffers, other_struct.enable_native_gpu_memory_buffers))
return false;
if (!mojo::Equals(this->force_separate_egl_display_for_webgl_testing, other_struct.force_separate_egl_display_for_webgl_testing))
return false;
return true;
}
template <typename T, GpuPreferences::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.disable_accelerated_video_decode < rhs.disable_accelerated_video_decode)
return true;
if (rhs.disable_accelerated_video_decode < lhs.disable_accelerated_video_decode)
return false;
if (lhs.disable_accelerated_video_encode < rhs.disable_accelerated_video_encode)
return true;
if (rhs.disable_accelerated_video_encode < lhs.disable_accelerated_video_encode)
return false;
if (lhs.gpu_startup_dialog < rhs.gpu_startup_dialog)
return true;
if (rhs.gpu_startup_dialog < lhs.gpu_startup_dialog)
return false;
if (lhs.disable_gpu_watchdog < rhs.disable_gpu_watchdog)
return true;
if (rhs.disable_gpu_watchdog < lhs.disable_gpu_watchdog)
return false;
if (lhs.gpu_sandbox_start_early < rhs.gpu_sandbox_start_early)
return true;
if (rhs.gpu_sandbox_start_early < lhs.gpu_sandbox_start_early)
return false;
if (lhs.enable_low_latency_dxva < rhs.enable_low_latency_dxva)
return true;
if (rhs.enable_low_latency_dxva < lhs.enable_low_latency_dxva)
return false;
if (lhs.enable_zero_copy_dxgi_video < rhs.enable_zero_copy_dxgi_video)
return true;
if (rhs.enable_zero_copy_dxgi_video < lhs.enable_zero_copy_dxgi_video)
return false;
if (lhs.enable_nv12_dxgi_video < rhs.enable_nv12_dxgi_video)
return true;
if (rhs.enable_nv12_dxgi_video < lhs.enable_nv12_dxgi_video)
return false;
if (lhs.disable_software_rasterizer < rhs.disable_software_rasterizer)
return true;
if (rhs.disable_software_rasterizer < lhs.disable_software_rasterizer)
return false;
if (lhs.log_gpu_control_list_decisions < rhs.log_gpu_control_list_decisions)
return true;
if (rhs.log_gpu_control_list_decisions < lhs.log_gpu_control_list_decisions)
return false;
if (lhs.compile_shader_always_succeeds < rhs.compile_shader_always_succeeds)
return true;
if (rhs.compile_shader_always_succeeds < lhs.compile_shader_always_succeeds)
return false;
if (lhs.disable_gl_error_limit < rhs.disable_gl_error_limit)
return true;
if (rhs.disable_gl_error_limit < lhs.disable_gl_error_limit)
return false;
if (lhs.disable_glsl_translator < rhs.disable_glsl_translator)
return true;
if (rhs.disable_glsl_translator < lhs.disable_glsl_translator)
return false;
if (lhs.disable_shader_name_hashing < rhs.disable_shader_name_hashing)
return true;
if (rhs.disable_shader_name_hashing < lhs.disable_shader_name_hashing)
return false;
if (lhs.enable_gpu_command_logging < rhs.enable_gpu_command_logging)
return true;
if (rhs.enable_gpu_command_logging < lhs.enable_gpu_command_logging)
return false;
if (lhs.enable_gpu_debugging < rhs.enable_gpu_debugging)
return true;
if (rhs.enable_gpu_debugging < lhs.enable_gpu_debugging)
return false;
if (lhs.enable_gpu_service_logging_gpu < rhs.enable_gpu_service_logging_gpu)
return true;
if (rhs.enable_gpu_service_logging_gpu < lhs.enable_gpu_service_logging_gpu)
return false;
if (lhs.enable_gpu_driver_debug_logging < rhs.enable_gpu_driver_debug_logging)
return true;
if (rhs.enable_gpu_driver_debug_logging < lhs.enable_gpu_driver_debug_logging)
return false;
if (lhs.disable_gpu_program_cache < rhs.disable_gpu_program_cache)
return true;
if (rhs.disable_gpu_program_cache < lhs.disable_gpu_program_cache)
return false;
if (lhs.enforce_gl_minimums < rhs.enforce_gl_minimums)
return true;
if (rhs.enforce_gl_minimums < lhs.enforce_gl_minimums)
return false;
if (lhs.force_gpu_mem_discardable_limit_bytes < rhs.force_gpu_mem_discardable_limit_bytes)
return true;
if (rhs.force_gpu_mem_discardable_limit_bytes < lhs.force_gpu_mem_discardable_limit_bytes)
return false;
if (lhs.force_max_texture_size < rhs.force_max_texture_size)
return true;
if (rhs.force_max_texture_size < lhs.force_max_texture_size)
return false;
if (lhs.gpu_program_cache_size < rhs.gpu_program_cache_size)
return true;
if (rhs.gpu_program_cache_size < lhs.gpu_program_cache_size)
return false;
if (lhs.disable_gpu_shader_disk_cache < rhs.disable_gpu_shader_disk_cache)
return true;
if (rhs.disable_gpu_shader_disk_cache < lhs.disable_gpu_shader_disk_cache)
return false;
if (lhs.enable_threaded_texture_mailboxes < rhs.enable_threaded_texture_mailboxes)
return true;
if (rhs.enable_threaded_texture_mailboxes < lhs.enable_threaded_texture_mailboxes)
return false;
if (lhs.gl_shader_interm_output < rhs.gl_shader_interm_output)
return true;
if (rhs.gl_shader_interm_output < lhs.gl_shader_interm_output)
return false;
if (lhs.perform_graphite_precompilation < rhs.perform_graphite_precompilation)
return true;
if (rhs.perform_graphite_precompilation < lhs.perform_graphite_precompilation)
return false;
if (lhs.enable_gpu_service_logging < rhs.enable_gpu_service_logging)
return true;
if (rhs.enable_gpu_service_logging < lhs.enable_gpu_service_logging)
return false;
if (lhs.enable_gpu_service_tracing < rhs.enable_gpu_service_tracing)
return true;
if (rhs.enable_gpu_service_tracing < lhs.enable_gpu_service_tracing)
return false;
if (lhs.use_passthrough_cmd_decoder < rhs.use_passthrough_cmd_decoder)
return true;
if (rhs.use_passthrough_cmd_decoder < lhs.use_passthrough_cmd_decoder)
return false;
if (lhs.ignore_gpu_blocklist < rhs.ignore_gpu_blocklist)
return true;
if (rhs.ignore_gpu_blocklist < lhs.ignore_gpu_blocklist)
return false;
if (lhs.watchdog_starts_backgrounded < rhs.watchdog_starts_backgrounded)
return true;
if (rhs.watchdog_starts_backgrounded < lhs.watchdog_starts_backgrounded)
return false;
if (lhs.gr_context_type < rhs.gr_context_type)
return true;
if (rhs.gr_context_type < lhs.gr_context_type)
return false;
if (lhs.use_vulkan < rhs.use_vulkan)
return true;
if (rhs.use_vulkan < lhs.use_vulkan)
return false;
if (lhs.enable_vulkan_protected_memory < rhs.enable_vulkan_protected_memory)
return true;
if (rhs.enable_vulkan_protected_memory < lhs.enable_vulkan_protected_memory)
return false;
if (lhs.disable_vulkan_surface < rhs.disable_vulkan_surface)
return true;
if (rhs.disable_vulkan_surface < lhs.disable_vulkan_surface)
return false;
if (lhs.disable_vulkan_fallback_to_gl_for_testing < rhs.disable_vulkan_fallback_to_gl_for_testing)
return true;
if (rhs.disable_vulkan_fallback_to_gl_for_testing < lhs.disable_vulkan_fallback_to_gl_for_testing)
return false;
if (lhs.vulkan_heap_memory_limit < rhs.vulkan_heap_memory_limit)
return true;
if (rhs.vulkan_heap_memory_limit < lhs.vulkan_heap_memory_limit)
return false;
if (lhs.vulkan_sync_cpu_memory_limit < rhs.vulkan_sync_cpu_memory_limit)
return true;
if (rhs.vulkan_sync_cpu_memory_limit < lhs.vulkan_sync_cpu_memory_limit)
return false;
if (lhs.enable_gpu_benchmarking_extension < rhs.enable_gpu_benchmarking_extension)
return true;
if (rhs.enable_gpu_benchmarking_extension < lhs.enable_gpu_benchmarking_extension)
return false;
if (lhs.enable_webgpu < rhs.enable_webgpu)
return true;
if (rhs.enable_webgpu < lhs.enable_webgpu)
return false;
if (lhs.enable_unsafe_webgpu < rhs.enable_unsafe_webgpu)
return true;
if (rhs.enable_unsafe_webgpu < lhs.enable_unsafe_webgpu)
return false;
if (lhs.enable_webgpu_developer_features < rhs.enable_webgpu_developer_features)
return true;
if (rhs.enable_webgpu_developer_features < lhs.enable_webgpu_developer_features)
return false;
if (lhs.enable_webgpu_experimental_features < rhs.enable_webgpu_experimental_features)
return true;
if (rhs.enable_webgpu_experimental_features < lhs.enable_webgpu_experimental_features)
return false;
if (lhs.use_webgpu_adapter < rhs.use_webgpu_adapter)
return true;
if (rhs.use_webgpu_adapter < lhs.use_webgpu_adapter)
return false;
if (lhs.use_webgpu_power_preference < rhs.use_webgpu_power_preference)
return true;
if (rhs.use_webgpu_power_preference < lhs.use_webgpu_power_preference)
return false;
if (lhs.force_webgpu_compat < rhs.force_webgpu_compat)
return true;
if (rhs.force_webgpu_compat < lhs.force_webgpu_compat)
return false;
if (lhs.enable_dawn_backend_validation < rhs.enable_dawn_backend_validation)
return true;
if (rhs.enable_dawn_backend_validation < lhs.enable_dawn_backend_validation)
return false;
if (lhs.enabled_dawn_features_list < rhs.enabled_dawn_features_list)
return true;
if (rhs.enabled_dawn_features_list < lhs.enabled_dawn_features_list)
return false;
if (lhs.disabled_dawn_features_list < rhs.disabled_dawn_features_list)
return true;
if (rhs.disabled_dawn_features_list < lhs.disabled_dawn_features_list)
return false;
if (lhs.enable_perf_data_collection < rhs.enable_perf_data_collection)
return true;
if (rhs.enable_perf_data_collection < lhs.enable_perf_data_collection)
return false;
if (lhs.enable_native_gpu_memory_buffers < rhs.enable_native_gpu_memory_buffers)
return true;
if (rhs.enable_native_gpu_memory_buffers < lhs.enable_native_gpu_memory_buffers)
return false;
if (lhs.force_separate_egl_display_for_webgl_testing < rhs.force_separate_egl_display_for_webgl_testing)
return true;
if (rhs.force_separate_egl_display_for_webgl_testing < lhs.force_separate_egl_display_for_webgl_testing)
return false;
return false;
}
} // gpu::mojom::blink
namespace mojo {
template <>
struct StructTraits<::gpu::mojom::blink::GpuPreferences::DataView,
::gpu::mojom::blink::GpuPreferencesPtr> {
static bool IsNull(const ::gpu::mojom::blink::GpuPreferencesPtr& input) { return !input; }
static void SetToNull(::gpu::mojom::blink::GpuPreferencesPtr* output) { output->reset(); }
static decltype(::gpu::mojom::blink::GpuPreferences::disable_accelerated_video_decode) disable_accelerated_video_decode(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->disable_accelerated_video_decode;
}
static decltype(::gpu::mojom::blink::GpuPreferences::disable_accelerated_video_encode) disable_accelerated_video_encode(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->disable_accelerated_video_encode;
}
static decltype(::gpu::mojom::blink::GpuPreferences::gpu_startup_dialog) gpu_startup_dialog(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->gpu_startup_dialog;
}
static decltype(::gpu::mojom::blink::GpuPreferences::disable_gpu_watchdog) disable_gpu_watchdog(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->disable_gpu_watchdog;
}
static decltype(::gpu::mojom::blink::GpuPreferences::gpu_sandbox_start_early) gpu_sandbox_start_early(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->gpu_sandbox_start_early;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_low_latency_dxva) enable_low_latency_dxva(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_low_latency_dxva;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_zero_copy_dxgi_video) enable_zero_copy_dxgi_video(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_zero_copy_dxgi_video;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_nv12_dxgi_video) enable_nv12_dxgi_video(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_nv12_dxgi_video;
}
static decltype(::gpu::mojom::blink::GpuPreferences::disable_software_rasterizer) disable_software_rasterizer(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->disable_software_rasterizer;
}
static decltype(::gpu::mojom::blink::GpuPreferences::log_gpu_control_list_decisions) log_gpu_control_list_decisions(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->log_gpu_control_list_decisions;
}
static decltype(::gpu::mojom::blink::GpuPreferences::compile_shader_always_succeeds) compile_shader_always_succeeds(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->compile_shader_always_succeeds;
}
static decltype(::gpu::mojom::blink::GpuPreferences::disable_gl_error_limit) disable_gl_error_limit(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->disable_gl_error_limit;
}
static decltype(::gpu::mojom::blink::GpuPreferences::disable_glsl_translator) disable_glsl_translator(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->disable_glsl_translator;
}
static decltype(::gpu::mojom::blink::GpuPreferences::disable_shader_name_hashing) disable_shader_name_hashing(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->disable_shader_name_hashing;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_gpu_command_logging) enable_gpu_command_logging(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_gpu_command_logging;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_gpu_debugging) enable_gpu_debugging(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_gpu_debugging;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_gpu_service_logging_gpu) enable_gpu_service_logging_gpu(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_gpu_service_logging_gpu;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_gpu_driver_debug_logging) enable_gpu_driver_debug_logging(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_gpu_driver_debug_logging;
}
static decltype(::gpu::mojom::blink::GpuPreferences::disable_gpu_program_cache) disable_gpu_program_cache(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->disable_gpu_program_cache;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enforce_gl_minimums) enforce_gl_minimums(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enforce_gl_minimums;
}
static decltype(::gpu::mojom::blink::GpuPreferences::force_gpu_mem_discardable_limit_bytes) force_gpu_mem_discardable_limit_bytes(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->force_gpu_mem_discardable_limit_bytes;
}
static decltype(::gpu::mojom::blink::GpuPreferences::force_max_texture_size) force_max_texture_size(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->force_max_texture_size;
}
static decltype(::gpu::mojom::blink::GpuPreferences::gpu_program_cache_size) gpu_program_cache_size(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->gpu_program_cache_size;
}
static decltype(::gpu::mojom::blink::GpuPreferences::disable_gpu_shader_disk_cache) disable_gpu_shader_disk_cache(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->disable_gpu_shader_disk_cache;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_threaded_texture_mailboxes) enable_threaded_texture_mailboxes(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_threaded_texture_mailboxes;
}
static decltype(::gpu::mojom::blink::GpuPreferences::gl_shader_interm_output) gl_shader_interm_output(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->gl_shader_interm_output;
}
static decltype(::gpu::mojom::blink::GpuPreferences::perform_graphite_precompilation) perform_graphite_precompilation(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->perform_graphite_precompilation;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_gpu_service_logging) enable_gpu_service_logging(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_gpu_service_logging;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_gpu_service_tracing) enable_gpu_service_tracing(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_gpu_service_tracing;
}
static decltype(::gpu::mojom::blink::GpuPreferences::use_passthrough_cmd_decoder) use_passthrough_cmd_decoder(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->use_passthrough_cmd_decoder;
}
static decltype(::gpu::mojom::blink::GpuPreferences::ignore_gpu_blocklist) ignore_gpu_blocklist(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->ignore_gpu_blocklist;
}
static decltype(::gpu::mojom::blink::GpuPreferences::watchdog_starts_backgrounded) watchdog_starts_backgrounded(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->watchdog_starts_backgrounded;
}
static decltype(::gpu::mojom::blink::GpuPreferences::gr_context_type) gr_context_type(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->gr_context_type;
}
static decltype(::gpu::mojom::blink::GpuPreferences::use_vulkan) use_vulkan(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->use_vulkan;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_vulkan_protected_memory) enable_vulkan_protected_memory(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_vulkan_protected_memory;
}
static decltype(::gpu::mojom::blink::GpuPreferences::disable_vulkan_surface) disable_vulkan_surface(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->disable_vulkan_surface;
}
static decltype(::gpu::mojom::blink::GpuPreferences::disable_vulkan_fallback_to_gl_for_testing) disable_vulkan_fallback_to_gl_for_testing(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->disable_vulkan_fallback_to_gl_for_testing;
}
static decltype(::gpu::mojom::blink::GpuPreferences::vulkan_heap_memory_limit) vulkan_heap_memory_limit(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->vulkan_heap_memory_limit;
}
static decltype(::gpu::mojom::blink::GpuPreferences::vulkan_sync_cpu_memory_limit) vulkan_sync_cpu_memory_limit(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->vulkan_sync_cpu_memory_limit;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_gpu_benchmarking_extension) enable_gpu_benchmarking_extension(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_gpu_benchmarking_extension;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_webgpu) enable_webgpu(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_webgpu;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_unsafe_webgpu) enable_unsafe_webgpu(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_unsafe_webgpu;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_webgpu_developer_features) enable_webgpu_developer_features(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_webgpu_developer_features;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_webgpu_experimental_features) enable_webgpu_experimental_features(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_webgpu_experimental_features;
}
static decltype(::gpu::mojom::blink::GpuPreferences::use_webgpu_adapter) use_webgpu_adapter(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->use_webgpu_adapter;
}
static decltype(::gpu::mojom::blink::GpuPreferences::use_webgpu_power_preference) use_webgpu_power_preference(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->use_webgpu_power_preference;
}
static decltype(::gpu::mojom::blink::GpuPreferences::force_webgpu_compat) force_webgpu_compat(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->force_webgpu_compat;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_dawn_backend_validation) enable_dawn_backend_validation(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_dawn_backend_validation;
}
static const decltype(::gpu::mojom::blink::GpuPreferences::enabled_dawn_features_list)& enabled_dawn_features_list(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enabled_dawn_features_list;
}
static const decltype(::gpu::mojom::blink::GpuPreferences::disabled_dawn_features_list)& disabled_dawn_features_list(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->disabled_dawn_features_list;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_perf_data_collection) enable_perf_data_collection(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_perf_data_collection;
}
static decltype(::gpu::mojom::blink::GpuPreferences::enable_native_gpu_memory_buffers) enable_native_gpu_memory_buffers(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->enable_native_gpu_memory_buffers;
}
static decltype(::gpu::mojom::blink::GpuPreferences::force_separate_egl_display_for_webgl_testing) force_separate_egl_display_for_webgl_testing(
const ::gpu::mojom::blink::GpuPreferencesPtr& input) {
return input->force_separate_egl_display_for_webgl_testing;
}
static bool Read(::gpu::mojom::blink::GpuPreferences::DataView input, ::gpu::mojom::blink::GpuPreferencesPtr* output);
};
} // namespace mojo
#endif // GPU_IPC_COMMON_GPU_PREFERENCES_MOJOM_BLINK_H_
/* Metadata comment
eyJ0eXBlIjogImt5dGhlMCIsICJtZXRhIjogW3sidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDE2NDIsICJlbmQiOiAxNjU2LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1UHJlZmVyZW5jZXMifSwgImVk
Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMi
LCAiYmVnaW4iOiA3OTI0LCAiZW5kIjogNzk1NiwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pv
bSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9t
aXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLkdwdVByZWZlcmVuY2VzLmRp
c2FibGVfYWNjZWxlcmF0ZWRfdmlkZW9fZGVjb2RlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogODA0NiwgImVu
ZCI6IDgwNzgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2ln
bmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5kaXNhYmxlX2FjY2VsZXJhdGVkX3Zp
ZGVvX2VuY29kZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6
ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDgxNTQsICJlbmQiOiA4MTcyLCAidm5hbWUiOiB7
Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
L2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20u
R3B1UHJlZmVyZW5jZXMuZ3B1X3N0YXJ0dXBfZGlhbG9nIn0sICJlZGdlIjogIiUva3l0aGUvZWRn
ZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogODI1MCwg
ImVuZCI6IDgyNzAsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNo
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAi
c2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5kaXNhYmxlX2dwdV93YXRjaGRv
ZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDgzNTEsICJlbmQiOiA4Mzc0LCAidm5hbWUiOiB7Imxhbmd1YWdl
IjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFy
Y2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1UHJlZmVy
ZW5jZXMuZ3B1X3NhbmRib3hfc3RhcnRfZWFybHkifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl
bmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA4NDU1LCAiZW5k
IjogODQ3OCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21p
dW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWdu
YXR1cmUiOiAiZ3B1Lm1vam9tLkdwdVByZWZlcmVuY2VzLmVuYWJsZV9sb3dfbGF0ZW5jeV9keHZh
In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9k
ZWZpbmVzIiwgImJlZ2luIjogODU2MywgImVuZCI6IDg1OTAsICJ2bmFtZSI6IHsibGFuZ3VhZ2Ui
OiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJj
aC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJl
bmNlcy5lbmFibGVfemVyb19jb3B5X2R4Z2lfdmlkZW8ifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
L2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA4NjcwLCAi
ZW5kIjogODY5MiwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
aWduYXR1cmUiOiAiZ3B1Lm1vam9tLkdwdVByZWZlcmVuY2VzLmVuYWJsZV9udjEyX2R4Z2lfdmlk
ZW8ifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9y
X2RlZmluZXMiLCAiYmVnaW4iOiA4Nzc3LCAiZW5kIjogODgwNCwgInZuYW1lIjogeyJsYW5ndWFn
ZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2Vh
cmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLkdwdVByZWZl
cmVuY2VzLmRpc2FibGVfc29mdHdhcmVfcmFzdGVyaXplciJ9LCAiZWRnZSI6ICIlL2t5dGhlL2Vk
Z2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDg4OTIs
ICJlbmQiOiA4OTIyLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJj
aHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwg
InNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1UHJlZmVyZW5jZXMubG9nX2dwdV9jb250cm9sX2xp
c3RfZGVjaXNpb25zIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogOTAxMCwgImVuZCI6IDkwNDAsICJ2bmFtZSI6
IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImdwdS5tb2pv
bS5HcHVQcmVmZXJlbmNlcy5jb21waWxlX3NoYWRlcl9hbHdheXNfc3VjY2VlZHMifSwgImVkZ2Ui
OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
YmVnaW4iOiA5MTIwLCAiZW5kIjogOTE0MiwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIs
ICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVt
L3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLkdwdVByZWZlcmVuY2VzLmRpc2Fi
bGVfZ2xfZXJyb3JfbGltaXQifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7
InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA5MjIzLCAiZW5kIjogOTI0NiwgInZu
YW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZ3B1
Lm1vam9tLkdwdVByZWZlcmVuY2VzLmRpc2FibGVfZ2xzbF90cmFuc2xhdG9yIn0sICJlZGdlIjog
IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJl
Z2luIjogOTMzMSwgImVuZCI6IDkzNTgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAi
Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9z
cmMvL21haW4iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5kaXNhYmxl
X3NoYWRlcl9uYW1lX2hhc2hpbmcifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9
LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA5NDQyLCAiZW5kIjogOTQ2OCwg
InZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAi
Z3B1Lm1vam9tLkdwdVByZWZlcmVuY2VzLmVuYWJsZV9ncHVfY29tbWFuZF9sb2dnaW5nIn0sICJl
ZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVz
IiwgImJlZ2luIjogOTU0NiwgImVuZCI6IDk1NjYsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9q
b20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJv
bWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5l
bmFibGVfZ3B1X2RlYnVnZ2luZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0s
IHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDk2NTQsICJlbmQiOiA5Njg0LCAi
dm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz
b3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJn
cHUubW9qb20uR3B1UHJlZmVyZW5jZXMuZW5hYmxlX2dwdV9zZXJ2aWNlX2xvZ2dpbmdfZ3B1In0s
ICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZp
bmVzIiwgImJlZ2luIjogOTc3MywgImVuZCI6IDk4MDQsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAi
bW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9j
aHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNl
cy5lbmFibGVfZ3B1X2RyaXZlcl9kZWJ1Z19sb2dnaW5nIn0sICJlZGdlIjogIiUva3l0aGUvZWRn
ZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogOTg4Nywg
ImVuZCI6IDk5MTIsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNo
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAi
c2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5kaXNhYmxlX2dwdV9wcm9ncmFt
X2NhY2hlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFu
Y2hvcl9kZWZpbmVzIiwgImJlZ2luIjogOTk4OSwgImVuZCI6IDEwMDA4LCAidm5hbWUiOiB7Imxh
bmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nv
ZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1
UHJlZmVyZW5jZXMuZW5mb3JjZV9nbF9taW5pbXVtcyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEwMTA3LCAi
ZW5kIjogMTAxNDQsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNo
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAi
c2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5mb3JjZV9ncHVfbWVtX2Rpc2Nh
cmRhYmxlX2xpbWl0X2J5dGVzIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwg
eyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMTAyMjgsICJlbmQiOiAxMDI1MCwg
InZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAi
Z3B1Lm1vam9tLkdwdVByZWZlcmVuY2VzLmZvcmNlX21heF90ZXh0dXJlX3NpemUifSwgImVkZ2Ui
OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
YmVnaW4iOiAxMDMzNCwgImVuZCI6IDEwMzU2LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9t
IiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21p
dW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1UHJlZmVyZW5jZXMuZ3B1
X3Byb2dyYW1fY2FjaGVfc2l6ZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0s
IHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEwNDQzLCAiZW5kIjogMTA0NzIs
ICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjog
ImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5kaXNhYmxlX2dwdV9zaGFkZXJfZGlza19jYWNoZSJ9
LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVm
aW5lcyIsICJiZWdpbiI6IDEwNTYzLCAiZW5kIjogMTA1OTYsICJ2bmFtZSI6IHsibGFuZ3VhZ2Ui
OiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJj
aC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJl
bmNlcy5lbmFibGVfdGhyZWFkZWRfdGV4dHVyZV9tYWlsYm94ZXMifSwgImVkZ2UiOiAiJS9reXRo
ZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAx
MDY3NywgImVuZCI6IDEwNzAwLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1
cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9t
YWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1UHJlZmVyZW5jZXMuZ2xfc2hhZGVyX2lu
dGVybV9vdXRwdXQifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUi
OiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxMDc4OSwgImVuZCI6IDEwODIwLCAidm5hbWUi
OiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9q
b20uR3B1UHJlZmVyZW5jZXMucGVyZm9ybV9ncmFwaGl0ZV9wcmVjb21waWxhdGlvbiJ9LCAiZWRn
ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs
ICJiZWdpbiI6IDEwOTA0LCAiZW5kIjogMTA5MzAsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9q
b20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJv
bWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5l
bmFibGVfZ3B1X3NlcnZpY2VfbG9nZ2luZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh
dGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDExMDE0LCAiZW5kIjog
MTEwNDAsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVt
Lmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0
dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5lbmFibGVfZ3B1X3NlcnZpY2VfdHJhY2lu
ZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDExMTI1LCAiZW5kIjogMTExNTIsICJ2bmFtZSI6IHsibGFuZ3Vh
Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVm
ZXJlbmNlcy51c2VfcGFzc3Rocm91Z2hfY21kX2RlY29kZXIifSwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxMTIz
MCwgImVuZCI6IDExMjUwLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6
ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWlu
IiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1UHJlZmVyZW5jZXMuaWdub3JlX2dwdV9ibG9j
a2xpc3QifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5j
aG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxMTMzNiwgImVuZCI6IDExMzY0LCAidm5hbWUiOiB7Imxh
bmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nv
ZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1
UHJlZmVyZW5jZXMud2F0Y2hkb2dfc3RhcnRzX2JhY2tncm91bmRlZCJ9LCAiZWRnZSI6ICIlL2t5
dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6
IDExNDQ2LCAiZW5kIjogMTE0NjEsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29y
cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMv
L21haW4iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5ncl9jb250ZXh0
X3R5cGUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5j
aG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxMTU0OSwgImVuZCI6IDExNTU5LCAidm5hbWUiOiB7Imxh
bmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nv
ZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1
UHJlZmVyZW5jZXMudXNlX3Z1bGthbiJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
In0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDExNjQ3LCAiZW5kIjogMTE2
NzcsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJl
IjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5lbmFibGVfdnVsa2FuX3Byb3RlY3RlZF9tZW1v
cnkifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9y
X2RlZmluZXMiLCAiYmVnaW4iOiAxMTc1NywgImVuZCI6IDExNzc5LCAidm5hbWUiOiB7Imxhbmd1
YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVz
ZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1UHJl
ZmVyZW5jZXMuZGlzYWJsZV92dWxrYW5fc3VyZmFjZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDExODc4LCAi
ZW5kIjogMTE5MTksICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNo
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAi
c2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5kaXNhYmxlX3Z1bGthbl9mYWxs
YmFja190b19nbF9mb3JfdGVzdGluZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
In0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEyMDA1LCAiZW5kIjogMTIw
MjksICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJl
IjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy52dWxrYW5faGVhcF9tZW1vcnlfbGltaXQifSwg
ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmlu
ZXMiLCAiYmVnaW4iOiAxMjExOSwgImVuZCI6IDEyMTQ3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjog
Im1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gv
Y2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1UHJlZmVyZW5j
ZXMudnVsa2FuX3N5bmNfY3B1X21lbW9yeV9saW1pdCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEyMjM4LCAi
ZW5kIjogMTIyNzEsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNo
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAi
c2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5lbmFibGVfZ3B1X2JlbmNobWFy
a2luZ19leHRlbnNpb24ifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5
cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxMjM0MiwgImVuZCI6IDEyMzU1LCAidm5h
bWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy
Y2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUu
bW9qb20uR3B1UHJlZmVyZW5jZXMuZW5hYmxlX3dlYmdwdSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2Vk
Z2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEyNDMz
LCAiZW5kIjogMTI0NTMsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjog
ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4i
LCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5lbmFibGVfdW5zYWZlX3dl
YmdwdSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNo
b3JfZGVmaW5lcyIsICJiZWdpbiI6IDEyNTQzLCAiZW5kIjogMTI1NzUsICJ2bmFtZSI6IHsibGFu
Z3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29k
ZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQ
cmVmZXJlbmNlcy5lbmFibGVfd2ViZ3B1X2RldmVsb3Blcl9mZWF0dXJlcyJ9LCAiZWRnZSI6ICIl
L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdp
biI6IDEyNjY4LCAiZW5kIjogMTI3MDMsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAi
Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9z
cmMvL21haW4iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5lbmFibGVf
d2ViZ3B1X2V4cGVyaW1lbnRhbF9mZWF0dXJlcyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu
ZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEyNzkyLCAiZW5k
IjogMTI4MTAsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2ln
bmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy51c2Vfd2ViZ3B1X2FkYXB0ZXIifSwg
ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmlu
ZXMiLCAiYmVnaW4iOiAxMjkxMiwgImVuZCI6IDEyOTM5LCAidm5hbWUiOiB7Imxhbmd1YWdlIjog
Im1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gv
Y2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1UHJlZmVyZW5j
ZXMudXNlX3dlYmdwdV9wb3dlcl9wcmVmZXJlbmNlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMTMwMTYsICJl
bmQiOiAxMzAzNSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
aWduYXR1cmUiOiAiZ3B1Lm1vam9tLkdwdVByZWZlcmVuY2VzLmZvcmNlX3dlYmdwdV9jb21wYXQi
fSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2Rl
ZmluZXMiLCAiYmVnaW4iOiAxMzE0NSwgImVuZCI6IDEzMTc1LCAidm5hbWUiOiB7Imxhbmd1YWdl
IjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFy
Y2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1UHJlZmVy
ZW5jZXMuZW5hYmxlX2Rhd25fYmFja2VuZF92YWxpZGF0aW9uIn0sICJlZGdlIjogIiUva3l0aGUv
ZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMTMy
ODcsICJlbmQiOiAxMzMxMywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFp
biIsICJzaWduYXR1cmUiOiAiZ3B1Lm1vam9tLkdwdVByZWZlcmVuY2VzLmVuYWJsZWRfZGF3bl9m
ZWF0dXJlc19saXN0In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMTM0MjYsICJlbmQiOiAxMzQ1MywgInZuYW1l
IjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
LmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZ3B1Lm1v
am9tLkdwdVByZWZlcmVuY2VzLmRpc2FibGVkX2Rhd25fZmVhdHVyZXNfbGlzdCJ9LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDEzNTM4LCAiZW5kIjogMTM1NjUsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20i
LCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1
bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImdwdS5tb2pvbS5HcHVQcmVmZXJlbmNlcy5lbmFi
bGVfcGVyZl9kYXRhX2NvbGxlY3Rpb24ifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl
cyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxMzY1NSwgImVuZCI6IDEz
Njg3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVy
ZSI6ICJncHUubW9qb20uR3B1UHJlZmVyZW5jZXMuZW5hYmxlX25hdGl2ZV9ncHVfbWVtb3J5X2J1
ZmZlcnMifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5j
aG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxMzc4OSwgImVuZCI6IDEzODMzLCAidm5hbWUiOiB7Imxh
bmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nv
ZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJncHUubW9qb20uR3B1
UHJlZmVyZW5jZXMuZm9yY2Vfc2VwYXJhdGVfZWdsX2Rpc3BsYXlfZm9yX3dlYmdsX3Rlc3Rpbmci
fSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9XX0=
*/