blob: c5ed1d11616d605464046cd358f7e1845d2af3fc [file] [log] [blame]
// components/mirroring/mojom/resource_provider.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 COMPONENTS_MIRRORING_MOJOM_RESOURCE_PROVIDER_MOJOM_BLINK_H_
#define COMPONENTS_MIRRORING_MOJOM_RESOURCE_PROVIDER_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 "components/mirroring/mojom/resource_provider.mojom-features.h"
#include "components/mirroring/mojom/resource_provider.mojom-shared.h"
#include "components/mirroring/mojom/resource_provider.mojom-blink-forward.h"
#include "media/capture/mojom/video_capture.mojom-blink-forward.h"
#include "services/network/public/mojom/network_context.mojom-blink-forward.h"
#include "media/mojo/mojom/remoting.mojom-blink-forward.h"
#include "media/mojo/mojom/audio_data_pipe.mojom-blink-forward.h"
#include "media/mojo/mojom/audio_input_stream.mojom-blink-forward.h"
#include "media/mojo/mojom/audio_parameters.mojom-blink.h"
#include "media/mojo/mojom/video_encoder_metrics_provider.mojom-blink-forward.h"
#include "sandbox/policy/mojom/context.mojom-blink-forward.h"
#include "services/viz/public/mojom/gpu.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 mirroring::mojom::blink {
class AudioStreamCreatorClientProxy;
template <typename ImplRefTraits>
class AudioStreamCreatorClientStub;
class AudioStreamCreatorClientRequestValidator;
// @generated_from: mirroring.mojom.AudioStreamCreatorClient
class AudioStreamCreatorClient
: public AudioStreamCreatorClientInterfaceBase {
public:
using IPCStableHashFunction = uint32_t(*)();
static const char Name_[];
static IPCStableHashFunction 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 HasUninterruptableMethods_ = false;
using Base_ = AudioStreamCreatorClientInterfaceBase;
using Proxy_ = AudioStreamCreatorClientProxy;
template <typename ImplRefTraits>
using Stub_ = AudioStreamCreatorClientStub<ImplRefTraits>;
using RequestValidator_ = AudioStreamCreatorClientRequestValidator;
using ResponseValidator_ = mojo::PassThroughFilter;
enum MethodMinVersions : uint32_t {
kStreamCreatedMinVersion = 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 StreamCreated_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~AudioStreamCreatorClient() = default;
// @generated_from: mirroring.mojom.AudioStreamCreatorClient.StreamCreated
virtual void StreamCreated(::mojo::PendingRemote<::media::mojom::blink::AudioInputStream> stream, ::mojo::PendingReceiver<::media::mojom::blink::AudioInputStreamClient> client_receiver, ::media::mojom::blink::ReadOnlyAudioDataPipePtr data_pipe) = 0;
};
class ResourceProviderProxy;
template <typename ImplRefTraits>
class ResourceProviderStub;
class ResourceProviderRequestValidator;
// @generated_from: mirroring.mojom.ResourceProvider
class ResourceProvider
: public ResourceProviderInterfaceBase {
public:
using IPCStableHashFunction = uint32_t(*)();
static const char Name_[];
static IPCStableHashFunction 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 HasUninterruptableMethods_ = false;
using Base_ = ResourceProviderInterfaceBase;
using Proxy_ = ResourceProviderProxy;
template <typename ImplRefTraits>
using Stub_ = ResourceProviderStub<ImplRefTraits>;
using RequestValidator_ = ResourceProviderRequestValidator;
using ResponseValidator_ = mojo::PassThroughFilter;
enum MethodMinVersions : uint32_t {
kBindGpuMinVersion = 0,
kGetVideoCaptureHostMinVersion = 0,
kGetVideoEncoderMetricsProviderMinVersion = 0,
kGetNetworkContextMinVersion = 0,
kCreateAudioStreamMinVersion = 0,
kConnectToRemotingSourceMinVersion = 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 BindGpu_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct GetVideoCaptureHost_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct GetVideoEncoderMetricsProvider_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct GetNetworkContext_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct CreateAudioStream_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct ConnectToRemotingSource_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~ResourceProvider() = default;
// @generated_from: mirroring.mojom.ResourceProvider.BindGpu
virtual void BindGpu(::mojo::PendingReceiver<::viz::mojom::blink::Gpu> receiver) = 0;
// @generated_from: mirroring.mojom.ResourceProvider.GetVideoCaptureHost
virtual void GetVideoCaptureHost(::mojo::PendingReceiver<::media::mojom::blink::VideoCaptureHost> receiver) = 0;
// @generated_from: mirroring.mojom.ResourceProvider.GetVideoEncoderMetricsProvider
virtual void GetVideoEncoderMetricsProvider(::mojo::PendingReceiver<::media::mojom::blink::VideoEncoderMetricsProvider> receiver) = 0;
// @generated_from: mirroring.mojom.ResourceProvider.GetNetworkContext
virtual void GetNetworkContext(::mojo::PendingReceiver<::network::mojom::blink::NetworkContext> receiver) = 0;
// @generated_from: mirroring.mojom.ResourceProvider.CreateAudioStream
virtual void CreateAudioStream(::mojo::PendingRemote<AudioStreamCreatorClient> client, const ::media::AudioParameters& param, uint32_t shared_memory_count) = 0;
// @generated_from: mirroring.mojom.ResourceProvider.ConnectToRemotingSource
virtual void ConnectToRemotingSource(::mojo::PendingRemote<::media::mojom::blink::Remoter> remoter, ::mojo::PendingReceiver<::media::mojom::blink::RemotingSource> receiver) = 0;
};
// @generated_from: mirroring.mojom.AudioStreamCreatorClient
class AudioStreamCreatorClientProxy
: public AudioStreamCreatorClient {
public:
using InterfaceType = AudioStreamCreatorClient;
explicit AudioStreamCreatorClientProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: mirroring.mojom.AudioStreamCreatorClient.StreamCreated
void StreamCreated(::mojo::PendingRemote<::media::mojom::blink::AudioInputStream> stream, ::mojo::PendingReceiver<::media::mojom::blink::AudioInputStreamClient> client_receiver, ::media::mojom::blink::ReadOnlyAudioDataPipePtr data_pipe) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: mirroring.mojom.ResourceProvider
class ResourceProviderProxy
: public ResourceProvider {
public:
using InterfaceType = ResourceProvider;
explicit ResourceProviderProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: mirroring.mojom.ResourceProvider.BindGpu
void BindGpu(::mojo::PendingReceiver<::viz::mojom::blink::Gpu> receiver) final;
// @generated_from: mirroring.mojom.ResourceProvider.GetVideoCaptureHost
void GetVideoCaptureHost(::mojo::PendingReceiver<::media::mojom::blink::VideoCaptureHost> receiver) final;
// @generated_from: mirroring.mojom.ResourceProvider.GetVideoEncoderMetricsProvider
void GetVideoEncoderMetricsProvider(::mojo::PendingReceiver<::media::mojom::blink::VideoEncoderMetricsProvider> receiver) final;
// @generated_from: mirroring.mojom.ResourceProvider.GetNetworkContext
void GetNetworkContext(::mojo::PendingReceiver<::network::mojom::blink::NetworkContext> receiver) final;
// @generated_from: mirroring.mojom.ResourceProvider.CreateAudioStream
void CreateAudioStream(::mojo::PendingRemote<AudioStreamCreatorClient> client, const ::media::AudioParameters& param, uint32_t shared_memory_count) final;
// @generated_from: mirroring.mojom.ResourceProvider.ConnectToRemotingSource
void ConnectToRemotingSource(::mojo::PendingRemote<::media::mojom::blink::Remoter> remoter, ::mojo::PendingReceiver<::media::mojom::blink::RemotingSource> receiver) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
class AudioStreamCreatorClientStubDispatch {
public:
static bool Accept(AudioStreamCreatorClient* impl, mojo::Message* message);
static bool AcceptWithResponder(
AudioStreamCreatorClient* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<AudioStreamCreatorClient>>
class AudioStreamCreatorClientStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
AudioStreamCreatorClientStub() = default;
~AudioStreamCreatorClientStub() 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 AudioStreamCreatorClientStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return AudioStreamCreatorClientStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class ResourceProviderStubDispatch {
public:
static bool Accept(ResourceProvider* impl, mojo::Message* message);
static bool AcceptWithResponder(
ResourceProvider* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<ResourceProvider>>
class ResourceProviderStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
ResourceProviderStub() = default;
~ResourceProviderStub() 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 ResourceProviderStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return ResourceProviderStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class AudioStreamCreatorClientRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class ResourceProviderRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
} // mirroring::mojom::blink
namespace mojo {
} // namespace mojo
#endif // COMPONENTS_MIRRORING_MOJOM_RESOURCE_PROVIDER_MOJOM_BLINK_H_
/* Metadata comment
eyJ0eXBlIjogImt5dGhlMCIsICJtZXRhIjogW3sidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDI1NzIsICJlbmQiOiAyNTk2LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJtaXJyb3JpbmcubW9qb20uQXVkaW9TdHJlYW1DcmVh
dG9yQ2xpZW50In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMzg1MCwgImVuZCI6IDM4NjMsICJ2bmFtZSI6IHsi
bGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v
Y29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIm1pcnJvcmluZy5t
b2pvbS5BdWRpb1N0cmVhbUNyZWF0b3JDbGllbnQuU3RyZWFtQ3JlYXRlZCJ9LCAiZWRnZSI6ICIl
L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdp
biI6IDQyODUsICJlbmQiOiA0MzAxLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNv
cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3Jj
Ly9tYWluIiwgInNpZ25hdHVyZSI6ICJtaXJyb3JpbmcubW9qb20uUmVzb3VyY2VQcm92aWRlciJ9
LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVm
aW5lcyIsICJiZWdpbiI6IDYxMzMsICJlbmQiOiA2MTQwLCAidm5hbWUiOiB7Imxhbmd1YWdlIjog
Im1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gv
Y2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJtaXJyb3JpbmcubW9qb20uUmVzb3Vy
Y2VQcm92aWRlci5CaW5kR3B1In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwg
eyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNjI5OCwgImVuZCI6IDYzMTcsICJ2
bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
dXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIm1p
cnJvcmluZy5tb2pvbS5SZXNvdXJjZVByb3ZpZGVyLkdldFZpZGVvQ2FwdHVyZUhvc3QifSwgImVk
Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMi
LCAiYmVnaW4iOiA2NTAxLCAiZW5kIjogNjUzMSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pv
bSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9t
aXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibWlycm9yaW5nLm1vam9tLlJlc291cmNlUHJv
dmlkZXIuR2V0VmlkZW9FbmNvZGVyTWV0cmljc1Byb3ZpZGVyIn0sICJlZGdlIjogIiUva3l0aGUv
ZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNjcx
MywgImVuZCI6IDY3MzAsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjog
ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4i
LCAic2lnbmF0dXJlIjogIm1pcnJvcmluZy5tb2pvbS5SZXNvdXJjZVByb3ZpZGVyLkdldE5ldHdv
cmtDb250ZXh0In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNjkwMSwgImVuZCI6IDY5MTgsICJ2bmFtZSI6IHsi
bGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v
Y29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIm1pcnJvcmluZy5t
b2pvbS5SZXNvdXJjZVByb3ZpZGVyLkNyZWF0ZUF1ZGlvU3RyZWFtIn0sICJlZGdlIjogIiUva3l0
aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjog
NzE0NSwgImVuZCI6IDcxNjgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVz
IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21h
aW4iLCAic2lnbmF0dXJlIjogIm1pcnJvcmluZy5tb2pvbS5SZXNvdXJjZVByb3ZpZGVyLkNvbm5l
Y3RUb1JlbW90aW5nU291cmNlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwg
eyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNzY4NywgImVuZCI6IDc3MDAsICJ2
bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
dXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIm1p
cnJvcmluZy5tb2pvbS5BdWRpb1N0cmVhbUNyZWF0b3JDbGllbnQuU3RyZWFtQ3JlYXRlZCJ9LCAi
ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5l
cyIsICJiZWdpbiI6IDgzMDksICJlbmQiOiA4MzE2LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1v
am9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hy
b21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJtaXJyb3JpbmcubW9qb20uUmVzb3VyY2VQ
cm92aWRlci5CaW5kR3B1In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0
eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogODQ2NywgImVuZCI6IDg0ODYsICJ2bmFt
ZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
ZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIm1pcnJv
cmluZy5tb2pvbS5SZXNvdXJjZVByb3ZpZGVyLkdldFZpZGVvQ2FwdHVyZUhvc3QifSwgImVkZ2Ui
OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
YmVnaW4iOiA4NjYzLCAiZW5kIjogODY5MywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIs
ICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVt
L3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibWlycm9yaW5nLm1vam9tLlJlc291cmNlUHJvdmlk
ZXIuR2V0VmlkZW9FbmNvZGVyTWV0cmljc1Byb3ZpZGVyIn0sICJlZGdlIjogIiUva3l0aGUvZWRn
ZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogODg2OCwg
ImVuZCI6IDg4ODUsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNo
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAi
c2lnbmF0dXJlIjogIm1pcnJvcmluZy5tb2pvbS5SZXNvdXJjZVByb3ZpZGVyLkdldE5ldHdvcmtD
b250ZXh0In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFu
Y2hvcl9kZWZpbmVzIiwgImJlZ2luIjogOTA0OSwgImVuZCI6IDkwNjYsICJ2bmFtZSI6IHsibGFu
Z3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29k
ZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIm1pcnJvcmluZy5tb2pv
bS5SZXNvdXJjZVByb3ZpZGVyLkNyZWF0ZUF1ZGlvU3RyZWFtIn0sICJlZGdlIjogIiUva3l0aGUv
ZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogOTI4
NiwgImVuZCI6IDkzMDksICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjog
ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4i
LCAic2lnbmF0dXJlIjogIm1pcnJvcmluZy5tb2pvbS5SZXNvdXJjZVByb3ZpZGVyLkNvbm5lY3RU
b1JlbW90aW5nU291cmNlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifV19
*/