| // chromeos/services/machine_learning/public/mojom/grammar_checker.mojom.h is auto generated by mojom_bindings_generator.py, do not edit |
| |
| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROMEOS_SERVICES_MACHINE_LEARNING_PUBLIC_MOJOM_GRAMMAR_CHECKER_MOJOM_H_ |
| #define CHROMEOS_SERVICES_MACHINE_LEARNING_PUBLIC_MOJOM_GRAMMAR_CHECKER_MOJOM_H_ |
| |
| #include <stdint.h> |
| |
| #include <limits> |
| #include <type_traits> |
| #include <utility> |
| |
| #include "third_party/abseil-cpp/absl/types/optional.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 "chromeos/services/machine_learning/public/mojom/grammar_checker.mojom-shared.h" |
| #include "chromeos/services/machine_learning/public/mojom/grammar_checker.mojom-forward.h" |
| #include <string> |
| #include <vector> |
| |
| #include "mojo/public/cpp/bindings/lib/control_message_handler.h" |
| #include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h" |
| |
| |
| #include "base/component_export.h" |
| |
| #ifdef KYTHE_IS_RUNNING |
| #pragma kythe_inline_metadata "Metadata comment" |
| #endif |
| |
| |
| namespace chromeos { |
| namespace machine_learning { |
| namespace mojom { |
| |
| class GrammarCheckerProxy; |
| |
| template <typename ImplRefTraits> |
| class GrammarCheckerStub; |
| |
| class GrammarCheckerRequestValidator; |
| class GrammarCheckerResponseValidator; |
| |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarChecker |
| class COMPONENT_EXPORT(MLSERVICE_MOJOM) GrammarChecker |
| : public GrammarCheckerInterfaceBase { |
| public: |
| static const char Name_[]; |
| static std::pair<uint32_t, const void*> MessageToMethodInfo_(mojo::Message& message); |
| static const char* MessageToMethodName_(mojo::Message& message); |
| static constexpr uint32_t Version_ = 0; |
| static constexpr bool PassesAssociatedKinds_ = false; |
| static constexpr bool HasSyncMethods_ = false; |
| static constexpr bool HasUninterruptableMethods_ = false; |
| |
| using Base_ = GrammarCheckerInterfaceBase; |
| using Proxy_ = GrammarCheckerProxy; |
| |
| template <typename ImplRefTraits> |
| using Stub_ = GrammarCheckerStub<ImplRefTraits>; |
| |
| using RequestValidator_ = GrammarCheckerRequestValidator; |
| using ResponseValidator_ = GrammarCheckerResponseValidator; |
| enum MethodMinVersions : uint32_t { |
| kCheckMinVersion = 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 Check_Sym { |
| NOINLINE static void IPCSymbol(); |
| }; |
| #endif // !BUILDFLAG(IS_FUCHSIA) |
| virtual ~GrammarChecker() = default; |
| |
| |
| using CheckCallback = base::OnceCallback<void(GrammarCheckerResultPtr)>; |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarChecker.Check |
| virtual void Check(GrammarCheckerQueryPtr query, CheckCallback callback) = 0; |
| }; |
| |
| |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarChecker |
| class COMPONENT_EXPORT(MLSERVICE_MOJOM) GrammarCheckerProxy |
| : public GrammarChecker { |
| public: |
| using InterfaceType = GrammarChecker; |
| |
| explicit GrammarCheckerProxy(mojo::MessageReceiverWithResponder* receiver); |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarChecker.Check |
| void Check(GrammarCheckerQueryPtr query, CheckCallback callback) final; |
| |
| private: |
| mojo::MessageReceiverWithResponder* receiver_; |
| }; |
| class COMPONENT_EXPORT(MLSERVICE_MOJOM) GrammarCheckerStubDispatch { |
| public: |
| static bool Accept(GrammarChecker* impl, mojo::Message* message); |
| static bool AcceptWithResponder( |
| GrammarChecker* impl, |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder); |
| }; |
| |
| template <typename ImplRefTraits = |
| mojo::RawPtrImplRefTraits<GrammarChecker>> |
| class GrammarCheckerStub |
| : public mojo::MessageReceiverWithResponderStatus { |
| public: |
| using ImplPointerType = typename ImplRefTraits::PointerType; |
| |
| GrammarCheckerStub() = default; |
| ~GrammarCheckerStub() 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 GrammarCheckerStubDispatch::Accept( |
| ImplRefTraits::GetRawPointer(&sink_), message); |
| } |
| |
| bool AcceptWithResponder( |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return GrammarCheckerStubDispatch::AcceptWithResponder( |
| ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder)); |
| } |
| |
| private: |
| ImplPointerType sink_; |
| }; |
| class COMPONENT_EXPORT(MLSERVICE_MOJOM) GrammarCheckerRequestValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| class COMPONENT_EXPORT(MLSERVICE_MOJOM) GrammarCheckerResponseValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| |
| |
| |
| |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCheckerQuery |
| class COMPONENT_EXPORT(MLSERVICE_MOJOM) GrammarCheckerQuery { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<GrammarCheckerQuery, T>::value>; |
| using DataView = GrammarCheckerQueryDataView; |
| using Data_ = internal::GrammarCheckerQuery_Data; |
| |
| template <typename... Args> |
| static GrammarCheckerQueryPtr New(Args&&... args) { |
| return GrammarCheckerQueryPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static GrammarCheckerQueryPtr From(const U& u) { |
| return mojo::TypeConverter<GrammarCheckerQueryPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, GrammarCheckerQuery>::Convert(*this); |
| } |
| |
| |
| GrammarCheckerQuery(); |
| |
| GrammarCheckerQuery( |
| const std::string& text, |
| const std::string& language); |
| |
| |
| ~GrammarCheckerQuery(); |
| |
| // 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 = GrammarCheckerQueryPtr> |
| GrammarCheckerQueryPtr 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, GrammarCheckerQuery::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, GrammarCheckerQuery::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| size_t Hash(size_t seed) const; |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| GrammarCheckerQuery::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| GrammarCheckerQuery::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::GrammarCheckerQuery_UnserializedMessageContext< |
| UserType, GrammarCheckerQuery::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<GrammarCheckerQuery::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return GrammarCheckerQuery::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::GrammarCheckerQuery_UnserializedMessageContext< |
| UserType, GrammarCheckerQuery::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<GrammarCheckerQuery::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCheckerQuery.text |
| std::string text; |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCheckerQuery.language |
| std::string language; |
| |
| // 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, GrammarCheckerQuery::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, GrammarCheckerQuery::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, GrammarCheckerQuery::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, GrammarCheckerQuery::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCorrectionFragment |
| class COMPONENT_EXPORT(MLSERVICE_MOJOM) GrammarCorrectionFragment { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<GrammarCorrectionFragment, T>::value>; |
| using DataView = GrammarCorrectionFragmentDataView; |
| using Data_ = internal::GrammarCorrectionFragment_Data; |
| |
| template <typename... Args> |
| static GrammarCorrectionFragmentPtr New(Args&&... args) { |
| return GrammarCorrectionFragmentPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static GrammarCorrectionFragmentPtr From(const U& u) { |
| return mojo::TypeConverter<GrammarCorrectionFragmentPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, GrammarCorrectionFragment>::Convert(*this); |
| } |
| |
| |
| GrammarCorrectionFragment(); |
| |
| GrammarCorrectionFragment( |
| uint32_t offset, |
| uint32_t length, |
| const std::string& replacement); |
| |
| |
| ~GrammarCorrectionFragment(); |
| |
| // 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 = GrammarCorrectionFragmentPtr> |
| GrammarCorrectionFragmentPtr 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, GrammarCorrectionFragment::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, GrammarCorrectionFragment::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| size_t Hash(size_t seed) const; |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| GrammarCorrectionFragment::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| GrammarCorrectionFragment::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::GrammarCorrectionFragment_UnserializedMessageContext< |
| UserType, GrammarCorrectionFragment::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<GrammarCorrectionFragment::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return GrammarCorrectionFragment::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::GrammarCorrectionFragment_UnserializedMessageContext< |
| UserType, GrammarCorrectionFragment::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<GrammarCorrectionFragment::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCorrectionFragment.offset |
| uint32_t offset; |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCorrectionFragment.length |
| uint32_t length; |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCorrectionFragment.replacement |
| std::string replacement; |
| |
| // 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, GrammarCorrectionFragment::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, GrammarCorrectionFragment::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, GrammarCorrectionFragment::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, GrammarCorrectionFragment::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCheckerCandidate |
| class COMPONENT_EXPORT(MLSERVICE_MOJOM) GrammarCheckerCandidate { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<GrammarCheckerCandidate, T>::value>; |
| using DataView = GrammarCheckerCandidateDataView; |
| using Data_ = internal::GrammarCheckerCandidate_Data; |
| |
| template <typename... Args> |
| static GrammarCheckerCandidatePtr New(Args&&... args) { |
| return GrammarCheckerCandidatePtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static GrammarCheckerCandidatePtr From(const U& u) { |
| return mojo::TypeConverter<GrammarCheckerCandidatePtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, GrammarCheckerCandidate>::Convert(*this); |
| } |
| |
| |
| GrammarCheckerCandidate(); |
| |
| GrammarCheckerCandidate( |
| const std::string& text, |
| float score, |
| std::vector<GrammarCorrectionFragmentPtr> fragments); |
| |
| GrammarCheckerCandidate(const GrammarCheckerCandidate&) = delete; |
| GrammarCheckerCandidate& operator=(const GrammarCheckerCandidate&) = delete; |
| |
| ~GrammarCheckerCandidate(); |
| |
| // 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 = GrammarCheckerCandidatePtr> |
| GrammarCheckerCandidatePtr 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, GrammarCheckerCandidate::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, GrammarCheckerCandidate::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| GrammarCheckerCandidate::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| GrammarCheckerCandidate::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::GrammarCheckerCandidate_UnserializedMessageContext< |
| UserType, GrammarCheckerCandidate::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<GrammarCheckerCandidate::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return GrammarCheckerCandidate::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::GrammarCheckerCandidate_UnserializedMessageContext< |
| UserType, GrammarCheckerCandidate::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<GrammarCheckerCandidate::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCheckerCandidate.text |
| std::string text; |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCheckerCandidate.score |
| float score; |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCheckerCandidate.fragments |
| std::vector<GrammarCorrectionFragmentPtr> fragments; |
| |
| // 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, GrammarCheckerCandidate::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, GrammarCheckerCandidate::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, GrammarCheckerCandidate::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, GrammarCheckerCandidate::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCheckerResult |
| class COMPONENT_EXPORT(MLSERVICE_MOJOM) GrammarCheckerResult { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<GrammarCheckerResult, T>::value>; |
| using DataView = GrammarCheckerResultDataView; |
| using Data_ = internal::GrammarCheckerResult_Data; |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCheckerResult.Status |
| using Status = GrammarCheckerResult_Status; |
| |
| template <typename... Args> |
| static GrammarCheckerResultPtr New(Args&&... args) { |
| return GrammarCheckerResultPtr( |
| absl::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static GrammarCheckerResultPtr From(const U& u) { |
| return mojo::TypeConverter<GrammarCheckerResultPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, GrammarCheckerResult>::Convert(*this); |
| } |
| |
| |
| GrammarCheckerResult(); |
| |
| GrammarCheckerResult( |
| GrammarCheckerResult::Status status, |
| std::vector<GrammarCheckerCandidatePtr> candidates); |
| |
| GrammarCheckerResult(const GrammarCheckerResult&) = delete; |
| GrammarCheckerResult& operator=(const GrammarCheckerResult&) = delete; |
| |
| ~GrammarCheckerResult(); |
| |
| // 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 = GrammarCheckerResultPtr> |
| GrammarCheckerResultPtr 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, GrammarCheckerResult::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, GrammarCheckerResult::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| GrammarCheckerResult::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| GrammarCheckerResult::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::GrammarCheckerResult_UnserializedMessageContext< |
| UserType, GrammarCheckerResult::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<GrammarCheckerResult::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return GrammarCheckerResult::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::GrammarCheckerResult_UnserializedMessageContext< |
| UserType, GrammarCheckerResult::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<GrammarCheckerResult::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCheckerResult.status |
| GrammarCheckerResult::Status status; |
| |
| // @generated_from: chromeos.machine_learning.mojom.GrammarCheckerResult.candidates |
| std::vector<GrammarCheckerCandidatePtr> candidates; |
| |
| // 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, GrammarCheckerResult::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, GrammarCheckerResult::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, GrammarCheckerResult::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, GrammarCheckerResult::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| template <typename StructPtrType> |
| GrammarCheckerQueryPtr GrammarCheckerQuery::Clone() const { |
| return New( |
| mojo::Clone(text), |
| mojo::Clone(language) |
| ); |
| } |
| |
| template <typename T, GrammarCheckerQuery::EnableIfSame<T>*> |
| bool GrammarCheckerQuery::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->text, other_struct.text)) |
| return false; |
| if (!mojo::Equals(this->language, other_struct.language)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, GrammarCheckerQuery::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.text < rhs.text) |
| return true; |
| if (rhs.text < lhs.text) |
| return false; |
| if (lhs.language < rhs.language) |
| return true; |
| if (rhs.language < lhs.language) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| GrammarCorrectionFragmentPtr GrammarCorrectionFragment::Clone() const { |
| return New( |
| mojo::Clone(offset), |
| mojo::Clone(length), |
| mojo::Clone(replacement) |
| ); |
| } |
| |
| template <typename T, GrammarCorrectionFragment::EnableIfSame<T>*> |
| bool GrammarCorrectionFragment::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->offset, other_struct.offset)) |
| return false; |
| if (!mojo::Equals(this->length, other_struct.length)) |
| return false; |
| if (!mojo::Equals(this->replacement, other_struct.replacement)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, GrammarCorrectionFragment::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.offset < rhs.offset) |
| return true; |
| if (rhs.offset < lhs.offset) |
| return false; |
| if (lhs.length < rhs.length) |
| return true; |
| if (rhs.length < lhs.length) |
| return false; |
| if (lhs.replacement < rhs.replacement) |
| return true; |
| if (rhs.replacement < lhs.replacement) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| GrammarCheckerCandidatePtr GrammarCheckerCandidate::Clone() const { |
| return New( |
| mojo::Clone(text), |
| mojo::Clone(score), |
| mojo::Clone(fragments) |
| ); |
| } |
| |
| template <typename T, GrammarCheckerCandidate::EnableIfSame<T>*> |
| bool GrammarCheckerCandidate::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->text, other_struct.text)) |
| return false; |
| if (!mojo::Equals(this->score, other_struct.score)) |
| return false; |
| if (!mojo::Equals(this->fragments, other_struct.fragments)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, GrammarCheckerCandidate::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.text < rhs.text) |
| return true; |
| if (rhs.text < lhs.text) |
| return false; |
| if (lhs.score < rhs.score) |
| return true; |
| if (rhs.score < lhs.score) |
| return false; |
| if (lhs.fragments < rhs.fragments) |
| return true; |
| if (rhs.fragments < lhs.fragments) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| GrammarCheckerResultPtr GrammarCheckerResult::Clone() const { |
| return New( |
| mojo::Clone(status), |
| mojo::Clone(candidates) |
| ); |
| } |
| |
| template <typename T, GrammarCheckerResult::EnableIfSame<T>*> |
| bool GrammarCheckerResult::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->status, other_struct.status)) |
| return false; |
| if (!mojo::Equals(this->candidates, other_struct.candidates)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, GrammarCheckerResult::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.status < rhs.status) |
| return true; |
| if (rhs.status < lhs.status) |
| return false; |
| if (lhs.candidates < rhs.candidates) |
| return true; |
| if (rhs.candidates < lhs.candidates) |
| return false; |
| return false; |
| } |
| |
| |
| } // namespace mojom |
| } // namespace machine_learning |
| } // namespace chromeos |
| |
| namespace mojo { |
| |
| |
| template <> |
| struct COMPONENT_EXPORT(MLSERVICE_MOJOM) StructTraits<::chromeos::machine_learning::mojom::GrammarCheckerQuery::DataView, |
| ::chromeos::machine_learning::mojom::GrammarCheckerQueryPtr> { |
| static bool IsNull(const ::chromeos::machine_learning::mojom::GrammarCheckerQueryPtr& input) { return !input; } |
| static void SetToNull(::chromeos::machine_learning::mojom::GrammarCheckerQueryPtr* output) { output->reset(); } |
| |
| static const decltype(::chromeos::machine_learning::mojom::GrammarCheckerQuery::text)& text( |
| const ::chromeos::machine_learning::mojom::GrammarCheckerQueryPtr& input) { |
| return input->text; |
| } |
| |
| static const decltype(::chromeos::machine_learning::mojom::GrammarCheckerQuery::language)& language( |
| const ::chromeos::machine_learning::mojom::GrammarCheckerQueryPtr& input) { |
| return input->language; |
| } |
| |
| static bool Read(::chromeos::machine_learning::mojom::GrammarCheckerQuery::DataView input, ::chromeos::machine_learning::mojom::GrammarCheckerQueryPtr* output); |
| }; |
| |
| |
| template <> |
| struct COMPONENT_EXPORT(MLSERVICE_MOJOM) StructTraits<::chromeos::machine_learning::mojom::GrammarCorrectionFragment::DataView, |
| ::chromeos::machine_learning::mojom::GrammarCorrectionFragmentPtr> { |
| static bool IsNull(const ::chromeos::machine_learning::mojom::GrammarCorrectionFragmentPtr& input) { return !input; } |
| static void SetToNull(::chromeos::machine_learning::mojom::GrammarCorrectionFragmentPtr* output) { output->reset(); } |
| |
| static decltype(::chromeos::machine_learning::mojom::GrammarCorrectionFragment::offset) offset( |
| const ::chromeos::machine_learning::mojom::GrammarCorrectionFragmentPtr& input) { |
| return input->offset; |
| } |
| |
| static decltype(::chromeos::machine_learning::mojom::GrammarCorrectionFragment::length) length( |
| const ::chromeos::machine_learning::mojom::GrammarCorrectionFragmentPtr& input) { |
| return input->length; |
| } |
| |
| static const decltype(::chromeos::machine_learning::mojom::GrammarCorrectionFragment::replacement)& replacement( |
| const ::chromeos::machine_learning::mojom::GrammarCorrectionFragmentPtr& input) { |
| return input->replacement; |
| } |
| |
| static bool Read(::chromeos::machine_learning::mojom::GrammarCorrectionFragment::DataView input, ::chromeos::machine_learning::mojom::GrammarCorrectionFragmentPtr* output); |
| }; |
| |
| |
| template <> |
| struct COMPONENT_EXPORT(MLSERVICE_MOJOM) StructTraits<::chromeos::machine_learning::mojom::GrammarCheckerCandidate::DataView, |
| ::chromeos::machine_learning::mojom::GrammarCheckerCandidatePtr> { |
| static bool IsNull(const ::chromeos::machine_learning::mojom::GrammarCheckerCandidatePtr& input) { return !input; } |
| static void SetToNull(::chromeos::machine_learning::mojom::GrammarCheckerCandidatePtr* output) { output->reset(); } |
| |
| static const decltype(::chromeos::machine_learning::mojom::GrammarCheckerCandidate::text)& text( |
| const ::chromeos::machine_learning::mojom::GrammarCheckerCandidatePtr& input) { |
| return input->text; |
| } |
| |
| static decltype(::chromeos::machine_learning::mojom::GrammarCheckerCandidate::score) score( |
| const ::chromeos::machine_learning::mojom::GrammarCheckerCandidatePtr& input) { |
| return input->score; |
| } |
| |
| static const decltype(::chromeos::machine_learning::mojom::GrammarCheckerCandidate::fragments)& fragments( |
| const ::chromeos::machine_learning::mojom::GrammarCheckerCandidatePtr& input) { |
| return input->fragments; |
| } |
| |
| static bool Read(::chromeos::machine_learning::mojom::GrammarCheckerCandidate::DataView input, ::chromeos::machine_learning::mojom::GrammarCheckerCandidatePtr* output); |
| }; |
| |
| |
| template <> |
| struct COMPONENT_EXPORT(MLSERVICE_MOJOM) StructTraits<::chromeos::machine_learning::mojom::GrammarCheckerResult::DataView, |
| ::chromeos::machine_learning::mojom::GrammarCheckerResultPtr> { |
| static bool IsNull(const ::chromeos::machine_learning::mojom::GrammarCheckerResultPtr& input) { return !input; } |
| static void SetToNull(::chromeos::machine_learning::mojom::GrammarCheckerResultPtr* output) { output->reset(); } |
| |
| static decltype(::chromeos::machine_learning::mojom::GrammarCheckerResult::status) status( |
| const ::chromeos::machine_learning::mojom::GrammarCheckerResultPtr& input) { |
| return input->status; |
| } |
| |
| static const decltype(::chromeos::machine_learning::mojom::GrammarCheckerResult::candidates)& candidates( |
| const ::chromeos::machine_learning::mojom::GrammarCheckerResultPtr& input) { |
| return input->candidates; |
| } |
| |
| static bool Read(::chromeos::machine_learning::mojom::GrammarCheckerResult::DataView input, ::chromeos::machine_learning::mojom::GrammarCheckerResultPtr* output); |
| }; |
| |
| } // namespace mojo |
| |
| #endif // CHROMEOS_SERVICES_MACHINE_LEARNING_PUBLIC_MOJOM_GRAMMAR_CHECKER_MOJOM_H_ |
| |
| /* Metadata comment |
| eyJtZXRhIjogW3siZW5kIjogMTgyMiwgImJlZ2luIjogMTgwOCwgImVkZ2UiOiAiJS9reXRoZS9l |
| ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw |
| dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui |
| OiAibW9qb20iLCAic2lnbmF0dXJlIjogImNocm9tZW9zLm1hY2hpbmVfbGVhcm5pbmcubW9qb20u |
| R3JhbW1hckNoZWNrZXIifX0sIHsiZW5kIjogMzA5MSwgImJlZ2luIjogMzA4NiwgImVkZ2UiOiAi |
| JS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1l |
| IjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAi |
| bGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImNocm9tZW9zLm1hY2hpbmVfbGVhcm5p |
| bmcubW9qb20uR3JhbW1hckNoZWNrZXIuQ2hlY2sifX0sIHsiZW5kIjogMzUzMCwgImJlZ2luIjog |
| MzUyNSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9k |
| ZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j |
| aHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImNocm9tZW9z |
| Lm1hY2hpbmVfbGVhcm5pbmcubW9qb20uR3JhbW1hckNoZWNrZXIuQ2hlY2sifX0sIHsiZW5kIjog |
| NTQ1NiwgImJlZ2luIjogNTQzNywgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0 |
| eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29v |
| Z2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0 |
| dXJlIjogImNocm9tZW9zLm1hY2hpbmVfbGVhcm5pbmcubW9qb20uR3JhbW1hckNoZWNrZXJRdWVy |
| eSJ9fSwgeyJlbmQiOiA5MzE0LCAiYmVnaW4iOiA5MzEwLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv |
| Z2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6 |
| ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJt |
| b2pvbSIsICJzaWduYXR1cmUiOiAiY2hyb21lb3MubWFjaGluZV9sZWFybmluZy5tb2pvbS5HcmFt |
| bWFyQ2hlY2tlclF1ZXJ5LnRleHQifX0sIHsiZW5kIjogOTQyMiwgImJlZ2luIjogOTQxNCwgImVk |
| Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg |
| InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z |
| cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImNocm9tZW9zLm1hY2hpbmVf |
| bGVhcm5pbmcubW9qb20uR3JhbW1hckNoZWNrZXJRdWVyeS5sYW5ndWFnZSJ9fSwgeyJlbmQiOiAx |
| MDU2MCwgImJlZ2luIjogMTA1MzUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi |
| dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv |
| b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h |
| dHVyZSI6ICJjaHJvbWVvcy5tYWNoaW5lX2xlYXJuaW5nLm1vam9tLkdyYW1tYXJDb3JyZWN0aW9u |
| RnJhZ21lbnQifX0sIHsiZW5kIjogMTQ1ODcsICJiZWdpbiI6IDE0NTgxLCAiZWRnZSI6ICIlL2t5 |
| dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7 |
| ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5n |
| dWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiY2hyb21lb3MubWFjaGluZV9sZWFybmluZy5t |
| b2pvbS5HcmFtbWFyQ29ycmVjdGlvbkZyYWdtZW50Lm9mZnNldCJ9fSwgeyJlbmQiOiAxNDY5NCwg |
| ImJlZ2luIjogMTQ2ODgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6 |
| ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv |
| dXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6 |
| ICJjaHJvbWVvcy5tYWNoaW5lX2xlYXJuaW5nLm1vam9tLkdyYW1tYXJDb3JyZWN0aW9uRnJhZ21l |
| bnQubGVuZ3RoIn19LCB7ImVuZCI6IDE0ODE0LCAiYmVnaW4iOiAxNDgwMywgImVkZ2UiOiAiJS9r |
| eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog |
| eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu |
| Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImNocm9tZW9zLm1hY2hpbmVfbGVhcm5pbmcu |
| bW9qb20uR3JhbW1hckNvcnJlY3Rpb25GcmFnbWVudC5yZXBsYWNlbWVudCJ9fSwgeyJlbmQiOiAx |
| NTk3OCwgImJlZ2luIjogMTU5NTUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi |
| dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv |
| b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h |
| dHVyZSI6ICJjaHJvbWVvcy5tYWNoaW5lX2xlYXJuaW5nLm1vam9tLkdyYW1tYXJDaGVja2VyQ2Fu |
| ZGlkYXRlIn19LCB7ImVuZCI6IDIwMDg4LCAiYmVnaW4iOiAyMDA4NCwgImVkZ2UiOiAiJS9reXRo |
| ZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJj |
| b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3Vh |
| Z2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImNocm9tZW9zLm1hY2hpbmVfbGVhcm5pbmcubW9q |
| b20uR3JhbW1hckNoZWNrZXJDYW5kaWRhdGUudGV4dCJ9fSwgeyJlbmQiOiAyMDE4OCwgImJlZ2lu |
| IjogMjAxODMsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNo |
| b3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j |
| b20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJjaHJv |
| bWVvcy5tYWNoaW5lX2xlYXJuaW5nLm1vam9tLkdyYW1tYXJDaGVja2VyQ2FuZGlkYXRlLnNjb3Jl |
| In19LCB7ImVuZCI6IDIwMzMyLCAiYmVnaW4iOiAyMDMyMywgImVkZ2UiOiAiJS9reXRoZS9lZGdl |
| L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi |
| OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi |
| bW9qb20iLCAic2lnbmF0dXJlIjogImNocm9tZW9zLm1hY2hpbmVfbGVhcm5pbmcubW9qb20uR3Jh |
| bW1hckNoZWNrZXJDYW5kaWRhdGUuZnJhZ21lbnRzIn19LCB7ImVuZCI6IDIxNDc2LCAiYmVnaW4i |
| OiAyMTQ1NiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv |
| cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv |
| bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImNocm9t |
| ZW9zLm1hY2hpbmVfbGVhcm5pbmcubW9qb20uR3JhbW1hckNoZWNrZXJSZXN1bHQifX0sIHsiZW5k |
| IjogMjE3OTUsICJiZWdpbiI6IDIxNzg5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz |
| IiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1 |
| bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJz |
| aWduYXR1cmUiOiAiY2hyb21lb3MubWFjaGluZV9sZWFybmluZy5tb2pvbS5HcmFtbWFyQ2hlY2tl |
| clJlc3VsdC5TdGF0dXMifX0sIHsiZW5kIjogMjU2MzEsICJiZWdpbiI6IDI1NjI1LCAiZWRnZSI6 |
| ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h |
| bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs |
| ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiY2hyb21lb3MubWFjaGluZV9sZWFy |
| bmluZy5tb2pvbS5HcmFtbWFyQ2hlY2tlclJlc3VsdC5zdGF0dXMifX0sIHsiZW5kIjogMjU3Nzks |
| ICJiZWdpbiI6IDI1NzY5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUi |
| OiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz |
| b3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUi |
| OiAiY2hyb21lb3MubWFjaGluZV9sZWFybmluZy5tb2pvbS5HcmFtbWFyQ2hlY2tlclJlc3VsdC5j |
| YW5kaWRhdGVzIn19XSwgInR5cGUiOiAia3l0aGUwIn0= |
| */ |