blob: 51ab5ae915b75b7a8ee0a3b20e6587958303de6b [file] [log] [blame]
// chrome/services/util_win/public/mojom/util_win.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 CHROME_SERVICES_UTIL_WIN_PUBLIC_MOJOM_UTIL_WIN_MOJOM_BLINK_H_
#define CHROME_SERVICES_UTIL_WIN_PUBLIC_MOJOM_UTIL_WIN_MOJOM_BLINK_H_
#include <stdint.h>
#include <limits>
#include <optional>
#include <type_traits>
#include <utility>
#include "base/types/cxx23_to_underlying.h"
#include "mojo/public/cpp/bindings/clone_traits.h"
#include "mojo/public/cpp/bindings/equals_traits.h"
#include "mojo/public/cpp/bindings/lib/serialization.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 "chrome/services/util_win/public/mojom/util_win.mojom-features.h"
#include "chrome/services/util_win/public/mojom/util_win.mojom-shared.h"
#include "chrome/services/util_win/public/mojom/util_win.mojom-blink-forward.h"
#include "mojo/public/mojom/base/file_path.mojom-blink.h"
#include "mojo/public/mojom/base/string16.mojom-blink.h"
#include "mojo/public/mojom/base/wstring.mojom-blink.h"
#include "sandbox/policy/mojom/sandbox.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"
#include "mojo/public/cpp/bindings/lib/control_message_handler.h"
#include "mojo/public/cpp/bindings/lib/message_size_estimator.h"
#include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h"
#ifdef KYTHE_IS_RUNNING
#pragma kythe_inline_metadata "Metadata comment"
#endif
namespace chrome::mojom::blink {
class UtilWinProxy;
template <typename ImplRefTraits>
class UtilWinStub;
class UtilWinRequestValidator;
class UtilWinResponseValidator;
// @generated_from: chrome.mojom.UtilWin
class UtilWin
: public UtilWinInterfaceBase {
public:
using IPCStableHashFunction = uint32_t(*)();
static const char Name_[];
static IPCStableHashFunction MessageToMethodInfo_(mojo::Message& message);
static const char* MessageToMethodName_(mojo::Message& message);
static constexpr auto kServiceSandbox = sandbox::mojom::Sandbox::kNoSandbox;
static constexpr uint32_t Version_ = 0;
static constexpr bool PassesAssociatedKinds_ = false;
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = UtilWinInterfaceBase;
using Proxy_ = UtilWinProxy;
template <typename ImplRefTraits>
using Stub_ = UtilWinStub<ImplRefTraits>;
using RequestValidator_ = UtilWinRequestValidator;
using ResponseValidator_ = UtilWinResponseValidator;
enum MethodMinVersions : uint32_t {
kIsPinnedToTaskbarMinVersion = 0,
kUnpinShortcutsMinVersion = 0,
kCreateOrUpdateShortcutsMinVersion = 0,
kCallExecuteSelectFileMinVersion = 0,
kInspectModuleMinVersion = 0,
kGetAntiVirusProductsMinVersion = 0,
};
// crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK
// with not having this data in traces there.
#if !BUILDFLAG(IS_FUCHSIA)
struct IsPinnedToTaskbar_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct UnpinShortcuts_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct CreateOrUpdateShortcuts_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct CallExecuteSelectFile_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct InspectModule_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct GetAntiVirusProducts_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~UtilWin() = default;
using IsPinnedToTaskbarCallback = base::OnceCallback<void(bool, bool)>;
// @generated_from: chrome.mojom.UtilWin.IsPinnedToTaskbar
virtual void IsPinnedToTaskbar(IsPinnedToTaskbarCallback callback) = 0;
using UnpinShortcutsCallback = base::OnceCallback<void()>;
// @generated_from: chrome.mojom.UtilWin.UnpinShortcuts
virtual void UnpinShortcuts(const WTF::Vector<::base::FilePath>& shortcut_paths, UnpinShortcutsCallback callback) = 0;
using CreateOrUpdateShortcutsCallback = base::OnceCallback<void(bool)>;
// @generated_from: chrome.mojom.UtilWin.CreateOrUpdateShortcuts
virtual void CreateOrUpdateShortcuts(const WTF::Vector<::base::FilePath>& shortcut_paths, WTF::Vector<ShortcutPropertiesPtr> properties, ShortcutOperation operation, CreateOrUpdateShortcutsCallback callback) = 0;
using CallExecuteSelectFileCallback = base::OnceCallback<void(const WTF::Vector<::base::FilePath>&, int32_t)>;
// @generated_from: chrome.mojom.UtilWin.CallExecuteSelectFile
virtual void CallExecuteSelectFile(SelectFileDialogType type, uint32_t owner, const ::WTF::String& title, const ::base::FilePath& default_path, WTF::Vector<FileFilterSpecPtr> filter, int32_t file_type_index, const ::WTF::String& default_extension, CallExecuteSelectFileCallback callback) = 0;
using InspectModuleCallback = base::OnceCallback<void(InspectionResultPtr)>;
// @generated_from: chrome.mojom.UtilWin.InspectModule
virtual void InspectModule(const ::base::FilePath& module_path, InspectModuleCallback callback) = 0;
using GetAntiVirusProductsCallback = base::OnceCallback<void(WTF::Vector<AntiVirusProductPtr>)>;
// @generated_from: chrome.mojom.UtilWin.GetAntiVirusProducts
virtual void GetAntiVirusProducts(bool report_full_names, GetAntiVirusProductsCallback callback) = 0;
};
class ProcessorMetricsProxy;
template <typename ImplRefTraits>
class ProcessorMetricsStub;
class ProcessorMetricsRequestValidator;
class ProcessorMetricsResponseValidator;
// @generated_from: chrome.mojom.ProcessorMetrics
class ProcessorMetrics
: public ProcessorMetricsInterfaceBase {
public:
using IPCStableHashFunction = uint32_t(*)();
static const char Name_[];
static IPCStableHashFunction MessageToMethodInfo_(mojo::Message& message);
static const char* MessageToMethodName_(mojo::Message& message);
static constexpr auto kServiceSandbox = sandbox::mojom::Sandbox::kNoSandbox;
static constexpr uint32_t Version_ = 0;
static constexpr bool PassesAssociatedKinds_ = false;
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = ProcessorMetricsInterfaceBase;
using Proxy_ = ProcessorMetricsProxy;
template <typename ImplRefTraits>
using Stub_ = ProcessorMetricsStub<ImplRefTraits>;
using RequestValidator_ = ProcessorMetricsRequestValidator;
using ResponseValidator_ = ProcessorMetricsResponseValidator;
enum MethodMinVersions : uint32_t {
kRecordProcessorMetricsMinVersion = 0,
};
// crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK
// with not having this data in traces there.
#if !BUILDFLAG(IS_FUCHSIA)
struct RecordProcessorMetrics_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~ProcessorMetrics() = default;
using RecordProcessorMetricsCallback = base::OnceCallback<void()>;
// @generated_from: chrome.mojom.ProcessorMetrics.RecordProcessorMetrics
virtual void RecordProcessorMetrics(RecordProcessorMetricsCallback callback) = 0;
};
// @generated_from: chrome.mojom.UtilWin
class UtilWinProxy
: public UtilWin {
public:
using InterfaceType = UtilWin;
explicit UtilWinProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: chrome.mojom.UtilWin.IsPinnedToTaskbar
void IsPinnedToTaskbar(IsPinnedToTaskbarCallback callback) final;
// @generated_from: chrome.mojom.UtilWin.UnpinShortcuts
void UnpinShortcuts(const WTF::Vector<::base::FilePath>& shortcut_paths, UnpinShortcutsCallback callback) final;
// @generated_from: chrome.mojom.UtilWin.CreateOrUpdateShortcuts
void CreateOrUpdateShortcuts(const WTF::Vector<::base::FilePath>& shortcut_paths, WTF::Vector<ShortcutPropertiesPtr> properties, ShortcutOperation operation, CreateOrUpdateShortcutsCallback callback) final;
// @generated_from: chrome.mojom.UtilWin.CallExecuteSelectFile
void CallExecuteSelectFile(SelectFileDialogType type, uint32_t owner, const ::WTF::String& title, const ::base::FilePath& default_path, WTF::Vector<FileFilterSpecPtr> filter, int32_t file_type_index, const ::WTF::String& default_extension, CallExecuteSelectFileCallback callback) final;
// @generated_from: chrome.mojom.UtilWin.InspectModule
void InspectModule(const ::base::FilePath& module_path, InspectModuleCallback callback) final;
// @generated_from: chrome.mojom.UtilWin.GetAntiVirusProducts
void GetAntiVirusProducts(bool report_full_names, GetAntiVirusProductsCallback callback) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: chrome.mojom.ProcessorMetrics
class ProcessorMetricsProxy
: public ProcessorMetrics {
public:
using InterfaceType = ProcessorMetrics;
explicit ProcessorMetricsProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: chrome.mojom.ProcessorMetrics.RecordProcessorMetrics
void RecordProcessorMetrics(RecordProcessorMetricsCallback callback) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
class UtilWinStubDispatch {
public:
static bool Accept(UtilWin* impl, mojo::Message* message);
static bool AcceptWithResponder(
UtilWin* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<UtilWin>>
class UtilWinStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
UtilWinStub() = default;
~UtilWinStub() override = default;
void set_sink(ImplPointerType sink) { sink_ = std::move(sink); }
ImplPointerType& sink() { return sink_; }
bool Accept(mojo::Message* message) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return UtilWinStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return UtilWinStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class ProcessorMetricsStubDispatch {
public:
static bool Accept(ProcessorMetrics* impl, mojo::Message* message);
static bool AcceptWithResponder(
ProcessorMetrics* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<ProcessorMetrics>>
class ProcessorMetricsStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
ProcessorMetricsStub() = default;
~ProcessorMetricsStub() override = default;
void set_sink(ImplPointerType sink) { sink_ = std::move(sink); }
ImplPointerType& sink() { return sink_; }
bool Accept(mojo::Message* message) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return ProcessorMetricsStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return ProcessorMetricsStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class UtilWinRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class ProcessorMetricsRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class UtilWinResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class ProcessorMetricsResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
// @generated_from: chrome.mojom.FileFilterSpec
class FileFilterSpec {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<FileFilterSpec, T>::value>;
using DataView = FileFilterSpecDataView;
using Data_ = internal::FileFilterSpec_Data;
template <typename... Args>
static FileFilterSpecPtr New(Args&&... args) {
return FileFilterSpecPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static FileFilterSpecPtr From(const U& u) {
return mojo::TypeConverter<FileFilterSpecPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, FileFilterSpec>::Convert(*this);
}
FileFilterSpec();
FileFilterSpec(
const ::WTF::String& description,
const ::WTF::String& extension_spec);
~FileFilterSpec();
// 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 = FileFilterSpecPtr>
FileFilterSpecPtr 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, FileFilterSpec::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, FileFilterSpec::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, FileFilterSpec::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
FileFilterSpec::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
FileFilterSpec::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::FileFilterSpec_UnserializedMessageContext<
UserType, FileFilterSpec::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<FileFilterSpec::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return FileFilterSpec::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::FileFilterSpec_UnserializedMessageContext<
UserType, FileFilterSpec::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<FileFilterSpec::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: chrome.mojom.FileFilterSpec.description
::WTF::String description;
// @generated_from: chrome.mojom.FileFilterSpec.extension_spec
::WTF::String extension_spec;
// 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, FileFilterSpec::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, FileFilterSpec::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, FileFilterSpec::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, FileFilterSpec::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: chrome.mojom.InspectionResult
class InspectionResult {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<InspectionResult, T>::value>;
using DataView = InspectionResultDataView;
using Data_ = internal::InspectionResult_Data;
template <typename... Args>
static InspectionResultPtr New(Args&&... args) {
return InspectionResultPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static InspectionResultPtr From(const U& u) {
return mojo::TypeConverter<InspectionResultPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, InspectionResult>::Convert(*this);
}
InspectionResult();
InspectionResult(
const ::WTF::String& location,
const ::WTF::String& basename,
const ::WTF::String& product_name,
const ::WTF::String& description,
const ::WTF::String& version,
CertificateType certificate_type,
const ::base::FilePath& certificate_path,
const ::WTF::String& certificate_subject);
~InspectionResult();
// 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 = InspectionResultPtr>
InspectionResultPtr 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, InspectionResult::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, InspectionResult::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, InspectionResult::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
InspectionResult::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
InspectionResult::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::InspectionResult_UnserializedMessageContext<
UserType, InspectionResult::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<InspectionResult::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return InspectionResult::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::InspectionResult_UnserializedMessageContext<
UserType, InspectionResult::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<InspectionResult::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: chrome.mojom.InspectionResult.location
::WTF::String location;
// @generated_from: chrome.mojom.InspectionResult.basename
::WTF::String basename;
// @generated_from: chrome.mojom.InspectionResult.product_name
::WTF::String product_name;
// @generated_from: chrome.mojom.InspectionResult.description
::WTF::String description;
// @generated_from: chrome.mojom.InspectionResult.version
::WTF::String version;
// @generated_from: chrome.mojom.InspectionResult.certificate_type
CertificateType certificate_type;
// @generated_from: chrome.mojom.InspectionResult.certificate_path
::base::FilePath certificate_path;
// @generated_from: chrome.mojom.InspectionResult.certificate_subject
::WTF::String certificate_subject;
// 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, InspectionResult::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, InspectionResult::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, InspectionResult::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, InspectionResult::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: chrome.mojom.AntiVirusProduct
class AntiVirusProduct {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<AntiVirusProduct, T>::value>;
using DataView = AntiVirusProductDataView;
using Data_ = internal::AntiVirusProduct_Data;
template <typename... Args>
static AntiVirusProductPtr New(Args&&... args) {
return AntiVirusProductPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static AntiVirusProductPtr From(const U& u) {
return mojo::TypeConverter<AntiVirusProductPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, AntiVirusProduct>::Convert(*this);
}
AntiVirusProduct();
AntiVirusProduct(
const WTF::String& product_name,
uint32_t product_name_hash,
const WTF::String& product_version,
uint32_t product_version_hash,
AntiVirusProductState state);
~AntiVirusProduct();
// 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 = AntiVirusProductPtr>
AntiVirusProductPtr 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, AntiVirusProduct::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, AntiVirusProduct::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, AntiVirusProduct::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
size_t Hash(size_t seed) const;
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
AntiVirusProduct::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
AntiVirusProduct::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::AntiVirusProduct_UnserializedMessageContext<
UserType, AntiVirusProduct::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<AntiVirusProduct::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return AntiVirusProduct::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::AntiVirusProduct_UnserializedMessageContext<
UserType, AntiVirusProduct::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<AntiVirusProduct::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: chrome.mojom.AntiVirusProduct.product_name
WTF::String product_name;
// @generated_from: chrome.mojom.AntiVirusProduct.product_name_hash
uint32_t product_name_hash;
// @generated_from: chrome.mojom.AntiVirusProduct.product_version
WTF::String product_version;
// @generated_from: chrome.mojom.AntiVirusProduct.product_version_hash
uint32_t product_version_hash;
// @generated_from: chrome.mojom.AntiVirusProduct.state
AntiVirusProductState state;
// 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, AntiVirusProduct::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, AntiVirusProduct::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, AntiVirusProduct::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, AntiVirusProduct::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: chrome.mojom.ClsId
class ClsId {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<ClsId, T>::value>;
using DataView = ClsIdDataView;
using Data_ = internal::ClsId_Data;
template <typename... Args>
static ClsIdPtr New(Args&&... args) {
return ClsIdPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static ClsIdPtr From(const U& u) {
return mojo::TypeConverter<ClsIdPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, ClsId>::Convert(*this);
}
ClsId();
explicit ClsId(
WTF::Vector<uint8_t> bytes);
~ClsId();
// 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 = ClsIdPtr>
ClsIdPtr 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, ClsId::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, ClsId::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, ClsId::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
ClsId::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
ClsId::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::ClsId_UnserializedMessageContext<
UserType, ClsId::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<ClsId::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return ClsId::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::ClsId_UnserializedMessageContext<
UserType, ClsId::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<ClsId::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: chrome.mojom.ClsId.bytes
WTF::Vector<uint8_t> bytes;
// 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, ClsId::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, ClsId::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, ClsId::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, ClsId::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: chrome.mojom.ShortcutProperties
class ShortcutProperties {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<ShortcutProperties, T>::value>;
using DataView = ShortcutPropertiesDataView;
using Data_ = internal::ShortcutProperties_Data;
template <typename... Args>
static ShortcutPropertiesPtr New(Args&&... args) {
return ShortcutPropertiesPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static ShortcutPropertiesPtr From(const U& u) {
return mojo::TypeConverter<ShortcutPropertiesPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, ShortcutProperties>::Convert(*this);
}
ShortcutProperties();
ShortcutProperties(
const ::base::FilePath& target,
const ::base::FilePath& working_dir,
::mojo_base::mojom::blink::WStringPtr arguments,
::mojo_base::mojom::blink::WStringPtr description,
const ::base::FilePath& icon,
int32_t icon_index,
::mojo_base::mojom::blink::WStringPtr app_id,
bool dual_mode,
ClsIdPtr toast_activator_clsid,
uint32_t options);
ShortcutProperties(const ShortcutProperties&) = delete;
ShortcutProperties& operator=(const ShortcutProperties&) = delete;
~ShortcutProperties();
// 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 = ShortcutPropertiesPtr>
ShortcutPropertiesPtr 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, ShortcutProperties::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, ShortcutProperties::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, ShortcutProperties::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
ShortcutProperties::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
ShortcutProperties::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::ShortcutProperties_UnserializedMessageContext<
UserType, ShortcutProperties::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<ShortcutProperties::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return ShortcutProperties::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::ShortcutProperties_UnserializedMessageContext<
UserType, ShortcutProperties::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<ShortcutProperties::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: chrome.mojom.ShortcutProperties.target
::base::FilePath target;
// @generated_from: chrome.mojom.ShortcutProperties.working_dir
::base::FilePath working_dir;
// @generated_from: chrome.mojom.ShortcutProperties.arguments
::mojo_base::mojom::blink::WStringPtr arguments;
// @generated_from: chrome.mojom.ShortcutProperties.description
::mojo_base::mojom::blink::WStringPtr description;
// @generated_from: chrome.mojom.ShortcutProperties.icon
::base::FilePath icon;
// @generated_from: chrome.mojom.ShortcutProperties.icon_index
int32_t icon_index;
// @generated_from: chrome.mojom.ShortcutProperties.app_id
::mojo_base::mojom::blink::WStringPtr app_id;
// @generated_from: chrome.mojom.ShortcutProperties.dual_mode
bool dual_mode;
// @generated_from: chrome.mojom.ShortcutProperties.toast_activator_clsid
ClsIdPtr toast_activator_clsid;
// @generated_from: chrome.mojom.ShortcutProperties.options
uint32_t options;
// 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, ShortcutProperties::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, ShortcutProperties::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, ShortcutProperties::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, ShortcutProperties::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
template <typename StructPtrType>
FileFilterSpecPtr FileFilterSpec::Clone() const {
return New(
mojo::Clone(description),
mojo::Clone(extension_spec)
);
}
template <typename T, FileFilterSpec::EnableIfSame<T>*>
bool FileFilterSpec::Equals(const T& other_struct) const {
if (!mojo::Equals(this->description, other_struct.description))
return false;
if (!mojo::Equals(this->extension_spec, other_struct.extension_spec))
return false;
return true;
}
template <typename T, FileFilterSpec::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.description < rhs.description)
return true;
if (rhs.description < lhs.description)
return false;
if (lhs.extension_spec < rhs.extension_spec)
return true;
if (rhs.extension_spec < lhs.extension_spec)
return false;
return false;
}
template <typename StructPtrType>
InspectionResultPtr InspectionResult::Clone() const {
return New(
mojo::Clone(location),
mojo::Clone(basename),
mojo::Clone(product_name),
mojo::Clone(description),
mojo::Clone(version),
mojo::Clone(certificate_type),
mojo::Clone(certificate_path),
mojo::Clone(certificate_subject)
);
}
template <typename T, InspectionResult::EnableIfSame<T>*>
bool InspectionResult::Equals(const T& other_struct) const {
if (!mojo::Equals(this->location, other_struct.location))
return false;
if (!mojo::Equals(this->basename, other_struct.basename))
return false;
if (!mojo::Equals(this->product_name, other_struct.product_name))
return false;
if (!mojo::Equals(this->description, other_struct.description))
return false;
if (!mojo::Equals(this->version, other_struct.version))
return false;
if (!mojo::Equals(this->certificate_type, other_struct.certificate_type))
return false;
if (!mojo::Equals(this->certificate_path, other_struct.certificate_path))
return false;
if (!mojo::Equals(this->certificate_subject, other_struct.certificate_subject))
return false;
return true;
}
template <typename T, InspectionResult::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.location < rhs.location)
return true;
if (rhs.location < lhs.location)
return false;
if (lhs.basename < rhs.basename)
return true;
if (rhs.basename < lhs.basename)
return false;
if (lhs.product_name < rhs.product_name)
return true;
if (rhs.product_name < lhs.product_name)
return false;
if (lhs.description < rhs.description)
return true;
if (rhs.description < lhs.description)
return false;
if (lhs.version < rhs.version)
return true;
if (rhs.version < lhs.version)
return false;
if (lhs.certificate_type < rhs.certificate_type)
return true;
if (rhs.certificate_type < lhs.certificate_type)
return false;
if (lhs.certificate_path < rhs.certificate_path)
return true;
if (rhs.certificate_path < lhs.certificate_path)
return false;
if (lhs.certificate_subject < rhs.certificate_subject)
return true;
if (rhs.certificate_subject < lhs.certificate_subject)
return false;
return false;
}
template <typename StructPtrType>
AntiVirusProductPtr AntiVirusProduct::Clone() const {
return New(
mojo::Clone(product_name),
mojo::Clone(product_name_hash),
mojo::Clone(product_version),
mojo::Clone(product_version_hash),
mojo::Clone(state)
);
}
template <typename T, AntiVirusProduct::EnableIfSame<T>*>
bool AntiVirusProduct::Equals(const T& other_struct) const {
if (!mojo::Equals(this->product_name, other_struct.product_name))
return false;
if (!mojo::Equals(this->product_name_hash, other_struct.product_name_hash))
return false;
if (!mojo::Equals(this->product_version, other_struct.product_version))
return false;
if (!mojo::Equals(this->product_version_hash, other_struct.product_version_hash))
return false;
if (!mojo::Equals(this->state, other_struct.state))
return false;
return true;
}
template <typename T, AntiVirusProduct::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.product_name < rhs.product_name)
return true;
if (rhs.product_name < lhs.product_name)
return false;
if (lhs.product_name_hash < rhs.product_name_hash)
return true;
if (rhs.product_name_hash < lhs.product_name_hash)
return false;
if (lhs.product_version < rhs.product_version)
return true;
if (rhs.product_version < lhs.product_version)
return false;
if (lhs.product_version_hash < rhs.product_version_hash)
return true;
if (rhs.product_version_hash < lhs.product_version_hash)
return false;
if (lhs.state < rhs.state)
return true;
if (rhs.state < lhs.state)
return false;
return false;
}
template <typename StructPtrType>
ClsIdPtr ClsId::Clone() const {
return New(
mojo::Clone(bytes)
);
}
template <typename T, ClsId::EnableIfSame<T>*>
bool ClsId::Equals(const T& other_struct) const {
if (!mojo::Equals(this->bytes, other_struct.bytes))
return false;
return true;
}
template <typename T, ClsId::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.bytes < rhs.bytes)
return true;
if (rhs.bytes < lhs.bytes)
return false;
return false;
}
template <typename StructPtrType>
ShortcutPropertiesPtr ShortcutProperties::Clone() const {
return New(
mojo::Clone(target),
mojo::Clone(working_dir),
mojo::Clone(arguments),
mojo::Clone(description),
mojo::Clone(icon),
mojo::Clone(icon_index),
mojo::Clone(app_id),
mojo::Clone(dual_mode),
mojo::Clone(toast_activator_clsid),
mojo::Clone(options)
);
}
template <typename T, ShortcutProperties::EnableIfSame<T>*>
bool ShortcutProperties::Equals(const T& other_struct) const {
if (!mojo::Equals(this->target, other_struct.target))
return false;
if (!mojo::Equals(this->working_dir, other_struct.working_dir))
return false;
if (!mojo::Equals(this->arguments, other_struct.arguments))
return false;
if (!mojo::Equals(this->description, other_struct.description))
return false;
if (!mojo::Equals(this->icon, other_struct.icon))
return false;
if (!mojo::Equals(this->icon_index, other_struct.icon_index))
return false;
if (!mojo::Equals(this->app_id, other_struct.app_id))
return false;
if (!mojo::Equals(this->dual_mode, other_struct.dual_mode))
return false;
if (!mojo::Equals(this->toast_activator_clsid, other_struct.toast_activator_clsid))
return false;
if (!mojo::Equals(this->options, other_struct.options))
return false;
return true;
}
template <typename T, ShortcutProperties::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.target < rhs.target)
return true;
if (rhs.target < lhs.target)
return false;
if (lhs.working_dir < rhs.working_dir)
return true;
if (rhs.working_dir < lhs.working_dir)
return false;
if (lhs.arguments < rhs.arguments)
return true;
if (rhs.arguments < lhs.arguments)
return false;
if (lhs.description < rhs.description)
return true;
if (rhs.description < lhs.description)
return false;
if (lhs.icon < rhs.icon)
return true;
if (rhs.icon < lhs.icon)
return false;
if (lhs.icon_index < rhs.icon_index)
return true;
if (rhs.icon_index < lhs.icon_index)
return false;
if (lhs.app_id < rhs.app_id)
return true;
if (rhs.app_id < lhs.app_id)
return false;
if (lhs.dual_mode < rhs.dual_mode)
return true;
if (rhs.dual_mode < lhs.dual_mode)
return false;
if (lhs.toast_activator_clsid < rhs.toast_activator_clsid)
return true;
if (rhs.toast_activator_clsid < lhs.toast_activator_clsid)
return false;
if (lhs.options < rhs.options)
return true;
if (rhs.options < lhs.options)
return false;
return false;
}
} // chrome::mojom::blink
namespace mojo {
template <>
struct StructTraits<::chrome::mojom::blink::FileFilterSpec::DataView,
::chrome::mojom::blink::FileFilterSpecPtr> {
static bool IsNull(const ::chrome::mojom::blink::FileFilterSpecPtr& input) { return !input; }
static void SetToNull(::chrome::mojom::blink::FileFilterSpecPtr* output) { output->reset(); }
static const decltype(::chrome::mojom::blink::FileFilterSpec::description)& description(
const ::chrome::mojom::blink::FileFilterSpecPtr& input) {
return input->description;
}
static const decltype(::chrome::mojom::blink::FileFilterSpec::extension_spec)& extension_spec(
const ::chrome::mojom::blink::FileFilterSpecPtr& input) {
return input->extension_spec;
}
static bool Read(::chrome::mojom::blink::FileFilterSpec::DataView input, ::chrome::mojom::blink::FileFilterSpecPtr* output);
};
template <>
struct StructTraits<::chrome::mojom::blink::InspectionResult::DataView,
::chrome::mojom::blink::InspectionResultPtr> {
static bool IsNull(const ::chrome::mojom::blink::InspectionResultPtr& input) { return !input; }
static void SetToNull(::chrome::mojom::blink::InspectionResultPtr* output) { output->reset(); }
static const decltype(::chrome::mojom::blink::InspectionResult::location)& location(
const ::chrome::mojom::blink::InspectionResultPtr& input) {
return input->location;
}
static const decltype(::chrome::mojom::blink::InspectionResult::basename)& basename(
const ::chrome::mojom::blink::InspectionResultPtr& input) {
return input->basename;
}
static const decltype(::chrome::mojom::blink::InspectionResult::product_name)& product_name(
const ::chrome::mojom::blink::InspectionResultPtr& input) {
return input->product_name;
}
static const decltype(::chrome::mojom::blink::InspectionResult::description)& description(
const ::chrome::mojom::blink::InspectionResultPtr& input) {
return input->description;
}
static const decltype(::chrome::mojom::blink::InspectionResult::version)& version(
const ::chrome::mojom::blink::InspectionResultPtr& input) {
return input->version;
}
static decltype(::chrome::mojom::blink::InspectionResult::certificate_type) certificate_type(
const ::chrome::mojom::blink::InspectionResultPtr& input) {
return input->certificate_type;
}
static const decltype(::chrome::mojom::blink::InspectionResult::certificate_path)& certificate_path(
const ::chrome::mojom::blink::InspectionResultPtr& input) {
return input->certificate_path;
}
static const decltype(::chrome::mojom::blink::InspectionResult::certificate_subject)& certificate_subject(
const ::chrome::mojom::blink::InspectionResultPtr& input) {
return input->certificate_subject;
}
static bool Read(::chrome::mojom::blink::InspectionResult::DataView input, ::chrome::mojom::blink::InspectionResultPtr* output);
};
template <>
struct StructTraits<::chrome::mojom::blink::AntiVirusProduct::DataView,
::chrome::mojom::blink::AntiVirusProductPtr> {
static bool IsNull(const ::chrome::mojom::blink::AntiVirusProductPtr& input) { return !input; }
static void SetToNull(::chrome::mojom::blink::AntiVirusProductPtr* output) { output->reset(); }
static const decltype(::chrome::mojom::blink::AntiVirusProduct::product_name)& product_name(
const ::chrome::mojom::blink::AntiVirusProductPtr& input) {
return input->product_name;
}
static decltype(::chrome::mojom::blink::AntiVirusProduct::product_name_hash) product_name_hash(
const ::chrome::mojom::blink::AntiVirusProductPtr& input) {
return input->product_name_hash;
}
static const decltype(::chrome::mojom::blink::AntiVirusProduct::product_version)& product_version(
const ::chrome::mojom::blink::AntiVirusProductPtr& input) {
return input->product_version;
}
static decltype(::chrome::mojom::blink::AntiVirusProduct::product_version_hash) product_version_hash(
const ::chrome::mojom::blink::AntiVirusProductPtr& input) {
return input->product_version_hash;
}
static decltype(::chrome::mojom::blink::AntiVirusProduct::state) state(
const ::chrome::mojom::blink::AntiVirusProductPtr& input) {
return input->state;
}
static bool Read(::chrome::mojom::blink::AntiVirusProduct::DataView input, ::chrome::mojom::blink::AntiVirusProductPtr* output);
};
template <>
struct StructTraits<::chrome::mojom::blink::ClsId::DataView,
::chrome::mojom::blink::ClsIdPtr> {
static bool IsNull(const ::chrome::mojom::blink::ClsIdPtr& input) { return !input; }
static void SetToNull(::chrome::mojom::blink::ClsIdPtr* output) { output->reset(); }
static const decltype(::chrome::mojom::blink::ClsId::bytes)& bytes(
const ::chrome::mojom::blink::ClsIdPtr& input) {
return input->bytes;
}
static bool Read(::chrome::mojom::blink::ClsId::DataView input, ::chrome::mojom::blink::ClsIdPtr* output);
};
template <>
struct StructTraits<::chrome::mojom::blink::ShortcutProperties::DataView,
::chrome::mojom::blink::ShortcutPropertiesPtr> {
static bool IsNull(const ::chrome::mojom::blink::ShortcutPropertiesPtr& input) { return !input; }
static void SetToNull(::chrome::mojom::blink::ShortcutPropertiesPtr* output) { output->reset(); }
static const decltype(::chrome::mojom::blink::ShortcutProperties::target)& target(
const ::chrome::mojom::blink::ShortcutPropertiesPtr& input) {
return input->target;
}
static const decltype(::chrome::mojom::blink::ShortcutProperties::working_dir)& working_dir(
const ::chrome::mojom::blink::ShortcutPropertiesPtr& input) {
return input->working_dir;
}
static const decltype(::chrome::mojom::blink::ShortcutProperties::arguments)& arguments(
const ::chrome::mojom::blink::ShortcutPropertiesPtr& input) {
return input->arguments;
}
static const decltype(::chrome::mojom::blink::ShortcutProperties::description)& description(
const ::chrome::mojom::blink::ShortcutPropertiesPtr& input) {
return input->description;
}
static const decltype(::chrome::mojom::blink::ShortcutProperties::icon)& icon(
const ::chrome::mojom::blink::ShortcutPropertiesPtr& input) {
return input->icon;
}
static decltype(::chrome::mojom::blink::ShortcutProperties::icon_index) icon_index(
const ::chrome::mojom::blink::ShortcutPropertiesPtr& input) {
return input->icon_index;
}
static const decltype(::chrome::mojom::blink::ShortcutProperties::app_id)& app_id(
const ::chrome::mojom::blink::ShortcutPropertiesPtr& input) {
return input->app_id;
}
static decltype(::chrome::mojom::blink::ShortcutProperties::dual_mode) dual_mode(
const ::chrome::mojom::blink::ShortcutPropertiesPtr& input) {
return input->dual_mode;
}
static const decltype(::chrome::mojom::blink::ShortcutProperties::toast_activator_clsid)& toast_activator_clsid(
const ::chrome::mojom::blink::ShortcutPropertiesPtr& input) {
return input->toast_activator_clsid;
}
static decltype(::chrome::mojom::blink::ShortcutProperties::options) options(
const ::chrome::mojom::blink::ShortcutPropertiesPtr& input) {
return input->options;
}
static bool Read(::chrome::mojom::blink::ShortcutProperties::DataView input, ::chrome::mojom::blink::ShortcutPropertiesPtr* output);
};
} // namespace mojo
#endif // CHROME_SERVICES_UTIL_WIN_PUBLIC_MOJOM_UTIL_WIN_MOJOM_BLINK_H_
/* Metadata comment
eyJ0eXBlIjogImt5dGhlMCIsICJtZXRhIjogW3sidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDIxNzAsICJlbmQiOiAyMTc3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uVXRpbFdpbiJ9LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDQwOTgsICJlbmQiOiA0MTE1LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uVXRpbFdpbi5Jc1Bpbm5lZFRv
VGFza2JhciJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJh
bmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDQyOTQsICJlbmQiOiA0MzA4LCAidm5hbWUiOiB7Imxh
bmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nv
ZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20u
VXRpbFdpbi5VbnBpblNob3J0Y3V0cyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
In0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDQ1NTksICJlbmQiOiA0NTgy
LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29n
bGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6
ICJjaHJvbWUubW9qb20uVXRpbFdpbi5DcmVhdGVPclVwZGF0ZVNob3J0Y3V0cyJ9LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDQ5NTUsICJlbmQiOiA0OTc2LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uVXRpbFdpbi5DYWxsRXhlY3V0
ZVNlbGVjdEZpbGUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUi
OiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA1Mzg5LCAiZW5kIjogNTQwMiwgInZuYW1lIjog
eyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiY2hyb21lLm1v
am9tLlV0aWxXaW4uSW5zcGVjdE1vZHVsZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh
dGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDU2NTgsICJlbmQiOiA1
Njc4LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVy
ZSI6ICJjaHJvbWUubW9qb20uVXRpbFdpbi5HZXRBbnRpVmlydXNQcm9kdWN0cyJ9LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDU5ODMsICJlbmQiOiA1OTk5LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uUHJvY2Vzc29yTWV0cmljcyJ9
LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVm
aW5lcyIsICJiZWdpbiI6IDczODAsICJlbmQiOiA3NDAyLCAidm5hbWUiOiB7Imxhbmd1YWdlIjog
Im1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gv
Y2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uUHJvY2Vzc29y
TWV0cmljcy5SZWNvcmRQcm9jZXNzb3JNZXRyaWNzIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNzcyMiwgImVu
ZCI6IDc3MzksICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2ln
bmF0dXJlIjogImNocm9tZS5tb2pvbS5VdGlsV2luLklzUGlubmVkVG9UYXNrYmFyIn0sICJlZGdl
IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
ImJlZ2luIjogNzg0OSwgImVuZCI6IDc4NjMsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20i
LCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1
bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9tZS5tb2pvbS5VdGlsV2luLlVucGluU2hv
cnRjdXRzIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFu
Y2hvcl9kZWZpbmVzIiwgImJlZ2luIjogODAzMiwgImVuZCI6IDgwNTUsICJ2bmFtZSI6IHsibGFu
Z3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29k
ZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9tZS5tb2pvbS5V
dGlsV2luLkNyZWF0ZU9yVXBkYXRlU2hvcnRjdXRzIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogODMwNywgImVu
ZCI6IDgzMjgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2ln
bmF0dXJlIjogImNocm9tZS5tb2pvbS5VdGlsV2luLkNhbGxFeGVjdXRlU2VsZWN0RmlsZSJ9LCAi
ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5l
cyIsICJiZWdpbiI6IDg2NTQsICJlbmQiOiA4NjY3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1v
am9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hy
b21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uVXRpbFdpbi5JbnNw
ZWN0TW9kdWxlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogODgxNiwgImVuZCI6IDg4MzYsICJ2bmFtZSI6IHsi
bGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v
Y29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9tZS5tb2pv
bS5VdGlsV2luLkdldEFudGlWaXJ1c1Byb2R1Y3RzIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogOTI5OSwgImVu
ZCI6IDkzMjEsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2ln
bmF0dXJlIjogImNocm9tZS5tb2pvbS5Qcm9jZXNzb3JNZXRyaWNzLlJlY29yZFByb2Nlc3Nvck1l
dHJpY3MifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5j
aG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxMjU3NywgImVuZCI6IDEyNTkxLCAidm5hbWUiOiB7Imxh
bmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nv
ZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20u
RmlsZUZpbHRlclNwZWMifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5
cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxNjQyOCwgImVuZCI6IDE2NDM5LCAidm5h
bWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy
Y2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJv
bWUubW9qb20uRmlsZUZpbHRlclNwZWMuZGVzY3JpcHRpb24ifSwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxNjUy
MywgImVuZCI6IDE2NTM3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6
ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWlu
IiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uRmlsZUZpbHRlclNwZWMuZXh0ZW5zaW9uX3Nw
ZWMifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9y
X2RlZmluZXMiLCAiYmVnaW4iOiAxNzU2OSwgImVuZCI6IDE3NTg1LCAidm5hbWUiOiB7Imxhbmd1
YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVz
ZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uSW5z
cGVjdGlvblJlc3VsdCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDIxNzE1LCAiZW5kIjogMjE3MjMsICJ2bmFt
ZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
ZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9t
ZS5tb2pvbS5JbnNwZWN0aW9uUmVzdWx0LmxvY2F0aW9uIn0sICJlZGdlIjogIiUva3l0aGUvZWRn
ZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjE4MDMs
ICJlbmQiOiAyMTgxMSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAi
Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIs
ICJzaWduYXR1cmUiOiAiY2hyb21lLm1vam9tLkluc3BlY3Rpb25SZXN1bHQuYmFzZW5hbWUifSwg
ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmlu
ZXMiLCAiYmVnaW4iOiAyMTg5NSwgImVuZCI6IDIxOTA3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjog
Im1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gv
Y2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uSW5zcGVjdGlv
blJlc3VsdC5wcm9kdWN0X25hbWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9
LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyMTk5MCwgImVuZCI6IDIyMDAx
LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29n
bGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6
ICJjaHJvbWUubW9qb20uSW5zcGVjdGlvblJlc3VsdC5kZXNjcmlwdGlvbiJ9LCAiZWRnZSI6ICIl
L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdp
biI6IDIyMDgwLCAiZW5kIjogMjIwODcsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAi
Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9z
cmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9tZS5tb2pvbS5JbnNwZWN0aW9uUmVzdWx0LnZl
cnNpb24ifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5j
aG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyMjE3NywgImVuZCI6IDIyMTkzLCAidm5hbWUiOiB7Imxh
bmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nv
ZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20u
SW5zcGVjdGlvblJlc3VsdC5jZXJ0aWZpY2F0ZV90eXBlIn0sICJlZGdlIjogIiUva3l0aGUvZWRn
ZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjIyODQs
ICJlbmQiOiAyMjMwMCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAi
Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIs
ICJzaWduYXR1cmUiOiAiY2hyb21lLm1vam9tLkluc3BlY3Rpb25SZXN1bHQuY2VydGlmaWNhdGVf
cGF0aCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNo
b3JfZGVmaW5lcyIsICJiZWdpbiI6IDIyMzkxLCAiZW5kIjogMjI0MTAsICJ2bmFtZSI6IHsibGFu
Z3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29k
ZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9tZS5tb2pvbS5J
bnNwZWN0aW9uUmVzdWx0LmNlcnRpZmljYXRlX3N1YmplY3QifSwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyMzQ1
MCwgImVuZCI6IDIzNDY2LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6
ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWlu
IiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uQW50aVZpcnVzUHJvZHVjdCJ9LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDI3NDkyLCAiZW5kIjogMjc1MDQsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20i
LCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1
bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9tZS5tb2pvbS5BbnRpVmlydXNQcm9kdWN0
LnByb2R1Y3RfbmFtZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI3NTg4LCAiZW5kIjogMjc2MDUsICJ2bmFt
ZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
ZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9t
ZS5tb2pvbS5BbnRpVmlydXNQcm9kdWN0LnByb2R1Y3RfbmFtZV9oYXNoIn0sICJlZGdlIjogIiUv
a3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2lu
IjogMjc2OTAsICJlbmQiOiAyNzcwNSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJj
b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3Ny
Yy8vbWFpbiIsICJzaWduYXR1cmUiOiAiY2hyb21lLm1vam9tLkFudGlWaXJ1c1Byb2R1Y3QucHJv
ZHVjdF92ZXJzaW9uIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjc3OTIsICJlbmQiOiAyNzgxMiwgInZuYW1l
IjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
LmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiY2hyb21l
Lm1vam9tLkFudGlWaXJ1c1Byb2R1Y3QucHJvZHVjdF92ZXJzaW9uX2hhc2gifSwgImVkZ2UiOiAi
JS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVn
aW4iOiAyNzg3NSwgImVuZCI6IDI3ODk2LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uQW50aVZpcnVzUHJvZHVjdC5z
dGF0ZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNo
b3JfZGVmaW5lcyIsICJiZWdpbiI6IDI4OTMxLCAiZW5kIjogMjg5MzYsICJ2bmFtZSI6IHsibGFu
Z3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29k
ZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9tZS5tb2pvbS5D
bHNJZCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNo
b3JfZGVmaW5lcyIsICJiZWdpbiI6IDMyNTAwLCAiZW5kIjogMzI1MDUsICJ2bmFtZSI6IHsibGFu
Z3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29k
ZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9tZS5tb2pvbS5D
bHNJZC5ieXRlcyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6
ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDMzNTAzLCAiZW5kIjogMzM1MjEsICJ2bmFtZSI6
IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9tZS5t
b2pvbS5TaG9ydGN1dFByb3BlcnRpZXMifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl
cyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAzNzg5MSwgImVuZCI6IDM3
ODk3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVy
ZSI6ICJjaHJvbWUubW9qb20uU2hvcnRjdXRQcm9wZXJ0aWVzLnRhcmdldCJ9LCAiZWRnZSI6ICIl
L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdp
biI6IDM3OTg1LCAiZW5kIjogMzc5OTYsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAi
Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9z
cmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9tZS5tb2pvbS5TaG9ydGN1dFByb3BlcnRpZXMu
d29ya2luZ19kaXIifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUi
OiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAzODEwMywgImVuZCI6IDM4MTEyLCAidm5hbWUi
OiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUu
bW9qb20uU2hvcnRjdXRQcm9wZXJ0aWVzLmFyZ3VtZW50cyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2Vk
Z2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDM4MjIx
LCAiZW5kIjogMzgyMzIsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjog
ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4i
LCAic2lnbmF0dXJlIjogImNocm9tZS5tb2pvbS5TaG9ydGN1dFByb3BlcnRpZXMuZGVzY3JpcHRp
b24ifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9y
X2RlZmluZXMiLCAiYmVnaW4iOiAzODMxMywgImVuZCI6IDM4MzE3LCAidm5hbWUiOiB7Imxhbmd1
YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVz
ZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uU2hv
cnRjdXRQcm9wZXJ0aWVzLmljb24ifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9
LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAzODM5NSwgImVuZCI6IDM4NDA1
LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29n
bGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6
ICJjaHJvbWUubW9qb20uU2hvcnRjdXRQcm9wZXJ0aWVzLmljb25faW5kZXgifSwgImVkZ2UiOiAi
JS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVn
aW4iOiAzODUwOSwgImVuZCI6IDM4NTE1LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9qb20uU2hvcnRjdXRQcm9wZXJ0aWVz
LmFwcF9pZCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJh
bmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDM4NTg5LCAiZW5kIjogMzg1OTgsICJ2bmFtZSI6IHsi
bGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v
Y29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImNocm9tZS5tb2pv
bS5TaG9ydGN1dFByb3BlcnRpZXMuZHVhbF9tb2RlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMzg2ODgsICJl
bmQiOiAzODcwOSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
aWduYXR1cmUiOiAiY2hyb21lLm1vam9tLlNob3J0Y3V0UHJvcGVydGllcy50b2FzdF9hY3RpdmF0
b3JfY2xzaWQifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAi
YW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAzODc4NSwgImVuZCI6IDM4NzkyLCAidm5hbWUiOiB7
Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
L2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJjaHJvbWUubW9q
b20uU2hvcnRjdXRQcm9wZXJ0aWVzLm9wdGlvbnMifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl
bmVyYXRlcyJ9XX0=
*/