diff --git a/BuildScripts~/generate_proto.sh b/BuildScripts~/generate_proto.sh index 2e5005b0..ebbcf047 100755 --- a/BuildScripts~/generate_proto.sh +++ b/BuildScripts~/generate_proto.sh @@ -17,4 +17,5 @@ protoc \ $FFI_PROTOCOL/e2ee.proto \ $FFI_PROTOCOL/stats.proto \ $FFI_PROTOCOL/rpc.proto \ - $FFI_PROTOCOL/data_stream.proto \ No newline at end of file + $FFI_PROTOCOL/data_stream.proto \ + $FFI_PROTOCOL/data_track.proto \ No newline at end of file diff --git a/Runtime/Scripts/DataTrack.cs b/Runtime/Scripts/DataTrack.cs new file mode 100644 index 00000000..be119518 --- /dev/null +++ b/Runtime/Scripts/DataTrack.cs @@ -0,0 +1,469 @@ +using System; +using LiveKit.Internal; +using LiveKit.Internal.FFIClients.Requests; +using LiveKit.Proto; +using UnityEngine; + +namespace LiveKit +{ + /// + /// Information about a published data track. + /// + public sealed class DataTrackInfo + { + /// + /// Unique track identifier assigned by the SFU. + /// + /// + /// This identifier may change if a reconnect occurs. Use + /// if a stable identifier is needed. + /// + public string Sid { get; } + + /// + /// Name of the track assigned by the publisher. + /// + public string Name { get; } + + /// + /// Whether or not frames sent on the track use end-to-end encryption. + /// + public bool UsesE2EE { get; } + + internal DataTrackInfo(Proto.DataTrackInfo proto) + { + Sid = proto.Sid; + Name = proto.Name; + UsesE2EE = proto.UsesE2Ee; + } + } + + /// + /// Options for publishing a data track. + /// + public class DataTrackOptions + { + /// + /// The track name is used to identify the track to other participants. + /// Must not be empty and must be unique per publisher. + /// + public string Name { get; set; } + + public DataTrackOptions(string name) + { + Name = name; + } + } + + /// + /// Options for subscribing to a remote data track. + /// + public class DataTrackSubscribeOptions + { + /// + /// Sets the maximum number of received frames buffered internally. + /// + /// + /// Zero is not a valid buffer size; if a value of zero is provided, it will be clamped to one. + /// + /// If there is already an active subscription for a given track, specifying a + /// different buffer size when obtaining a new subscription will have no effect. + /// + public uint? BufferSize { get; set; } + } + + /// + /// A frame published on a data track, consisting of a payload and optional metadata. + /// + public class DataTrackFrame + { + /// + /// The frame's payload. + /// + public byte[] Payload { get; } + + /// + /// The frame's user timestamp in milliseconds, if one is associated. + /// + public ulong? UserTimestamp { get; } + + /// + /// Creates a new data track frame. + /// + /// The frame's payload. + /// Optional user timestamp in milliseconds. + public DataTrackFrame(byte[] payload, ulong? userTimestamp = null) + { + Payload = payload; + UserTimestamp = userTimestamp; + } + + internal DataTrackFrame(Proto.DataTrackFrame proto) + { + Payload = proto.Payload.ToByteArray(); + UserTimestamp = proto.HasUserTimestamp ? proto.UserTimestamp : null; + } + + private static ulong TimestampNowMs() + { + return (ulong)DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + } + + /// + /// Associates the current Unix timestamp (in milliseconds) with the frame. + /// Returns a new with the timestamp set; the original is + /// not modified. + /// + /// A new with the current timestamp. + public DataTrackFrame WithUserTimestampNow() + { + return new DataTrackFrame(Payload, TimestampNowMs()); + } + + /// + /// If the frame has a user timestamp, calculates how long has passed + /// relative to the current system time. + /// + /// + /// The timestamp is assumed to be a Unix timestamp in milliseconds + /// (as set by on the publisher side). + /// + /// The elapsed duration in seconds, or null if no timestamp is set. + public double? DurationSinceTimestamp() + { + if (UserTimestamp == null) + return null; + var elapsedMs = TimestampNowMs() - UserTimestamp.Value; + return elapsedMs / 1000.0; + } + } + + /// + /// An error that can occur when pushing a frame to a data track. + /// + /// + /// Pushing a frame can fail for several reasons: + /// + /// The track has been unpublished by the local participant or SFU + /// The room is no longer connected + /// Frames are being pushed too fast + /// + /// + public sealed class PushFrameError : Exception + { + public PushFrameError(string message) : base(message) { } + } + + /// + /// An error that can occur when subscribing to a data track. + /// + public sealed class SubscribeDataTrackError : Exception + { + public SubscribeDataTrackError(string message) : base(message) { } + } + + /// + /// An error that can occur when publishing a data track. + /// + public sealed class PublishDataTrackError : Exception + { + public PublishDataTrackError(string message) : base(message) { } + } + + /// + /// Data track published by the local participant. + /// + public sealed class LocalDataTrack + { + private readonly FfiHandle _handle; + private readonly DataTrackInfo _info; + + internal LocalDataTrack(OwnedLocalDataTrack owned) + { + _handle = FfiHandle.FromOwnedHandle(owned.Handle); + _info = new DataTrackInfo(owned.Info); + } + + /// + /// Information about the data track. + /// + public DataTrackInfo Info => _info; + + /// + /// Try pushing a frame to subscribers of the track. + /// + /// + /// See for how to construct a frame and attach metadata. + /// + /// The data track frame to send. + /// Thrown if the push fails. + public void TryPush(DataTrackFrame frame) + { + using var request = FFIBridge.Instance.NewRequest(); + var pushReq = request.request; + pushReq.TrackHandle = (ulong)_handle.DangerousGetHandle(); + + var protoFrame = new Proto.DataTrackFrame + { + Payload = Google.Protobuf.ByteString.CopyFrom(frame.Payload) + }; + if (frame.UserTimestamp != null) + { + protoFrame.UserTimestamp = frame.UserTimestamp.Value; + } + pushReq.Frame = protoFrame; + + using var response = request.Send(); + FfiResponse res = response; + if (res.LocalDataTrackTryPush.HasError) + { + throw new PushFrameError(res.LocalDataTrackTryPush.Error); + } + } + + /// + /// Whether or not the track is still published. + /// + /// true if the track is published; false otherwise. + public bool IsPublished() + { + using var request = FFIBridge.Instance.NewRequest(); + var isPublishedReq = request.request; + isPublishedReq.TrackHandle = (ulong)_handle.DangerousGetHandle(); + + using var response = request.Send(); + FfiResponse res = response; + return res.LocalDataTrackIsPublished.IsPublished; + } + + /// + /// Unpublishes the track. + /// + public void Unpublish() + { + using var request = FFIBridge.Instance.NewRequest(); + var unpublishReq = request.request; + unpublishReq.TrackHandle = (ulong)_handle.DangerousGetHandle(); + request.Send(); + } + } + + /// + /// Data track published by a remote participant. + /// + public sealed class RemoteDataTrack + { + private readonly FfiHandle _handle; + private readonly DataTrackInfo _info; + private readonly string _publisherIdentity; + + internal RemoteDataTrack(OwnedRemoteDataTrack owned) + { + _handle = FfiHandle.FromOwnedHandle(owned.Handle); + _info = new DataTrackInfo(owned.Info); + _publisherIdentity = owned.PublisherIdentity; + } + + /// + /// Information about the data track. + /// + public DataTrackInfo Info => _info; + + /// + /// Identity of the participant who published the track. + /// + public string PublisherIdentity => _publisherIdentity; + + /// + /// Subscribes to the data track to receive frames. + /// + /// Options for the subscription, such as buffer size. + /// A for reading frames. + public DataTrackSubscription Subscribe(DataTrackSubscribeOptions options) + { + using var request = FFIBridge.Instance.NewRequest(); + var subReq = request.request; + subReq.TrackHandle = (ulong)_handle.DangerousGetHandle(); + + var protoOptions = new Proto.DataTrackSubscribeOptions(); + if (options.BufferSize.HasValue) + protoOptions.BufferSize = options.BufferSize.Value; + subReq.Options = protoOptions; + + using var response = request.Send(); + FfiResponse res = response; + return new DataTrackSubscription(res.SubscribeDataTrack.Subscription); + } + + /// + /// Subscribes to the data track to receive frames using default options. + /// + /// + /// Use the overload to configure subscription options. + /// + /// A for reading frames. + public DataTrackSubscription Subscribe() + { + return Subscribe(new DataTrackSubscribeOptions()); + } + + /// + /// Whether or not the track is still published. + /// + /// true if the track is published; false otherwise. + public bool IsPublished() + { + using var request = FFIBridge.Instance.NewRequest(); + var isPublishedReq = request.request; + isPublishedReq.TrackHandle = (ulong)_handle.DangerousGetHandle(); + + using var response = request.Send(); + FfiResponse res = response; + return res.RemoteDataTrackIsPublished.IsPublished; + } + } + + /// + /// An active subscription to a remote data track. + /// + /// + /// Use in a coroutine loop to receive frames: + /// + /// while (!subscription.IsEos) + /// { + /// var frameInstruction = subscription.ReadFrame(); + /// yield return frameInstruction; + /// if (frameInstruction.IsCurrentReadDone) + /// { + /// ProcessFrame(frameInstruction.Frame); + /// } + /// } + /// + /// Calling or dropping the subscription unsubscribes from the track. + /// + public sealed class DataTrackSubscription + { + private readonly FfiHandle _handle; + private readonly ulong _handleId; + private ReadFrameInstruction _currentInstruction; + private bool _closed; + + internal DataTrackSubscription(OwnedDataTrackSubscription owned) + { + _handle = FfiHandle.FromOwnedHandle(owned.Handle); + _handleId = owned.Handle.Id; + FfiClient.Instance.DataTrackSubscriptionEventReceived += OnSubscriptionEvent; + } + + /// + /// True if the subscription has ended (end of stream). + /// + public bool IsEos { get; private set; } + + /// + /// Prepares to read the next frame from the subscription. + /// + /// + /// A that completes when a frame is received + /// or the subscription ends. + /// + public ReadFrameInstruction ReadFrame() + { + _currentInstruction = new ReadFrameInstruction(); + + using var request = FFIBridge.Instance.NewRequest(); + request.request.SubscriptionHandle = _handleId; + using var response = request.Send(); + + return _currentInstruction; + } + + private void OnSubscriptionEvent(DataTrackSubscriptionEvent callback) + { + if (callback.SubscriptionHandle != _handleId) + return; + + switch (callback.DetailCase) + { + case DataTrackSubscriptionEvent.DetailOneofCase.FrameReceived: + _currentInstruction?.SetFrame(new DataTrackFrame(callback.FrameReceived.Frame)); + break; + case DataTrackSubscriptionEvent.DetailOneofCase.Eos: + SubscribeDataTrackError error = null; + if (callback.Eos.HasError) + error = new SubscribeDataTrackError(callback.Eos.Error); + IsEos = true; + _currentInstruction?.SetEos(error); + Cleanup(); + break; + } + } + + /// + /// Explicitly close the subscription and unsubscribe from the track. + /// + public void Close() + { + if (_closed) return; + Cleanup(); + _handle.Dispose(); + } + + private void Cleanup() + { + if (_closed) return; + _closed = true; + FfiClient.Instance.DataTrackSubscriptionEventReceived -= OnSubscriptionEvent; + } + + /// + /// YieldInstruction for reading a single frame from a . + /// + /// + /// Usage: while is false (i.e. the subscription has not ended), + /// call , yield the instruction, + /// then check and access . + /// + public sealed class ReadFrameInstruction : CustomYieldInstruction + { + private DataTrackFrame _frame; + + internal ReadFrameInstruction() { } + + /// + /// True if the subscription has ended (end of stream). + /// + public bool IsEos { get; private set; } + + /// + /// True if a frame has been received for the current read. + /// + public bool IsCurrentReadDone { get; private set; } + + public override bool keepWaiting => !IsCurrentReadDone && !IsEos; + + internal void SetFrame(DataTrackFrame frame) + { + _frame = frame; + IsCurrentReadDone = true; + } + + internal void SetEos(SubscribeDataTrackError error = null) + { + Error = error; + IsEos = true; + } + + /// + /// If the track could not be subscribed to, a desciption of the error. + /// Null if the stream ended normally (i.e., due to the track being unpublished). + /// + public SubscribeDataTrackError Error { get; private set; } + + /// + /// The received data track frame. + /// + public DataTrackFrame Frame => _frame; + } + } +} diff --git a/Runtime/Scripts/DataTrack.cs.meta b/Runtime/Scripts/DataTrack.cs.meta new file mode 100644 index 00000000..d3602372 --- /dev/null +++ b/Runtime/Scripts/DataTrack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa5b8cb768085410a8bd45eeb569c2ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Internal/FFIClient.cs b/Runtime/Scripts/Internal/FFIClient.cs index 5f83ee7b..938a4f62 100644 --- a/Runtime/Scripts/Internal/FFIClient.cs +++ b/Runtime/Scripts/Internal/FFIClient.cs @@ -61,6 +61,9 @@ internal sealed class FfiClient : IFFIClient public event ByteStreamReaderEventReceivedDelegate? ByteStreamReaderEventReceived; public event TextStreamReaderEventReceivedDelegate? TextStreamReaderEventReceived; + // Data Track + public event DataTrackSubscriptionEventReceivedDelegate? DataTrackSubscriptionEventReceived; + public FfiClient() : this(Pools.NewFfiResponsePool(), new ArrayMemoryPool()) { } @@ -331,6 +334,10 @@ static unsafe void FFICallback(UIntPtr data, UIntPtr size) case FfiEvent.MessageOneofCase.TextStreamReaderEvent: Instance.TextStreamReaderEventReceived?.Invoke(r.TextStreamReaderEvent!); break; + // Data Track + case FfiEvent.MessageOneofCase.DataTrackSubscriptionEvent: + Instance.DataTrackSubscriptionEventReceived?.Invoke(r.DataTrackSubscriptionEvent!); + break; case FfiEvent.MessageOneofCase.Panic: break; default: @@ -395,6 +402,7 @@ private bool TryDispatchPendingCallback(ulong requestAsyncId, FfiEvent ffiEvent) FfiEvent.MessageOneofCase.TextStreamWriterWrite => ffiEvent.TextStreamWriterWrite?.AsyncId, FfiEvent.MessageOneofCase.TextStreamWriterClose => ffiEvent.TextStreamWriterClose?.AsyncId, FfiEvent.MessageOneofCase.SendText => ffiEvent.SendText?.AsyncId, + FfiEvent.MessageOneofCase.PublishDataTrack => ffiEvent.PublishDataTrack?.AsyncId, _ => null, }; } diff --git a/Runtime/Scripts/Internal/FFIClients/FFIEvents.cs b/Runtime/Scripts/Internal/FFIClients/FFIEvents.cs index 94f0b1da..fd3f4389 100644 --- a/Runtime/Scripts/Internal/FFIClients/FFIEvents.cs +++ b/Runtime/Scripts/Internal/FFIClients/FFIEvents.cs @@ -70,4 +70,9 @@ namespace LiveKit.Internal internal delegate void ByteStreamReaderEventReceivedDelegate(ByteStreamReaderEvent e); internal delegate void TextStreamReaderEventReceivedDelegate(TextStreamReaderEvent e); + + // Data Track + internal delegate void PublishDataTrackReceivedDelegate(PublishDataTrackCallback e); + + internal delegate void DataTrackSubscriptionEventReceivedDelegate(DataTrackSubscriptionEvent e); } \ No newline at end of file diff --git a/Runtime/Scripts/Internal/FFIClients/FfiRequestExtensions.cs b/Runtime/Scripts/Internal/FFIClients/FfiRequestExtensions.cs index 5e1ef535..f7d3d2f7 100644 --- a/Runtime/Scripts/Internal/FFIClients/FfiRequestExtensions.cs +++ b/Runtime/Scripts/Internal/FFIClients/FfiRequestExtensions.cs @@ -211,6 +211,28 @@ public static void Inject(this FfiRequest ffiRequest, T request) case SetRemoteTrackPublicationQualityRequest setRemoteTrackPublicationQualityRequest: ffiRequest.SetRemoteTrackPublicationQuality = setRemoteTrackPublicationQualityRequest; break; + // Data Track + case PublishDataTrackRequest publishDataTrackRequest: + ffiRequest.PublishDataTrack = publishDataTrackRequest; + break; + case LocalDataTrackTryPushRequest localDataTrackTryPushRequest: + ffiRequest.LocalDataTrackTryPush = localDataTrackTryPushRequest; + break; + case LocalDataTrackUnpublishRequest localDataTrackUnpublishRequest: + ffiRequest.LocalDataTrackUnpublish = localDataTrackUnpublishRequest; + break; + case LocalDataTrackIsPublishedRequest localDataTrackIsPublishedRequest: + ffiRequest.LocalDataTrackIsPublished = localDataTrackIsPublishedRequest; + break; + case SubscribeDataTrackRequest subscribeDataTrackRequest: + ffiRequest.SubscribeDataTrack = subscribeDataTrackRequest; + break; + case RemoteDataTrackIsPublishedRequest remoteDataTrackIsPublishedRequest: + ffiRequest.RemoteDataTrackIsPublished = remoteDataTrackIsPublishedRequest; + break; + case DataTrackSubscriptionReadRequest dataTrackSubscriptionReadRequest: + ffiRequest.DataTrackSubscriptionRead = dataTrackSubscriptionReadRequest; + break; default: throw new Exception($"Unknown request type: {request?.GetType().FullName ?? "null"}"); } @@ -266,6 +288,16 @@ public static void EnsureClean(this FfiRequest request) || request.UnregisterRpcMethod != null || request.PerformRpc != null || request.RpcMethodInvocationResponse != null + || + + // Data Track + request.PublishDataTrack != null + || request.LocalDataTrackTryPush != null + || request.LocalDataTrackUnpublish != null + || request.LocalDataTrackIsPublished != null + || request.SubscribeDataTrack != null + || request.RemoteDataTrackIsPublished != null + || request.DataTrackSubscriptionRead != null ) { throw new InvalidOperationException("Request is not cleared"); @@ -322,6 +354,16 @@ public static void EnsureClean(this FfiResponse response) || response.UnregisterRpcMethod != null || response.PerformRpc != null || response.RpcMethodInvocationResponse != null + || + + // Data Track + response.PublishDataTrack != null + || response.LocalDataTrackTryPush != null + || response.LocalDataTrackUnpublish != null + || response.LocalDataTrackIsPublished != null + || response.SubscribeDataTrack != null + || response.RemoteDataTrackIsPublished != null + || response.DataTrackSubscriptionRead != null ) { throw new InvalidOperationException("Response is not cleared: "); diff --git a/Runtime/Scripts/Participant.cs b/Runtime/Scripts/Participant.cs index a9a71943..81a61cc8 100644 --- a/Runtime/Scripts/Participant.cs +++ b/Runtime/Scripts/Participant.cs @@ -541,6 +541,47 @@ public StreamTextInstruction StreamText(string topic) var options = new StreamTextOptions { Topic = topic }; return StreamText(options); } + + /// + /// Publishes a data track. + /// + /// Options for the data track, including the track name. + /// + /// A that completes when the track is published or errors. + /// Check and access + /// to get the published track. + /// Use to send data frames on the track. + /// + public PublishDataTrackInstruction PublishDataTrack(DataTrackOptions options) + { + using var request = FFIBridge.Instance.NewRequest(); + var publishReq = request.request; + publishReq.LocalParticipantHandle = (ulong)Handle.DangerousGetHandle(); + publishReq.Options = new Proto.DataTrackOptions { Name = options.Name }; + + var instruction = new PublishDataTrackInstruction(request.RequestAsyncId); + using var response = request.Send(); + return instruction; + } + + /// + /// Publishes a data track. + /// + /// The track name used to identify the track to other participants. + /// Must not be empty and must be unique per publisher. + /// + /// Use the overload to set additional options. + /// + /// + /// A that completes when the track is published or errors. + /// Check and access + /// to get the published track. + /// Use to send data frames on the track. + /// + public PublishDataTrackInstruction PublishDataTrack(string name) + { + return PublishDataTrack(new DataTrackOptions(name)); + } } public sealed class RemoteParticipant : Participant @@ -973,4 +1014,63 @@ public ByteStreamWriter Writer public StreamError Error { get; private set; } } + + /// + /// YieldInstruction for publishing a data track. Returned by . + /// + /// + /// Access after checking . + /// + public sealed class PublishDataTrackInstruction : YieldInstruction + { + private ulong _asyncId; + private LocalDataTrack _track; + + internal PublishDataTrackInstruction(ulong asyncId) + { + _asyncId = asyncId; + FfiClient.Instance.RegisterPendingCallback(asyncId, static e => e.PublishDataTrack, OnPublishDataTrack, OnCanceled); + } + + internal void OnPublishDataTrack(PublishDataTrackCallback e) + { + if (e.AsyncId != _asyncId) + return; + + switch (e.ResultCase) + { + case PublishDataTrackCallback.ResultOneofCase.Error: + Error = new PublishDataTrackError(e.Error); + IsError = true; + break; + case PublishDataTrackCallback.ResultOneofCase.Track: + _track = new LocalDataTrack(e.Track); + break; + } + IsDone = true; + } + + void OnCanceled() + { + Error = new PublishDataTrackError("Canceled"); + IsError = true; + IsDone = true; + } + + /// + /// The published data track. Use to send + /// data frames on the track. + /// + /// Thrown if the publish operation failed. + public LocalDataTrack Track + { + get + { + if (IsError) throw Error; + return _track; + } + } + + public PublishDataTrackError Error { get; private set; } + } } diff --git a/Runtime/Scripts/Proto/DataTrack.cs b/Runtime/Scripts/Proto/DataTrack.cs new file mode 100644 index 00000000..1e66d79c --- /dev/null +++ b/Runtime/Scripts/Proto/DataTrack.cs @@ -0,0 +1,6157 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: data_track.proto +// +#pragma warning disable 1591, 0612, 3021, 8981 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace LiveKit.Proto { + + /// Holder for reflection information generated from data_track.proto + public static partial class DataTrackReflection { + + #region Descriptor + /// File descriptor for data_track.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static DataTrackReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "ChBkYXRhX3RyYWNrLnByb3RvEg1saXZla2l0LnByb3RvGgxoYW5kbGUucHJv", + "dG8iPQoNRGF0YVRyYWNrSW5mbxIMCgRuYW1lGAEgAigJEgsKA3NpZBgCIAIo", + "CRIRCgl1c2VzX2UyZWUYAyACKAgiOQoORGF0YVRyYWNrRnJhbWUSDwoHcGF5", + "bG9hZBgBIAIoDBIWCg51c2VyX3RpbWVzdGFtcBgCIAEoBCIgChBEYXRhVHJh", + "Y2tPcHRpb25zEgwKBG5hbWUYASACKAkihwEKF1B1Ymxpc2hEYXRhVHJhY2tS", + "ZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hhbmRsZRgBIAIoBBIwCgdv", + "cHRpb25zGAIgAigLMh8ubGl2ZWtpdC5wcm90by5EYXRhVHJhY2tPcHRpb25z", + "EhgKEHJlcXVlc3RfYXN5bmNfaWQYAyABKAQiLAoYUHVibGlzaERhdGFUcmFj", + "a1Jlc3BvbnNlEhAKCGFzeW5jX2lkGAEgAigEInwKGFB1Ymxpc2hEYXRhVHJh", + "Y2tDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBBIzCgV0cmFjaxgCIAEoCzIi", + "LmxpdmVraXQucHJvdG8uT3duZWRMb2NhbERhdGFUcmFja0gAEg8KBWVycm9y", + "GAMgASgJSABCCAoGcmVzdWx0InAKE093bmVkTG9jYWxEYXRhVHJhY2sSLQoG", + "aGFuZGxlGAEgAigLMh0ubGl2ZWtpdC5wcm90by5GZmlPd25lZEhhbmRsZRIq", + "CgRpbmZvGAIgAigLMhwubGl2ZWtpdC5wcm90by5EYXRhVHJhY2tJbmZvImIK", + "HExvY2FsRGF0YVRyYWNrVHJ5UHVzaFJlcXVlc3QSFAoMdHJhY2tfaGFuZGxl", + "GAEgAigEEiwKBWZyYW1lGAIgAigLMh0ubGl2ZWtpdC5wcm90by5EYXRhVHJh", + "Y2tGcmFtZSIuCh1Mb2NhbERhdGFUcmFja1RyeVB1c2hSZXNwb25zZRINCgVl", + "cnJvchgCIAEoCSI4CiBMb2NhbERhdGFUcmFja0lzUHVibGlzaGVkUmVxdWVz", + "dBIUCgx0cmFja19oYW5kbGUYASACKAQiOQohTG9jYWxEYXRhVHJhY2tJc1B1", + "Ymxpc2hlZFJlc3BvbnNlEhQKDGlzX3B1Ymxpc2hlZBgBIAIoCCI2Ch5Mb2Nh", + "bERhdGFUcmFja1VucHVibGlzaFJlcXVlc3QSFAoMdHJhY2tfaGFuZGxlGAEg", + "AigEIiEKH0xvY2FsRGF0YVRyYWNrVW5wdWJsaXNoUmVzcG9uc2UijQEKFE93", + "bmVkUmVtb3RlRGF0YVRyYWNrEi0KBmhhbmRsZRgBIAIoCzIdLmxpdmVraXQu", + "cHJvdG8uRmZpT3duZWRIYW5kbGUSKgoEaW5mbxgCIAIoCzIcLmxpdmVraXQu", + "cHJvdG8uRGF0YVRyYWNrSW5mbxIaChJwdWJsaXNoZXJfaWRlbnRpdHkYAyAC", + "KAkiSwoaT3duZWREYXRhVHJhY2tTdWJzY3JpcHRpb24SLQoGaGFuZGxlGAEg", + "AigLMh0ubGl2ZWtpdC5wcm90by5GZmlPd25lZEhhbmRsZSIwChlEYXRhVHJh", + "Y2tTdWJzY3JpYmVPcHRpb25zEhMKC2J1ZmZlcl9zaXplGAEgASgNIjkKIVJl", + "bW90ZURhdGFUcmFja0lzUHVibGlzaGVkUmVxdWVzdBIUCgx0cmFja19oYW5k", + "bGUYASACKAQiOgoiUmVtb3RlRGF0YVRyYWNrSXNQdWJsaXNoZWRSZXNwb25z", + "ZRIUCgxpc19wdWJsaXNoZWQYASACKAgibAoZU3Vic2NyaWJlRGF0YVRyYWNr", + "UmVxdWVzdBIUCgx0cmFja19oYW5kbGUYASACKAQSOQoHb3B0aW9ucxgCIAIo", + "CzIoLmxpdmVraXQucHJvdG8uRGF0YVRyYWNrU3Vic2NyaWJlT3B0aW9ucyJd", + "ChpTdWJzY3JpYmVEYXRhVHJhY2tSZXNwb25zZRI/CgxzdWJzY3JpcHRpb24Y", + "ASACKAsyKS5saXZla2l0LnByb3RvLk93bmVkRGF0YVRyYWNrU3Vic2NyaXB0", + "aW9uIj8KIERhdGFUcmFja1N1YnNjcmlwdGlvblJlYWRSZXF1ZXN0EhsKE3N1", + "YnNjcmlwdGlvbl9oYW5kbGUYASACKAQiIwohRGF0YVRyYWNrU3Vic2NyaXB0", + "aW9uUmVhZFJlc3BvbnNlIsgBChpEYXRhVHJhY2tTdWJzY3JpcHRpb25FdmVu", + "dBIbChNzdWJzY3JpcHRpb25faGFuZGxlGAEgAigEEksKDmZyYW1lX3JlY2Vp", + "dmVkGAIgASgLMjEubGl2ZWtpdC5wcm90by5EYXRhVHJhY2tTdWJzY3JpcHRp", + "b25GcmFtZVJlY2VpdmVkSAASNgoDZW9zGAMgASgLMicubGl2ZWtpdC5wcm90", + "by5EYXRhVHJhY2tTdWJzY3JpcHRpb25FT1NIAEIICgZkZXRhaWwiUgoiRGF0", + "YVRyYWNrU3Vic2NyaXB0aW9uRnJhbWVSZWNlaXZlZBIsCgVmcmFtZRgBIAIo", + "CzIdLmxpdmVraXQucHJvdG8uRGF0YVRyYWNrRnJhbWUiKQoYRGF0YVRyYWNr", + "U3Vic2NyaXB0aW9uRU9TEg0KBWVycm9yGAEgASgJQhCqAg1MaXZlS2l0LlBy", + "b3Rv")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { global::LiveKit.Proto.HandleReflection.Descriptor, }, + new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DataTrackInfo), global::LiveKit.Proto.DataTrackInfo.Parser, new[]{ "Name", "Sid", "UsesE2Ee" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DataTrackFrame), global::LiveKit.Proto.DataTrackFrame.Parser, new[]{ "Payload", "UserTimestamp" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DataTrackOptions), global::LiveKit.Proto.DataTrackOptions.Parser, new[]{ "Name" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.PublishDataTrackRequest), global::LiveKit.Proto.PublishDataTrackRequest.Parser, new[]{ "LocalParticipantHandle", "Options", "RequestAsyncId" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.PublishDataTrackResponse), global::LiveKit.Proto.PublishDataTrackResponse.Parser, new[]{ "AsyncId" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.PublishDataTrackCallback), global::LiveKit.Proto.PublishDataTrackCallback.Parser, new[]{ "AsyncId", "Track", "Error" }, new[]{ "Result" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedLocalDataTrack), global::LiveKit.Proto.OwnedLocalDataTrack.Parser, new[]{ "Handle", "Info" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LocalDataTrackTryPushRequest), global::LiveKit.Proto.LocalDataTrackTryPushRequest.Parser, new[]{ "TrackHandle", "Frame" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LocalDataTrackTryPushResponse), global::LiveKit.Proto.LocalDataTrackTryPushResponse.Parser, new[]{ "Error" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LocalDataTrackIsPublishedRequest), global::LiveKit.Proto.LocalDataTrackIsPublishedRequest.Parser, new[]{ "TrackHandle" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LocalDataTrackIsPublishedResponse), global::LiveKit.Proto.LocalDataTrackIsPublishedResponse.Parser, new[]{ "IsPublished" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LocalDataTrackUnpublishRequest), global::LiveKit.Proto.LocalDataTrackUnpublishRequest.Parser, new[]{ "TrackHandle" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LocalDataTrackUnpublishResponse), global::LiveKit.Proto.LocalDataTrackUnpublishResponse.Parser, null, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedRemoteDataTrack), global::LiveKit.Proto.OwnedRemoteDataTrack.Parser, new[]{ "Handle", "Info", "PublisherIdentity" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedDataTrackSubscription), global::LiveKit.Proto.OwnedDataTrackSubscription.Parser, new[]{ "Handle" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DataTrackSubscribeOptions), global::LiveKit.Proto.DataTrackSubscribeOptions.Parser, new[]{ "BufferSize" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.RemoteDataTrackIsPublishedRequest), global::LiveKit.Proto.RemoteDataTrackIsPublishedRequest.Parser, new[]{ "TrackHandle" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.RemoteDataTrackIsPublishedResponse), global::LiveKit.Proto.RemoteDataTrackIsPublishedResponse.Parser, new[]{ "IsPublished" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.SubscribeDataTrackRequest), global::LiveKit.Proto.SubscribeDataTrackRequest.Parser, new[]{ "TrackHandle", "Options" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.SubscribeDataTrackResponse), global::LiveKit.Proto.SubscribeDataTrackResponse.Parser, new[]{ "Subscription" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DataTrackSubscriptionReadRequest), global::LiveKit.Proto.DataTrackSubscriptionReadRequest.Parser, new[]{ "SubscriptionHandle" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DataTrackSubscriptionReadResponse), global::LiveKit.Proto.DataTrackSubscriptionReadResponse.Parser, null, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DataTrackSubscriptionEvent), global::LiveKit.Proto.DataTrackSubscriptionEvent.Parser, new[]{ "SubscriptionHandle", "FrameReceived", "Eos" }, new[]{ "Detail" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DataTrackSubscriptionFrameReceived), global::LiveKit.Proto.DataTrackSubscriptionFrameReceived.Parser, new[]{ "Frame" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DataTrackSubscriptionEOS), global::LiveKit.Proto.DataTrackSubscriptionEOS.Parser, new[]{ "Error" }, null, null, null, null) + })); + } + #endregion + + } + #region Messages + /// + /// Information about a published data track. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class DataTrackInfo : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DataTrackInfo()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackInfo() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackInfo(DataTrackInfo other) : this() { + _hasBits0 = other._hasBits0; + name_ = other.name_; + sid_ = other.sid_; + usesE2Ee_ = other.usesE2Ee_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackInfo Clone() { + return new DataTrackInfo(this); + } + + /// Field number for the "name" field. + public const int NameFieldNumber = 1; + private readonly static string NameDefaultValue = ""; + + private string name_; + /// + /// Name of the track assigned by the publisher. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Name { + get { return name_ ?? NameDefaultValue; } + set { + name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "name" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasName { + get { return name_ != null; } + } + /// Clears the value of the "name" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearName() { + name_ = null; + } + + /// Field number for the "sid" field. + public const int SidFieldNumber = 2; + private readonly static string SidDefaultValue = ""; + + private string sid_; + /// + /// SFU-assigned track identifier. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Sid { + get { return sid_ ?? SidDefaultValue; } + set { + sid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "sid" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasSid { + get { return sid_ != null; } + } + /// Clears the value of the "sid" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearSid() { + sid_ = null; + } + + /// Field number for the "uses_e2ee" field. + public const int UsesE2EeFieldNumber = 3; + private readonly static bool UsesE2EeDefaultValue = false; + + private bool usesE2Ee_; + /// + /// Whether or not frames sent on the track use end-to-end encryption. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool UsesE2Ee { + get { if ((_hasBits0 & 1) != 0) { return usesE2Ee_; } else { return UsesE2EeDefaultValue; } } + set { + _hasBits0 |= 1; + usesE2Ee_ = value; + } + } + /// Gets whether the "uses_e2ee" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasUsesE2Ee { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "uses_e2ee" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearUsesE2Ee() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DataTrackInfo); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DataTrackInfo other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Name != other.Name) return false; + if (Sid != other.Sid) return false; + if (UsesE2Ee != other.UsesE2Ee) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasName) hash ^= Name.GetHashCode(); + if (HasSid) hash ^= Sid.GetHashCode(); + if (HasUsesE2Ee) hash ^= UsesE2Ee.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasName) { + output.WriteRawTag(10); + output.WriteString(Name); + } + if (HasSid) { + output.WriteRawTag(18); + output.WriteString(Sid); + } + if (HasUsesE2Ee) { + output.WriteRawTag(24); + output.WriteBool(UsesE2Ee); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasName) { + output.WriteRawTag(10); + output.WriteString(Name); + } + if (HasSid) { + output.WriteRawTag(18); + output.WriteString(Sid); + } + if (HasUsesE2Ee) { + output.WriteRawTag(24); + output.WriteBool(UsesE2Ee); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasName) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); + } + if (HasSid) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Sid); + } + if (HasUsesE2Ee) { + size += 1 + 1; + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DataTrackInfo other) { + if (other == null) { + return; + } + if (other.HasName) { + Name = other.Name; + } + if (other.HasSid) { + Sid = other.Sid; + } + if (other.HasUsesE2Ee) { + UsesE2Ee = other.UsesE2Ee; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Name = input.ReadString(); + break; + } + case 18: { + Sid = input.ReadString(); + break; + } + case 24: { + UsesE2Ee = input.ReadBool(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Name = input.ReadString(); + break; + } + case 18: { + Sid = input.ReadString(); + break; + } + case 24: { + UsesE2Ee = input.ReadBool(); + break; + } + } + } + } + #endif + + } + + /// + /// A frame published on a data track. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class DataTrackFrame : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DataTrackFrame()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[1]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackFrame() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackFrame(DataTrackFrame other) : this() { + _hasBits0 = other._hasBits0; + payload_ = other.payload_; + userTimestamp_ = other.userTimestamp_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackFrame Clone() { + return new DataTrackFrame(this); + } + + /// Field number for the "payload" field. + public const int PayloadFieldNumber = 1; + private readonly static pb::ByteString PayloadDefaultValue = pb::ByteString.Empty; + + private pb::ByteString payload_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pb::ByteString Payload { + get { return payload_ ?? PayloadDefaultValue; } + set { + payload_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "payload" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPayload { + get { return payload_ != null; } + } + /// Clears the value of the "payload" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPayload() { + payload_ = null; + } + + /// Field number for the "user_timestamp" field. + public const int UserTimestampFieldNumber = 2; + private readonly static ulong UserTimestampDefaultValue = 0UL; + + private ulong userTimestamp_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong UserTimestamp { + get { if ((_hasBits0 & 1) != 0) { return userTimestamp_; } else { return UserTimestampDefaultValue; } } + set { + _hasBits0 |= 1; + userTimestamp_ = value; + } + } + /// Gets whether the "user_timestamp" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasUserTimestamp { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "user_timestamp" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearUserTimestamp() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DataTrackFrame); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DataTrackFrame other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Payload != other.Payload) return false; + if (UserTimestamp != other.UserTimestamp) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasPayload) hash ^= Payload.GetHashCode(); + if (HasUserTimestamp) hash ^= UserTimestamp.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasPayload) { + output.WriteRawTag(10); + output.WriteBytes(Payload); + } + if (HasUserTimestamp) { + output.WriteRawTag(16); + output.WriteUInt64(UserTimestamp); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasPayload) { + output.WriteRawTag(10); + output.WriteBytes(Payload); + } + if (HasUserTimestamp) { + output.WriteRawTag(16); + output.WriteUInt64(UserTimestamp); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasPayload) { + size += 1 + pb::CodedOutputStream.ComputeBytesSize(Payload); + } + if (HasUserTimestamp) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(UserTimestamp); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DataTrackFrame other) { + if (other == null) { + return; + } + if (other.HasPayload) { + Payload = other.Payload; + } + if (other.HasUserTimestamp) { + UserTimestamp = other.UserTimestamp; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Payload = input.ReadBytes(); + break; + } + case 16: { + UserTimestamp = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Payload = input.ReadBytes(); + break; + } + case 16: { + UserTimestamp = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + /// + /// Options for publishing a data track. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class DataTrackOptions : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DataTrackOptions()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[2]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackOptions() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackOptions(DataTrackOptions other) : this() { + name_ = other.name_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackOptions Clone() { + return new DataTrackOptions(this); + } + + /// Field number for the "name" field. + public const int NameFieldNumber = 1; + private readonly static string NameDefaultValue = ""; + + private string name_; + /// + /// Track name used to identify the track to other participants. + /// + /// Must not be empty and must be unique per publisher. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Name { + get { return name_ ?? NameDefaultValue; } + set { + name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "name" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasName { + get { return name_ != null; } + } + /// Clears the value of the "name" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearName() { + name_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DataTrackOptions); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DataTrackOptions other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Name != other.Name) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasName) hash ^= Name.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasName) { + output.WriteRawTag(10); + output.WriteString(Name); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasName) { + output.WriteRawTag(10); + output.WriteString(Name); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasName) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DataTrackOptions other) { + if (other == null) { + return; + } + if (other.HasName) { + Name = other.Name; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Name = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Name = input.ReadString(); + break; + } + } + } + } + #endif + + } + + /// + /// Publish a data track + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class PublishDataTrackRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishDataTrackRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[3]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public PublishDataTrackRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public PublishDataTrackRequest(PublishDataTrackRequest other) : this() { + _hasBits0 = other._hasBits0; + localParticipantHandle_ = other.localParticipantHandle_; + options_ = other.options_ != null ? other.options_.Clone() : null; + requestAsyncId_ = other.requestAsyncId_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public PublishDataTrackRequest Clone() { + return new PublishDataTrackRequest(this); + } + + /// Field number for the "local_participant_handle" field. + public const int LocalParticipantHandleFieldNumber = 1; + private readonly static ulong LocalParticipantHandleDefaultValue = 0UL; + + private ulong localParticipantHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong LocalParticipantHandle { + get { if ((_hasBits0 & 1) != 0) { return localParticipantHandle_; } else { return LocalParticipantHandleDefaultValue; } } + set { + _hasBits0 |= 1; + localParticipantHandle_ = value; + } + } + /// Gets whether the "local_participant_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLocalParticipantHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "local_participant_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLocalParticipantHandle() { + _hasBits0 &= ~1; + } + + /// Field number for the "options" field. + public const int OptionsFieldNumber = 2; + private global::LiveKit.Proto.DataTrackOptions options_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackOptions Options { + get { return options_; } + set { + options_ = value; + } + } + + /// Field number for the "request_async_id" field. + public const int RequestAsyncIdFieldNumber = 3; + private readonly static ulong RequestAsyncIdDefaultValue = 0UL; + + private ulong requestAsyncId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong RequestAsyncId { + get { if ((_hasBits0 & 2) != 0) { return requestAsyncId_; } else { return RequestAsyncIdDefaultValue; } } + set { + _hasBits0 |= 2; + requestAsyncId_ = value; + } + } + /// Gets whether the "request_async_id" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasRequestAsyncId { + get { return (_hasBits0 & 2) != 0; } + } + /// Clears the value of the "request_async_id" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearRequestAsyncId() { + _hasBits0 &= ~2; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as PublishDataTrackRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(PublishDataTrackRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (LocalParticipantHandle != other.LocalParticipantHandle) return false; + if (!object.Equals(Options, other.Options)) return false; + if (RequestAsyncId != other.RequestAsyncId) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasLocalParticipantHandle) hash ^= LocalParticipantHandle.GetHashCode(); + if (options_ != null) hash ^= Options.GetHashCode(); + if (HasRequestAsyncId) hash ^= RequestAsyncId.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasLocalParticipantHandle) { + output.WriteRawTag(8); + output.WriteUInt64(LocalParticipantHandle); + } + if (options_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Options); + } + if (HasRequestAsyncId) { + output.WriteRawTag(24); + output.WriteUInt64(RequestAsyncId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasLocalParticipantHandle) { + output.WriteRawTag(8); + output.WriteUInt64(LocalParticipantHandle); + } + if (options_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Options); + } + if (HasRequestAsyncId) { + output.WriteRawTag(24); + output.WriteUInt64(RequestAsyncId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasLocalParticipantHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(LocalParticipantHandle); + } + if (options_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); + } + if (HasRequestAsyncId) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(RequestAsyncId); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(PublishDataTrackRequest other) { + if (other == null) { + return; + } + if (other.HasLocalParticipantHandle) { + LocalParticipantHandle = other.LocalParticipantHandle; + } + if (other.options_ != null) { + if (options_ == null) { + Options = new global::LiveKit.Proto.DataTrackOptions(); + } + Options.MergeFrom(other.Options); + } + if (other.HasRequestAsyncId) { + RequestAsyncId = other.RequestAsyncId; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + LocalParticipantHandle = input.ReadUInt64(); + break; + } + case 18: { + if (options_ == null) { + Options = new global::LiveKit.Proto.DataTrackOptions(); + } + input.ReadMessage(Options); + break; + } + case 24: { + RequestAsyncId = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + LocalParticipantHandle = input.ReadUInt64(); + break; + } + case 18: { + if (options_ == null) { + Options = new global::LiveKit.Proto.DataTrackOptions(); + } + input.ReadMessage(Options); + break; + } + case 24: { + RequestAsyncId = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class PublishDataTrackResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishDataTrackResponse()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[4]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public PublishDataTrackResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public PublishDataTrackResponse(PublishDataTrackResponse other) : this() { + _hasBits0 = other._hasBits0; + asyncId_ = other.asyncId_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public PublishDataTrackResponse Clone() { + return new PublishDataTrackResponse(this); + } + + /// Field number for the "async_id" field. + public const int AsyncIdFieldNumber = 1; + private readonly static ulong AsyncIdDefaultValue = 0UL; + + private ulong asyncId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong AsyncId { + get { if ((_hasBits0 & 1) != 0) { return asyncId_; } else { return AsyncIdDefaultValue; } } + set { + _hasBits0 |= 1; + asyncId_ = value; + } + } + /// Gets whether the "async_id" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasAsyncId { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "async_id" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearAsyncId() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as PublishDataTrackResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(PublishDataTrackResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (AsyncId != other.AsyncId) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasAsyncId) hash ^= AsyncId.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasAsyncId) { + output.WriteRawTag(8); + output.WriteUInt64(AsyncId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasAsyncId) { + output.WriteRawTag(8); + output.WriteUInt64(AsyncId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasAsyncId) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(AsyncId); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(PublishDataTrackResponse other) { + if (other == null) { + return; + } + if (other.HasAsyncId) { + AsyncId = other.AsyncId; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + AsyncId = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + AsyncId = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class PublishDataTrackCallback : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishDataTrackCallback()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[5]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public PublishDataTrackCallback() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public PublishDataTrackCallback(PublishDataTrackCallback other) : this() { + _hasBits0 = other._hasBits0; + asyncId_ = other.asyncId_; + switch (other.ResultCase) { + case ResultOneofCase.Track: + Track = other.Track.Clone(); + break; + case ResultOneofCase.Error: + Error = other.Error; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public PublishDataTrackCallback Clone() { + return new PublishDataTrackCallback(this); + } + + /// Field number for the "async_id" field. + public const int AsyncIdFieldNumber = 1; + private readonly static ulong AsyncIdDefaultValue = 0UL; + + private ulong asyncId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong AsyncId { + get { if ((_hasBits0 & 1) != 0) { return asyncId_; } else { return AsyncIdDefaultValue; } } + set { + _hasBits0 |= 1; + asyncId_ = value; + } + } + /// Gets whether the "async_id" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasAsyncId { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "async_id" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearAsyncId() { + _hasBits0 &= ~1; + } + + /// Field number for the "track" field. + public const int TrackFieldNumber = 2; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.OwnedLocalDataTrack Track { + get { return resultCase_ == ResultOneofCase.Track ? (global::LiveKit.Proto.OwnedLocalDataTrack) result_ : null; } + set { + result_ = value; + resultCase_ = value == null ? ResultOneofCase.None : ResultOneofCase.Track; + } + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 3; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return HasError ? (string) result_ : ""; } + set { + result_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + resultCase_ = ResultOneofCase.Error; + } + } + /// Gets whether the "error" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasError { + get { return resultCase_ == ResultOneofCase.Error; } + } + /// Clears the value of the oneof if it's currently set to "error" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearError() { + if (HasError) { + ClearResult(); + } + } + + private object result_; + /// Enum of possible cases for the "result" oneof. + public enum ResultOneofCase { + None = 0, + Track = 2, + Error = 3, + } + private ResultOneofCase resultCase_ = ResultOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ResultOneofCase ResultCase { + get { return resultCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearResult() { + resultCase_ = ResultOneofCase.None; + result_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as PublishDataTrackCallback); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(PublishDataTrackCallback other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (AsyncId != other.AsyncId) return false; + if (!object.Equals(Track, other.Track)) return false; + if (Error != other.Error) return false; + if (ResultCase != other.ResultCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasAsyncId) hash ^= AsyncId.GetHashCode(); + if (resultCase_ == ResultOneofCase.Track) hash ^= Track.GetHashCode(); + if (HasError) hash ^= Error.GetHashCode(); + hash ^= (int) resultCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasAsyncId) { + output.WriteRawTag(8); + output.WriteUInt64(AsyncId); + } + if (resultCase_ == ResultOneofCase.Track) { + output.WriteRawTag(18); + output.WriteMessage(Track); + } + if (HasError) { + output.WriteRawTag(26); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasAsyncId) { + output.WriteRawTag(8); + output.WriteUInt64(AsyncId); + } + if (resultCase_ == ResultOneofCase.Track) { + output.WriteRawTag(18); + output.WriteMessage(Track); + } + if (HasError) { + output.WriteRawTag(26); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasAsyncId) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(AsyncId); + } + if (resultCase_ == ResultOneofCase.Track) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Track); + } + if (HasError) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(PublishDataTrackCallback other) { + if (other == null) { + return; + } + if (other.HasAsyncId) { + AsyncId = other.AsyncId; + } + switch (other.ResultCase) { + case ResultOneofCase.Track: + if (Track == null) { + Track = new global::LiveKit.Proto.OwnedLocalDataTrack(); + } + Track.MergeFrom(other.Track); + break; + case ResultOneofCase.Error: + Error = other.Error; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + AsyncId = input.ReadUInt64(); + break; + } + case 18: { + global::LiveKit.Proto.OwnedLocalDataTrack subBuilder = new global::LiveKit.Proto.OwnedLocalDataTrack(); + if (resultCase_ == ResultOneofCase.Track) { + subBuilder.MergeFrom(Track); + } + input.ReadMessage(subBuilder); + Track = subBuilder; + break; + } + case 26: { + Error = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + AsyncId = input.ReadUInt64(); + break; + } + case 18: { + global::LiveKit.Proto.OwnedLocalDataTrack subBuilder = new global::LiveKit.Proto.OwnedLocalDataTrack(); + if (resultCase_ == ResultOneofCase.Track) { + subBuilder.MergeFrom(Track); + } + input.ReadMessage(subBuilder); + Track = subBuilder; + break; + } + case 26: { + Error = input.ReadString(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class OwnedLocalDataTrack : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OwnedLocalDataTrack()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[6]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedLocalDataTrack() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedLocalDataTrack(OwnedLocalDataTrack other) : this() { + handle_ = other.handle_ != null ? other.handle_.Clone() : null; + info_ = other.info_ != null ? other.info_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedLocalDataTrack Clone() { + return new OwnedLocalDataTrack(this); + } + + /// Field number for the "handle" field. + public const int HandleFieldNumber = 1; + private global::LiveKit.Proto.FfiOwnedHandle handle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.FfiOwnedHandle Handle { + get { return handle_; } + set { + handle_ = value; + } + } + + /// Field number for the "info" field. + public const int InfoFieldNumber = 2; + private global::LiveKit.Proto.DataTrackInfo info_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackInfo Info { + get { return info_; } + set { + info_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as OwnedLocalDataTrack); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(OwnedLocalDataTrack other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Handle, other.Handle)) return false; + if (!object.Equals(Info, other.Info)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (handle_ != null) hash ^= Handle.GetHashCode(); + if (info_ != null) hash ^= Info.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (handle_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Handle); + } + if (info_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Info); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (handle_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Handle); + } + if (info_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Info); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (handle_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Handle); + } + if (info_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Info); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(OwnedLocalDataTrack other) { + if (other == null) { + return; + } + if (other.handle_ != null) { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + Handle.MergeFrom(other.Handle); + } + if (other.info_ != null) { + if (info_ == null) { + Info = new global::LiveKit.Proto.DataTrackInfo(); + } + Info.MergeFrom(other.Info); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + input.ReadMessage(Handle); + break; + } + case 18: { + if (info_ == null) { + Info = new global::LiveKit.Proto.DataTrackInfo(); + } + input.ReadMessage(Info); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + input.ReadMessage(Handle); + break; + } + case 18: { + if (info_ == null) { + Info = new global::LiveKit.Proto.DataTrackInfo(); + } + input.ReadMessage(Info); + break; + } + } + } + } + #endif + + } + + /// + /// Try pushing a frame to subscribers of the track. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class LocalDataTrackTryPushRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LocalDataTrackTryPushRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[7]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackTryPushRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackTryPushRequest(LocalDataTrackTryPushRequest other) : this() { + _hasBits0 = other._hasBits0; + trackHandle_ = other.trackHandle_; + frame_ = other.frame_ != null ? other.frame_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackTryPushRequest Clone() { + return new LocalDataTrackTryPushRequest(this); + } + + /// Field number for the "track_handle" field. + public const int TrackHandleFieldNumber = 1; + private readonly static ulong TrackHandleDefaultValue = 0UL; + + private ulong trackHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong TrackHandle { + get { if ((_hasBits0 & 1) != 0) { return trackHandle_; } else { return TrackHandleDefaultValue; } } + set { + _hasBits0 |= 1; + trackHandle_ = value; + } + } + /// Gets whether the "track_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasTrackHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "track_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearTrackHandle() { + _hasBits0 &= ~1; + } + + /// Field number for the "frame" field. + public const int FrameFieldNumber = 2; + private global::LiveKit.Proto.DataTrackFrame frame_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackFrame Frame { + get { return frame_; } + set { + frame_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as LocalDataTrackTryPushRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(LocalDataTrackTryPushRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (TrackHandle != other.TrackHandle) return false; + if (!object.Equals(Frame, other.Frame)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasTrackHandle) hash ^= TrackHandle.GetHashCode(); + if (frame_ != null) hash ^= Frame.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasTrackHandle) { + output.WriteRawTag(8); + output.WriteUInt64(TrackHandle); + } + if (frame_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Frame); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasTrackHandle) { + output.WriteRawTag(8); + output.WriteUInt64(TrackHandle); + } + if (frame_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Frame); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasTrackHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(TrackHandle); + } + if (frame_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Frame); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(LocalDataTrackTryPushRequest other) { + if (other == null) { + return; + } + if (other.HasTrackHandle) { + TrackHandle = other.TrackHandle; + } + if (other.frame_ != null) { + if (frame_ == null) { + Frame = new global::LiveKit.Proto.DataTrackFrame(); + } + Frame.MergeFrom(other.Frame); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + TrackHandle = input.ReadUInt64(); + break; + } + case 18: { + if (frame_ == null) { + Frame = new global::LiveKit.Proto.DataTrackFrame(); + } + input.ReadMessage(Frame); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + TrackHandle = input.ReadUInt64(); + break; + } + case 18: { + if (frame_ == null) { + Frame = new global::LiveKit.Proto.DataTrackFrame(); + } + input.ReadMessage(Frame); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class LocalDataTrackTryPushResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LocalDataTrackTryPushResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[8]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackTryPushResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackTryPushResponse(LocalDataTrackTryPushResponse other) : this() { + error_ = other.error_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackTryPushResponse Clone() { + return new LocalDataTrackTryPushResponse(this); + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 2; + private readonly static string ErrorDefaultValue = ""; + + private string error_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return error_ ?? ErrorDefaultValue; } + set { + error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "error" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasError { + get { return error_ != null; } + } + /// Clears the value of the "error" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearError() { + error_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as LocalDataTrackTryPushResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(LocalDataTrackTryPushResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Error != other.Error) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasError) hash ^= Error.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasError) { + output.WriteRawTag(18); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasError) { + output.WriteRawTag(18); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasError) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(LocalDataTrackTryPushResponse other) { + if (other == null) { + return; + } + if (other.HasError) { + Error = other.Error; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 18: { + Error = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 18: { + Error = input.ReadString(); + break; + } + } + } + } + #endif + + } + + /// + /// Checks if the track is still published. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class LocalDataTrackIsPublishedRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LocalDataTrackIsPublishedRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[9]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackIsPublishedRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackIsPublishedRequest(LocalDataTrackIsPublishedRequest other) : this() { + _hasBits0 = other._hasBits0; + trackHandle_ = other.trackHandle_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackIsPublishedRequest Clone() { + return new LocalDataTrackIsPublishedRequest(this); + } + + /// Field number for the "track_handle" field. + public const int TrackHandleFieldNumber = 1; + private readonly static ulong TrackHandleDefaultValue = 0UL; + + private ulong trackHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong TrackHandle { + get { if ((_hasBits0 & 1) != 0) { return trackHandle_; } else { return TrackHandleDefaultValue; } } + set { + _hasBits0 |= 1; + trackHandle_ = value; + } + } + /// Gets whether the "track_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasTrackHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "track_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearTrackHandle() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as LocalDataTrackIsPublishedRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(LocalDataTrackIsPublishedRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (TrackHandle != other.TrackHandle) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasTrackHandle) hash ^= TrackHandle.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasTrackHandle) { + output.WriteRawTag(8); + output.WriteUInt64(TrackHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasTrackHandle) { + output.WriteRawTag(8); + output.WriteUInt64(TrackHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasTrackHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(TrackHandle); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(LocalDataTrackIsPublishedRequest other) { + if (other == null) { + return; + } + if (other.HasTrackHandle) { + TrackHandle = other.TrackHandle; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + TrackHandle = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + TrackHandle = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class LocalDataTrackIsPublishedResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LocalDataTrackIsPublishedResponse()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[10]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackIsPublishedResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackIsPublishedResponse(LocalDataTrackIsPublishedResponse other) : this() { + _hasBits0 = other._hasBits0; + isPublished_ = other.isPublished_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackIsPublishedResponse Clone() { + return new LocalDataTrackIsPublishedResponse(this); + } + + /// Field number for the "is_published" field. + public const int IsPublishedFieldNumber = 1; + private readonly static bool IsPublishedDefaultValue = false; + + private bool isPublished_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool IsPublished { + get { if ((_hasBits0 & 1) != 0) { return isPublished_; } else { return IsPublishedDefaultValue; } } + set { + _hasBits0 |= 1; + isPublished_ = value; + } + } + /// Gets whether the "is_published" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIsPublished { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "is_published" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIsPublished() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as LocalDataTrackIsPublishedResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(LocalDataTrackIsPublishedResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (IsPublished != other.IsPublished) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasIsPublished) hash ^= IsPublished.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasIsPublished) { + output.WriteRawTag(8); + output.WriteBool(IsPublished); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasIsPublished) { + output.WriteRawTag(8); + output.WriteBool(IsPublished); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasIsPublished) { + size += 1 + 1; + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(LocalDataTrackIsPublishedResponse other) { + if (other == null) { + return; + } + if (other.HasIsPublished) { + IsPublished = other.IsPublished; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + IsPublished = input.ReadBool(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + IsPublished = input.ReadBool(); + break; + } + } + } + } + #endif + + } + + /// + /// Unpublishes the track. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class LocalDataTrackUnpublishRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LocalDataTrackUnpublishRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[11]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackUnpublishRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackUnpublishRequest(LocalDataTrackUnpublishRequest other) : this() { + _hasBits0 = other._hasBits0; + trackHandle_ = other.trackHandle_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackUnpublishRequest Clone() { + return new LocalDataTrackUnpublishRequest(this); + } + + /// Field number for the "track_handle" field. + public const int TrackHandleFieldNumber = 1; + private readonly static ulong TrackHandleDefaultValue = 0UL; + + private ulong trackHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong TrackHandle { + get { if ((_hasBits0 & 1) != 0) { return trackHandle_; } else { return TrackHandleDefaultValue; } } + set { + _hasBits0 |= 1; + trackHandle_ = value; + } + } + /// Gets whether the "track_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasTrackHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "track_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearTrackHandle() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as LocalDataTrackUnpublishRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(LocalDataTrackUnpublishRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (TrackHandle != other.TrackHandle) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasTrackHandle) hash ^= TrackHandle.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasTrackHandle) { + output.WriteRawTag(8); + output.WriteUInt64(TrackHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasTrackHandle) { + output.WriteRawTag(8); + output.WriteUInt64(TrackHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasTrackHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(TrackHandle); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(LocalDataTrackUnpublishRequest other) { + if (other == null) { + return; + } + if (other.HasTrackHandle) { + TrackHandle = other.TrackHandle; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + TrackHandle = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + TrackHandle = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class LocalDataTrackUnpublishResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LocalDataTrackUnpublishResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[12]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackUnpublishResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackUnpublishResponse(LocalDataTrackUnpublishResponse other) : this() { + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LocalDataTrackUnpublishResponse Clone() { + return new LocalDataTrackUnpublishResponse(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as LocalDataTrackUnpublishResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(LocalDataTrackUnpublishResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(LocalDataTrackUnpublishResponse other) { + if (other == null) { + return; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class OwnedRemoteDataTrack : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OwnedRemoteDataTrack()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[13]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedRemoteDataTrack() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedRemoteDataTrack(OwnedRemoteDataTrack other) : this() { + handle_ = other.handle_ != null ? other.handle_.Clone() : null; + info_ = other.info_ != null ? other.info_.Clone() : null; + publisherIdentity_ = other.publisherIdentity_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedRemoteDataTrack Clone() { + return new OwnedRemoteDataTrack(this); + } + + /// Field number for the "handle" field. + public const int HandleFieldNumber = 1; + private global::LiveKit.Proto.FfiOwnedHandle handle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.FfiOwnedHandle Handle { + get { return handle_; } + set { + handle_ = value; + } + } + + /// Field number for the "info" field. + public const int InfoFieldNumber = 2; + private global::LiveKit.Proto.DataTrackInfo info_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackInfo Info { + get { return info_; } + set { + info_ = value; + } + } + + /// Field number for the "publisher_identity" field. + public const int PublisherIdentityFieldNumber = 3; + private readonly static string PublisherIdentityDefaultValue = ""; + + private string publisherIdentity_; + /// + /// Identity of the remote participant who published the track. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string PublisherIdentity { + get { return publisherIdentity_ ?? PublisherIdentityDefaultValue; } + set { + publisherIdentity_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "publisher_identity" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPublisherIdentity { + get { return publisherIdentity_ != null; } + } + /// Clears the value of the "publisher_identity" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPublisherIdentity() { + publisherIdentity_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as OwnedRemoteDataTrack); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(OwnedRemoteDataTrack other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Handle, other.Handle)) return false; + if (!object.Equals(Info, other.Info)) return false; + if (PublisherIdentity != other.PublisherIdentity) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (handle_ != null) hash ^= Handle.GetHashCode(); + if (info_ != null) hash ^= Info.GetHashCode(); + if (HasPublisherIdentity) hash ^= PublisherIdentity.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (handle_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Handle); + } + if (info_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Info); + } + if (HasPublisherIdentity) { + output.WriteRawTag(26); + output.WriteString(PublisherIdentity); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (handle_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Handle); + } + if (info_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Info); + } + if (HasPublisherIdentity) { + output.WriteRawTag(26); + output.WriteString(PublisherIdentity); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (handle_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Handle); + } + if (info_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Info); + } + if (HasPublisherIdentity) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(PublisherIdentity); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(OwnedRemoteDataTrack other) { + if (other == null) { + return; + } + if (other.handle_ != null) { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + Handle.MergeFrom(other.Handle); + } + if (other.info_ != null) { + if (info_ == null) { + Info = new global::LiveKit.Proto.DataTrackInfo(); + } + Info.MergeFrom(other.Info); + } + if (other.HasPublisherIdentity) { + PublisherIdentity = other.PublisherIdentity; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + input.ReadMessage(Handle); + break; + } + case 18: { + if (info_ == null) { + Info = new global::LiveKit.Proto.DataTrackInfo(); + } + input.ReadMessage(Info); + break; + } + case 26: { + PublisherIdentity = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + input.ReadMessage(Handle); + break; + } + case 18: { + if (info_ == null) { + Info = new global::LiveKit.Proto.DataTrackInfo(); + } + input.ReadMessage(Info); + break; + } + case 26: { + PublisherIdentity = input.ReadString(); + break; + } + } + } + } + #endif + + } + + /// + /// Handle to an active data track subscription. + /// + /// Dropping the handle will unsubscribe from the track. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class OwnedDataTrackSubscription : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OwnedDataTrackSubscription()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[14]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedDataTrackSubscription() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedDataTrackSubscription(OwnedDataTrackSubscription other) : this() { + handle_ = other.handle_ != null ? other.handle_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedDataTrackSubscription Clone() { + return new OwnedDataTrackSubscription(this); + } + + /// Field number for the "handle" field. + public const int HandleFieldNumber = 1; + private global::LiveKit.Proto.FfiOwnedHandle handle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.FfiOwnedHandle Handle { + get { return handle_; } + set { + handle_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as OwnedDataTrackSubscription); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(OwnedDataTrackSubscription other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Handle, other.Handle)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (handle_ != null) hash ^= Handle.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (handle_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Handle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (handle_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Handle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (handle_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Handle); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(OwnedDataTrackSubscription other) { + if (other == null) { + return; + } + if (other.handle_ != null) { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + Handle.MergeFrom(other.Handle); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + input.ReadMessage(Handle); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + input.ReadMessage(Handle); + break; + } + } + } + } + #endif + + } + + /// + /// Reserved for future subscription options. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class DataTrackSubscribeOptions : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DataTrackSubscribeOptions()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[15]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscribeOptions() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscribeOptions(DataTrackSubscribeOptions other) : this() { + _hasBits0 = other._hasBits0; + bufferSize_ = other.bufferSize_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscribeOptions Clone() { + return new DataTrackSubscribeOptions(this); + } + + /// Field number for the "buffer_size" field. + public const int BufferSizeFieldNumber = 1; + private readonly static uint BufferSizeDefaultValue = 0; + + private uint bufferSize_; + /// + /// Maximum number of frames to buffer internally. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint BufferSize { + get { if ((_hasBits0 & 1) != 0) { return bufferSize_; } else { return BufferSizeDefaultValue; } } + set { + _hasBits0 |= 1; + bufferSize_ = value; + } + } + /// Gets whether the "buffer_size" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasBufferSize { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "buffer_size" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearBufferSize() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DataTrackSubscribeOptions); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DataTrackSubscribeOptions other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (BufferSize != other.BufferSize) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasBufferSize) hash ^= BufferSize.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasBufferSize) { + output.WriteRawTag(8); + output.WriteUInt32(BufferSize); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasBufferSize) { + output.WriteRawTag(8); + output.WriteUInt32(BufferSize); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasBufferSize) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(BufferSize); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DataTrackSubscribeOptions other) { + if (other == null) { + return; + } + if (other.HasBufferSize) { + BufferSize = other.BufferSize; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + BufferSize = input.ReadUInt32(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + BufferSize = input.ReadUInt32(); + break; + } + } + } + } + #endif + + } + + /// + /// Checks if the track is still published. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class RemoteDataTrackIsPublishedRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RemoteDataTrackIsPublishedRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[16]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public RemoteDataTrackIsPublishedRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public RemoteDataTrackIsPublishedRequest(RemoteDataTrackIsPublishedRequest other) : this() { + _hasBits0 = other._hasBits0; + trackHandle_ = other.trackHandle_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public RemoteDataTrackIsPublishedRequest Clone() { + return new RemoteDataTrackIsPublishedRequest(this); + } + + /// Field number for the "track_handle" field. + public const int TrackHandleFieldNumber = 1; + private readonly static ulong TrackHandleDefaultValue = 0UL; + + private ulong trackHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong TrackHandle { + get { if ((_hasBits0 & 1) != 0) { return trackHandle_; } else { return TrackHandleDefaultValue; } } + set { + _hasBits0 |= 1; + trackHandle_ = value; + } + } + /// Gets whether the "track_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasTrackHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "track_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearTrackHandle() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as RemoteDataTrackIsPublishedRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(RemoteDataTrackIsPublishedRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (TrackHandle != other.TrackHandle) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasTrackHandle) hash ^= TrackHandle.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasTrackHandle) { + output.WriteRawTag(8); + output.WriteUInt64(TrackHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasTrackHandle) { + output.WriteRawTag(8); + output.WriteUInt64(TrackHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasTrackHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(TrackHandle); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(RemoteDataTrackIsPublishedRequest other) { + if (other == null) { + return; + } + if (other.HasTrackHandle) { + TrackHandle = other.TrackHandle; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + TrackHandle = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + TrackHandle = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class RemoteDataTrackIsPublishedResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RemoteDataTrackIsPublishedResponse()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[17]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public RemoteDataTrackIsPublishedResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public RemoteDataTrackIsPublishedResponse(RemoteDataTrackIsPublishedResponse other) : this() { + _hasBits0 = other._hasBits0; + isPublished_ = other.isPublished_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public RemoteDataTrackIsPublishedResponse Clone() { + return new RemoteDataTrackIsPublishedResponse(this); + } + + /// Field number for the "is_published" field. + public const int IsPublishedFieldNumber = 1; + private readonly static bool IsPublishedDefaultValue = false; + + private bool isPublished_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool IsPublished { + get { if ((_hasBits0 & 1) != 0) { return isPublished_; } else { return IsPublishedDefaultValue; } } + set { + _hasBits0 |= 1; + isPublished_ = value; + } + } + /// Gets whether the "is_published" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIsPublished { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "is_published" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIsPublished() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as RemoteDataTrackIsPublishedResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(RemoteDataTrackIsPublishedResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (IsPublished != other.IsPublished) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasIsPublished) hash ^= IsPublished.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasIsPublished) { + output.WriteRawTag(8); + output.WriteBool(IsPublished); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasIsPublished) { + output.WriteRawTag(8); + output.WriteBool(IsPublished); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasIsPublished) { + size += 1 + 1; + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(RemoteDataTrackIsPublishedResponse other) { + if (other == null) { + return; + } + if (other.HasIsPublished) { + IsPublished = other.IsPublished; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + IsPublished = input.ReadBool(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + IsPublished = input.ReadBool(); + break; + } + } + } + } + #endif + + } + + /// + /// Subscribe to a data track. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class SubscribeDataTrackRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SubscribeDataTrackRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[18]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SubscribeDataTrackRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SubscribeDataTrackRequest(SubscribeDataTrackRequest other) : this() { + _hasBits0 = other._hasBits0; + trackHandle_ = other.trackHandle_; + options_ = other.options_ != null ? other.options_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SubscribeDataTrackRequest Clone() { + return new SubscribeDataTrackRequest(this); + } + + /// Field number for the "track_handle" field. + public const int TrackHandleFieldNumber = 1; + private readonly static ulong TrackHandleDefaultValue = 0UL; + + private ulong trackHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong TrackHandle { + get { if ((_hasBits0 & 1) != 0) { return trackHandle_; } else { return TrackHandleDefaultValue; } } + set { + _hasBits0 |= 1; + trackHandle_ = value; + } + } + /// Gets whether the "track_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasTrackHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "track_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearTrackHandle() { + _hasBits0 &= ~1; + } + + /// Field number for the "options" field. + public const int OptionsFieldNumber = 2; + private global::LiveKit.Proto.DataTrackSubscribeOptions options_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackSubscribeOptions Options { + get { return options_; } + set { + options_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SubscribeDataTrackRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SubscribeDataTrackRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (TrackHandle != other.TrackHandle) return false; + if (!object.Equals(Options, other.Options)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasTrackHandle) hash ^= TrackHandle.GetHashCode(); + if (options_ != null) hash ^= Options.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasTrackHandle) { + output.WriteRawTag(8); + output.WriteUInt64(TrackHandle); + } + if (options_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Options); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasTrackHandle) { + output.WriteRawTag(8); + output.WriteUInt64(TrackHandle); + } + if (options_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Options); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasTrackHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(TrackHandle); + } + if (options_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SubscribeDataTrackRequest other) { + if (other == null) { + return; + } + if (other.HasTrackHandle) { + TrackHandle = other.TrackHandle; + } + if (other.options_ != null) { + if (options_ == null) { + Options = new global::LiveKit.Proto.DataTrackSubscribeOptions(); + } + Options.MergeFrom(other.Options); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + TrackHandle = input.ReadUInt64(); + break; + } + case 18: { + if (options_ == null) { + Options = new global::LiveKit.Proto.DataTrackSubscribeOptions(); + } + input.ReadMessage(Options); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + TrackHandle = input.ReadUInt64(); + break; + } + case 18: { + if (options_ == null) { + Options = new global::LiveKit.Proto.DataTrackSubscribeOptions(); + } + input.ReadMessage(Options); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class SubscribeDataTrackResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SubscribeDataTrackResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[19]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SubscribeDataTrackResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SubscribeDataTrackResponse(SubscribeDataTrackResponse other) : this() { + subscription_ = other.subscription_ != null ? other.subscription_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SubscribeDataTrackResponse Clone() { + return new SubscribeDataTrackResponse(this); + } + + /// Field number for the "subscription" field. + public const int SubscriptionFieldNumber = 1; + private global::LiveKit.Proto.OwnedDataTrackSubscription subscription_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.OwnedDataTrackSubscription Subscription { + get { return subscription_; } + set { + subscription_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SubscribeDataTrackResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SubscribeDataTrackResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Subscription, other.Subscription)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (subscription_ != null) hash ^= Subscription.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (subscription_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Subscription); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (subscription_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Subscription); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (subscription_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Subscription); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SubscribeDataTrackResponse other) { + if (other == null) { + return; + } + if (other.subscription_ != null) { + if (subscription_ == null) { + Subscription = new global::LiveKit.Proto.OwnedDataTrackSubscription(); + } + Subscription.MergeFrom(other.Subscription); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + if (subscription_ == null) { + Subscription = new global::LiveKit.Proto.OwnedDataTrackSubscription(); + } + input.ReadMessage(Subscription); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + if (subscription_ == null) { + Subscription = new global::LiveKit.Proto.OwnedDataTrackSubscription(); + } + input.ReadMessage(Subscription); + break; + } + } + } + } + #endif + + } + + /// + /// Signal readiness to handle the next frame. + /// + /// This allows the client to put backpressure on the internal receive buffer. + /// Sending this request will cause the next frame to be sent via `DataTrackSubscriptionFrameReceived` + /// once one is available. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class DataTrackSubscriptionReadRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DataTrackSubscriptionReadRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[20]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionReadRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionReadRequest(DataTrackSubscriptionReadRequest other) : this() { + _hasBits0 = other._hasBits0; + subscriptionHandle_ = other.subscriptionHandle_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionReadRequest Clone() { + return new DataTrackSubscriptionReadRequest(this); + } + + /// Field number for the "subscription_handle" field. + public const int SubscriptionHandleFieldNumber = 1; + private readonly static ulong SubscriptionHandleDefaultValue = 0UL; + + private ulong subscriptionHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong SubscriptionHandle { + get { if ((_hasBits0 & 1) != 0) { return subscriptionHandle_; } else { return SubscriptionHandleDefaultValue; } } + set { + _hasBits0 |= 1; + subscriptionHandle_ = value; + } + } + /// Gets whether the "subscription_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasSubscriptionHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "subscription_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearSubscriptionHandle() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DataTrackSubscriptionReadRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DataTrackSubscriptionReadRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (SubscriptionHandle != other.SubscriptionHandle) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasSubscriptionHandle) hash ^= SubscriptionHandle.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasSubscriptionHandle) { + output.WriteRawTag(8); + output.WriteUInt64(SubscriptionHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasSubscriptionHandle) { + output.WriteRawTag(8); + output.WriteUInt64(SubscriptionHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasSubscriptionHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(SubscriptionHandle); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DataTrackSubscriptionReadRequest other) { + if (other == null) { + return; + } + if (other.HasSubscriptionHandle) { + SubscriptionHandle = other.SubscriptionHandle; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + SubscriptionHandle = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + SubscriptionHandle = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class DataTrackSubscriptionReadResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DataTrackSubscriptionReadResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[21]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionReadResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionReadResponse(DataTrackSubscriptionReadResponse other) : this() { + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionReadResponse Clone() { + return new DataTrackSubscriptionReadResponse(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DataTrackSubscriptionReadResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DataTrackSubscriptionReadResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DataTrackSubscriptionReadResponse other) { + if (other == null) { + return; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + } + } + } + #endif + + } + + /// + /// Event emitted on an active subscription. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class DataTrackSubscriptionEvent : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DataTrackSubscriptionEvent()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[22]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionEvent() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionEvent(DataTrackSubscriptionEvent other) : this() { + _hasBits0 = other._hasBits0; + subscriptionHandle_ = other.subscriptionHandle_; + switch (other.DetailCase) { + case DetailOneofCase.FrameReceived: + FrameReceived = other.FrameReceived.Clone(); + break; + case DetailOneofCase.Eos: + Eos = other.Eos.Clone(); + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionEvent Clone() { + return new DataTrackSubscriptionEvent(this); + } + + /// Field number for the "subscription_handle" field. + public const int SubscriptionHandleFieldNumber = 1; + private readonly static ulong SubscriptionHandleDefaultValue = 0UL; + + private ulong subscriptionHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong SubscriptionHandle { + get { if ((_hasBits0 & 1) != 0) { return subscriptionHandle_; } else { return SubscriptionHandleDefaultValue; } } + set { + _hasBits0 |= 1; + subscriptionHandle_ = value; + } + } + /// Gets whether the "subscription_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasSubscriptionHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "subscription_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearSubscriptionHandle() { + _hasBits0 &= ~1; + } + + /// Field number for the "frame_received" field. + public const int FrameReceivedFieldNumber = 2; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackSubscriptionFrameReceived FrameReceived { + get { return detailCase_ == DetailOneofCase.FrameReceived ? (global::LiveKit.Proto.DataTrackSubscriptionFrameReceived) detail_ : null; } + set { + detail_ = value; + detailCase_ = value == null ? DetailOneofCase.None : DetailOneofCase.FrameReceived; + } + } + + /// Field number for the "eos" field. + public const int EosFieldNumber = 3; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackSubscriptionEOS Eos { + get { return detailCase_ == DetailOneofCase.Eos ? (global::LiveKit.Proto.DataTrackSubscriptionEOS) detail_ : null; } + set { + detail_ = value; + detailCase_ = value == null ? DetailOneofCase.None : DetailOneofCase.Eos; + } + } + + private object detail_; + /// Enum of possible cases for the "detail" oneof. + public enum DetailOneofCase { + None = 0, + FrameReceived = 2, + Eos = 3, + } + private DetailOneofCase detailCase_ = DetailOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DetailOneofCase DetailCase { + get { return detailCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearDetail() { + detailCase_ = DetailOneofCase.None; + detail_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DataTrackSubscriptionEvent); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DataTrackSubscriptionEvent other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (SubscriptionHandle != other.SubscriptionHandle) return false; + if (!object.Equals(FrameReceived, other.FrameReceived)) return false; + if (!object.Equals(Eos, other.Eos)) return false; + if (DetailCase != other.DetailCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasSubscriptionHandle) hash ^= SubscriptionHandle.GetHashCode(); + if (detailCase_ == DetailOneofCase.FrameReceived) hash ^= FrameReceived.GetHashCode(); + if (detailCase_ == DetailOneofCase.Eos) hash ^= Eos.GetHashCode(); + hash ^= (int) detailCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasSubscriptionHandle) { + output.WriteRawTag(8); + output.WriteUInt64(SubscriptionHandle); + } + if (detailCase_ == DetailOneofCase.FrameReceived) { + output.WriteRawTag(18); + output.WriteMessage(FrameReceived); + } + if (detailCase_ == DetailOneofCase.Eos) { + output.WriteRawTag(26); + output.WriteMessage(Eos); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasSubscriptionHandle) { + output.WriteRawTag(8); + output.WriteUInt64(SubscriptionHandle); + } + if (detailCase_ == DetailOneofCase.FrameReceived) { + output.WriteRawTag(18); + output.WriteMessage(FrameReceived); + } + if (detailCase_ == DetailOneofCase.Eos) { + output.WriteRawTag(26); + output.WriteMessage(Eos); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasSubscriptionHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(SubscriptionHandle); + } + if (detailCase_ == DetailOneofCase.FrameReceived) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(FrameReceived); + } + if (detailCase_ == DetailOneofCase.Eos) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Eos); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DataTrackSubscriptionEvent other) { + if (other == null) { + return; + } + if (other.HasSubscriptionHandle) { + SubscriptionHandle = other.SubscriptionHandle; + } + switch (other.DetailCase) { + case DetailOneofCase.FrameReceived: + if (FrameReceived == null) { + FrameReceived = new global::LiveKit.Proto.DataTrackSubscriptionFrameReceived(); + } + FrameReceived.MergeFrom(other.FrameReceived); + break; + case DetailOneofCase.Eos: + if (Eos == null) { + Eos = new global::LiveKit.Proto.DataTrackSubscriptionEOS(); + } + Eos.MergeFrom(other.Eos); + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + SubscriptionHandle = input.ReadUInt64(); + break; + } + case 18: { + global::LiveKit.Proto.DataTrackSubscriptionFrameReceived subBuilder = new global::LiveKit.Proto.DataTrackSubscriptionFrameReceived(); + if (detailCase_ == DetailOneofCase.FrameReceived) { + subBuilder.MergeFrom(FrameReceived); + } + input.ReadMessage(subBuilder); + FrameReceived = subBuilder; + break; + } + case 26: { + global::LiveKit.Proto.DataTrackSubscriptionEOS subBuilder = new global::LiveKit.Proto.DataTrackSubscriptionEOS(); + if (detailCase_ == DetailOneofCase.Eos) { + subBuilder.MergeFrom(Eos); + } + input.ReadMessage(subBuilder); + Eos = subBuilder; + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + SubscriptionHandle = input.ReadUInt64(); + break; + } + case 18: { + global::LiveKit.Proto.DataTrackSubscriptionFrameReceived subBuilder = new global::LiveKit.Proto.DataTrackSubscriptionFrameReceived(); + if (detailCase_ == DetailOneofCase.FrameReceived) { + subBuilder.MergeFrom(FrameReceived); + } + input.ReadMessage(subBuilder); + FrameReceived = subBuilder; + break; + } + case 26: { + global::LiveKit.Proto.DataTrackSubscriptionEOS subBuilder = new global::LiveKit.Proto.DataTrackSubscriptionEOS(); + if (detailCase_ == DetailOneofCase.Eos) { + subBuilder.MergeFrom(Eos); + } + input.ReadMessage(subBuilder); + Eos = subBuilder; + break; + } + } + } + } + #endif + + } + + /// + /// A frame was received. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class DataTrackSubscriptionFrameReceived : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DataTrackSubscriptionFrameReceived()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[23]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionFrameReceived() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionFrameReceived(DataTrackSubscriptionFrameReceived other) : this() { + frame_ = other.frame_ != null ? other.frame_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionFrameReceived Clone() { + return new DataTrackSubscriptionFrameReceived(this); + } + + /// Field number for the "frame" field. + public const int FrameFieldNumber = 1; + private global::LiveKit.Proto.DataTrackFrame frame_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackFrame Frame { + get { return frame_; } + set { + frame_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DataTrackSubscriptionFrameReceived); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DataTrackSubscriptionFrameReceived other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Frame, other.Frame)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (frame_ != null) hash ^= Frame.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (frame_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Frame); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (frame_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Frame); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (frame_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Frame); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DataTrackSubscriptionFrameReceived other) { + if (other == null) { + return; + } + if (other.frame_ != null) { + if (frame_ == null) { + Frame = new global::LiveKit.Proto.DataTrackFrame(); + } + Frame.MergeFrom(other.Frame); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + if (frame_ == null) { + Frame = new global::LiveKit.Proto.DataTrackFrame(); + } + input.ReadMessage(Frame); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + if (frame_ == null) { + Frame = new global::LiveKit.Proto.DataTrackFrame(); + } + input.ReadMessage(Frame); + break; + } + } + } + } + #endif + + } + + /// + /// Subscription has ended (end of stream). + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class DataTrackSubscriptionEOS : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DataTrackSubscriptionEOS()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.DataTrackReflection.Descriptor.MessageTypes[24]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionEOS() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionEOS(DataTrackSubscriptionEOS other) : this() { + error_ = other.error_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackSubscriptionEOS Clone() { + return new DataTrackSubscriptionEOS(this); + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 1; + private readonly static string ErrorDefaultValue = ""; + + private string error_; + /// + /// If the track could not be subscribed to, a message describing the error. + /// Absent if the stream ended normally. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return error_ ?? ErrorDefaultValue; } + set { + error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "error" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasError { + get { return error_ != null; } + } + /// Clears the value of the "error" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearError() { + error_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DataTrackSubscriptionEOS); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DataTrackSubscriptionEOS other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Error != other.Error) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasError) hash ^= Error.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasError) { + output.WriteRawTag(10); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasError) { + output.WriteRawTag(10); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasError) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DataTrackSubscriptionEOS other) { + if (other == null) { + return; + } + if (other.HasError) { + Error = other.Error; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Error = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Error = input.ReadString(); + break; + } + } + } + } + #endif + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/Runtime/Scripts/Proto/DataTrack.cs.meta b/Runtime/Scripts/Proto/DataTrack.cs.meta new file mode 100644 index 00000000..c0cd2e4a --- /dev/null +++ b/Runtime/Scripts/Proto/DataTrack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5bb8f4b61313248248b43d1323a2756b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Proto/Ffi.cs b/Runtime/Scripts/Proto/Ffi.cs index 8a62dcf7..87dd0e91 100644 --- a/Runtime/Scripts/Proto/Ffi.cs +++ b/Runtime/Scripts/Proto/Ffi.cs @@ -27,297 +27,327 @@ static FfiReflection() { "CglmZmkucHJvdG8SDWxpdmVraXQucHJvdG8aCmUyZWUucHJvdG8aC3RyYWNr", "LnByb3RvGhd0cmFja19wdWJsaWNhdGlvbi5wcm90bxoKcm9vbS5wcm90bxoR", "dmlkZW9fZnJhbWUucHJvdG8aEWF1ZGlvX2ZyYW1lLnByb3RvGglycGMucHJv", - "dG8aEWRhdGFfc3RyZWFtLnByb3RvIuYlCgpGZmlSZXF1ZXN0EjAKB2Rpc3Bv", - "c2UYAiABKAsyHS5saXZla2l0LnByb3RvLkRpc3Bvc2VSZXF1ZXN0SAASMAoH", - "Y29ubmVjdBgDIAEoCzIdLmxpdmVraXQucHJvdG8uQ29ubmVjdFJlcXVlc3RI", - "ABI2CgpkaXNjb25uZWN0GAQgASgLMiAubGl2ZWtpdC5wcm90by5EaXNjb25u", - "ZWN0UmVxdWVzdEgAEjsKDXB1Ymxpc2hfdHJhY2sYBSABKAsyIi5saXZla2l0", - "LnByb3RvLlB1Ymxpc2hUcmFja1JlcXVlc3RIABI/Cg91bnB1Ymxpc2hfdHJh", - "Y2sYBiABKAsyJC5saXZla2l0LnByb3RvLlVucHVibGlzaFRyYWNrUmVxdWVz", - "dEgAEjkKDHB1Ymxpc2hfZGF0YRgHIAEoCzIhLmxpdmVraXQucHJvdG8uUHVi", - "bGlzaERhdGFSZXF1ZXN0SAASPQoOc2V0X3N1YnNjcmliZWQYCCABKAsyIy5s", - "aXZla2l0LnByb3RvLlNldFN1YnNjcmliZWRSZXF1ZXN0SAASRAoSc2V0X2xv", - "Y2FsX21ldGFkYXRhGAkgASgLMiYubGl2ZWtpdC5wcm90by5TZXRMb2NhbE1l", - "dGFkYXRhUmVxdWVzdEgAEjwKDnNldF9sb2NhbF9uYW1lGAogASgLMiIubGl2", - "ZWtpdC5wcm90by5TZXRMb2NhbE5hbWVSZXF1ZXN0SAASSAoUc2V0X2xvY2Fs", - "X2F0dHJpYnV0ZXMYCyABKAsyKC5saXZla2l0LnByb3RvLlNldExvY2FsQXR0", - "cmlidXRlc1JlcXVlc3RIABJCChFnZXRfc2Vzc2lvbl9zdGF0cxgMIAEoCzIl", - "LmxpdmVraXQucHJvdG8uR2V0U2Vzc2lvblN0YXRzUmVxdWVzdEgAEksKFXB1", - "Ymxpc2hfdHJhbnNjcmlwdGlvbhgNIAEoCzIqLmxpdmVraXQucHJvdG8uUHVi", - "bGlzaFRyYW5zY3JpcHRpb25SZXF1ZXN0SAASQAoQcHVibGlzaF9zaXBfZHRt", - "ZhgOIAEoCzIkLmxpdmVraXQucHJvdG8uUHVibGlzaFNpcER0bWZSZXF1ZXN0", - "SAASRAoSY3JlYXRlX3ZpZGVvX3RyYWNrGA8gASgLMiYubGl2ZWtpdC5wcm90", - "by5DcmVhdGVWaWRlb1RyYWNrUmVxdWVzdEgAEkQKEmNyZWF0ZV9hdWRpb190", - "cmFjaxgQIAEoCzImLmxpdmVraXQucHJvdG8uQ3JlYXRlQXVkaW9UcmFja1Jl", - "cXVlc3RIABJAChBsb2NhbF90cmFja19tdXRlGBEgASgLMiQubGl2ZWtpdC5w", - "cm90by5Mb2NhbFRyYWNrTXV0ZVJlcXVlc3RIABJGChNlbmFibGVfcmVtb3Rl", - "X3RyYWNrGBIgASgLMicubGl2ZWtpdC5wcm90by5FbmFibGVSZW1vdGVUcmFj", - "a1JlcXVlc3RIABIzCglnZXRfc3RhdHMYEyABKAsyHi5saXZla2l0LnByb3Rv", - "LkdldFN0YXRzUmVxdWVzdEgAEmMKInNldF90cmFja19zdWJzY3JpcHRpb25f", - "cGVybWlzc2lvbnMYMCABKAsyNS5saXZla2l0LnByb3RvLlNldFRyYWNrU3Vi", - "c2NyaXB0aW9uUGVybWlzc2lvbnNSZXF1ZXN0SAASQAoQbmV3X3ZpZGVvX3N0", - "cmVhbRgUIAEoCzIkLmxpdmVraXQucHJvdG8uTmV3VmlkZW9TdHJlYW1SZXF1", - "ZXN0SAASQAoQbmV3X3ZpZGVvX3NvdXJjZRgVIAEoCzIkLmxpdmVraXQucHJv", - "dG8uTmV3VmlkZW9Tb3VyY2VSZXF1ZXN0SAASRgoTY2FwdHVyZV92aWRlb19m", - "cmFtZRgWIAEoCzInLmxpdmVraXQucHJvdG8uQ2FwdHVyZVZpZGVvRnJhbWVS", - "ZXF1ZXN0SAASOwoNdmlkZW9fY29udmVydBgXIAEoCzIiLmxpdmVraXQucHJv", - "dG8uVmlkZW9Db252ZXJ0UmVxdWVzdEgAElkKHXZpZGVvX3N0cmVhbV9mcm9t", - "X3BhcnRpY2lwYW50GBggASgLMjAubGl2ZWtpdC5wcm90by5WaWRlb1N0cmVh", - "bUZyb21QYXJ0aWNpcGFudFJlcXVlc3RIABJAChBuZXdfYXVkaW9fc3RyZWFt", - "GBkgASgLMiQubGl2ZWtpdC5wcm90by5OZXdBdWRpb1N0cmVhbVJlcXVlc3RI", - "ABJAChBuZXdfYXVkaW9fc291cmNlGBogASgLMiQubGl2ZWtpdC5wcm90by5O", - "ZXdBdWRpb1NvdXJjZVJlcXVlc3RIABJGChNjYXB0dXJlX2F1ZGlvX2ZyYW1l", - "GBsgASgLMicubGl2ZWtpdC5wcm90by5DYXB0dXJlQXVkaW9GcmFtZVJlcXVl", - "c3RIABJEChJjbGVhcl9hdWRpb19idWZmZXIYHCABKAsyJi5saXZla2l0LnBy", - "b3RvLkNsZWFyQXVkaW9CdWZmZXJSZXF1ZXN0SAASRgoTbmV3X2F1ZGlvX3Jl", - "c2FtcGxlchgdIAEoCzInLmxpdmVraXQucHJvdG8uTmV3QXVkaW9SZXNhbXBs", - "ZXJSZXF1ZXN0SAASRAoScmVtaXhfYW5kX3Jlc2FtcGxlGB4gASgLMiYubGl2", - "ZWtpdC5wcm90by5SZW1peEFuZFJlc2FtcGxlUmVxdWVzdEgAEioKBGUyZWUY", - "HyABKAsyGi5saXZla2l0LnByb3RvLkUyZWVSZXF1ZXN0SAASWQodYXVkaW9f", - "c3RyZWFtX2Zyb21fcGFydGljaXBhbnQYICABKAsyMC5saXZla2l0LnByb3Rv", - "LkF1ZGlvU3RyZWFtRnJvbVBhcnRpY2lwYW50UmVxdWVzdEgAEkIKEW5ld19z", - "b3hfcmVzYW1wbGVyGCEgASgLMiUubGl2ZWtpdC5wcm90by5OZXdTb3hSZXNh", - "bXBsZXJSZXF1ZXN0SAASRAoScHVzaF9zb3hfcmVzYW1wbGVyGCIgASgLMiYu", - "bGl2ZWtpdC5wcm90by5QdXNoU294UmVzYW1wbGVyUmVxdWVzdEgAEkYKE2Zs", - "dXNoX3NveF9yZXNhbXBsZXIYIyABKAsyJy5saXZla2l0LnByb3RvLkZsdXNo", - "U294UmVzYW1wbGVyUmVxdWVzdEgAEkIKEXNlbmRfY2hhdF9tZXNzYWdlGCQg", - "ASgLMiUubGl2ZWtpdC5wcm90by5TZW5kQ2hhdE1lc3NhZ2VSZXF1ZXN0SAAS", - "QgoRZWRpdF9jaGF0X21lc3NhZ2UYJSABKAsyJS5saXZla2l0LnByb3RvLkVk", - "aXRDaGF0TWVzc2FnZVJlcXVlc3RIABI3CgtwZXJmb3JtX3JwYxgmIAEoCzIg", - "LmxpdmVraXQucHJvdG8uUGVyZm9ybVJwY1JlcXVlc3RIABJGChNyZWdpc3Rl", - "cl9ycGNfbWV0aG9kGCcgASgLMicubGl2ZWtpdC5wcm90by5SZWdpc3RlclJw", - "Y01ldGhvZFJlcXVlc3RIABJKChV1bnJlZ2lzdGVyX3JwY19tZXRob2QYKCAB", - "KAsyKS5saXZla2l0LnByb3RvLlVucmVnaXN0ZXJScGNNZXRob2RSZXF1ZXN0", - "SAASWwoecnBjX21ldGhvZF9pbnZvY2F0aW9uX3Jlc3BvbnNlGCkgASgLMjEu", - "bGl2ZWtpdC5wcm90by5ScGNNZXRob2RJbnZvY2F0aW9uUmVzcG9uc2VSZXF1", - "ZXN0SAASXQofZW5hYmxlX3JlbW90ZV90cmFja19wdWJsaWNhdGlvbhgqIAEo", - "CzIyLmxpdmVraXQucHJvdG8uRW5hYmxlUmVtb3RlVHJhY2tQdWJsaWNhdGlv", - "blJlcXVlc3RIABJwCil1cGRhdGVfcmVtb3RlX3RyYWNrX3B1YmxpY2F0aW9u", - "X2RpbWVuc2lvbhgrIAEoCzI7LmxpdmVraXQucHJvdG8uVXBkYXRlUmVtb3Rl", - "VHJhY2tQdWJsaWNhdGlvbkRpbWVuc2lvblJlcXVlc3RIABJEChJzZW5kX3N0", - "cmVhbV9oZWFkZXIYLCABKAsyJi5saXZla2l0LnByb3RvLlNlbmRTdHJlYW1I", - "ZWFkZXJSZXF1ZXN0SAASQgoRc2VuZF9zdHJlYW1fY2h1bmsYLSABKAsyJS5s", - "aXZla2l0LnByb3RvLlNlbmRTdHJlYW1DaHVua1JlcXVlc3RIABJGChNzZW5k", - "X3N0cmVhbV90cmFpbGVyGC4gASgLMicubGl2ZWtpdC5wcm90by5TZW5kU3Ry", - "ZWFtVHJhaWxlclJlcXVlc3RIABJ4Ci5zZXRfZGF0YV9jaGFubmVsX2J1ZmZl", - "cmVkX2Ftb3VudF9sb3dfdGhyZXNob2xkGC8gASgLMj4ubGl2ZWtpdC5wcm90", - "by5TZXREYXRhQ2hhbm5lbEJ1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkUmVx", - "dWVzdEgAEk8KGGxvYWRfYXVkaW9fZmlsdGVyX3BsdWdpbhgxIAEoCzIrLmxp", - "dmVraXQucHJvdG8uTG9hZEF1ZGlvRmlsdGVyUGx1Z2luUmVxdWVzdEgAEi8K", - "B25ld19hcG0YMiABKAsyHC5saXZla2l0LnByb3RvLk5ld0FwbVJlcXVlc3RI", - "ABJEChJhcG1fcHJvY2Vzc19zdHJlYW0YMyABKAsyJi5saXZla2l0LnByb3Rv", - "LkFwbVByb2Nlc3NTdHJlYW1SZXF1ZXN0SAASUwoaYXBtX3Byb2Nlc3NfcmV2", - "ZXJzZV9zdHJlYW0YNCABKAsyLS5saXZla2l0LnByb3RvLkFwbVByb2Nlc3NS", - "ZXZlcnNlU3RyZWFtUmVxdWVzdEgAEkcKFGFwbV9zZXRfc3RyZWFtX2RlbGF5", - "GDUgASgLMicubGl2ZWtpdC5wcm90by5BcG1TZXRTdHJlYW1EZWxheVJlcXVl", - "c3RIABJWChVieXRlX3JlYWRfaW5jcmVtZW50YWwYNiABKAsyNS5saXZla2l0", - "LnByb3RvLkJ5dGVTdHJlYW1SZWFkZXJSZWFkSW5jcmVtZW50YWxSZXF1ZXN0", - "SAASRgoNYnl0ZV9yZWFkX2FsbBg3IAEoCzItLmxpdmVraXQucHJvdG8uQnl0", - "ZVN0cmVhbVJlYWRlclJlYWRBbGxSZXF1ZXN0SAASTwoSYnl0ZV93cml0ZV90", - "b19maWxlGDggASgLMjEubGl2ZWtpdC5wcm90by5CeXRlU3RyZWFtUmVhZGVy", - "V3JpdGVUb0ZpbGVSZXF1ZXN0SAASVgoVdGV4dF9yZWFkX2luY3JlbWVudGFs", - "GDkgASgLMjUubGl2ZWtpdC5wcm90by5UZXh0U3RyZWFtUmVhZGVyUmVhZElu", - "Y3JlbWVudGFsUmVxdWVzdEgAEkYKDXRleHRfcmVhZF9hbGwYOiABKAsyLS5s", - "aXZla2l0LnByb3RvLlRleHRTdHJlYW1SZWFkZXJSZWFkQWxsUmVxdWVzdEgA", - "EjkKCXNlbmRfZmlsZRg7IAEoCzIkLmxpdmVraXQucHJvdG8uU3RyZWFtU2Vu", - "ZEZpbGVSZXF1ZXN0SAASOQoJc2VuZF90ZXh0GDwgASgLMiQubGl2ZWtpdC5w", - "cm90by5TdHJlYW1TZW5kVGV4dFJlcXVlc3RIABJAChBieXRlX3N0cmVhbV9v", - "cGVuGD0gASgLMiQubGl2ZWtpdC5wcm90by5CeXRlU3RyZWFtT3BlblJlcXVl", - "c3RIABJIChFieXRlX3N0cmVhbV93cml0ZRg+IAEoCzIrLmxpdmVraXQucHJv", - "dG8uQnl0ZVN0cmVhbVdyaXRlcldyaXRlUmVxdWVzdEgAEkgKEWJ5dGVfc3Ry", - "ZWFtX2Nsb3NlGD8gASgLMisubGl2ZWtpdC5wcm90by5CeXRlU3RyZWFtV3Jp", - "dGVyQ2xvc2VSZXF1ZXN0SAASQAoQdGV4dF9zdHJlYW1fb3BlbhhAIAEoCzIk", - "LmxpdmVraXQucHJvdG8uVGV4dFN0cmVhbU9wZW5SZXF1ZXN0SAASSAoRdGV4", - "dF9zdHJlYW1fd3JpdGUYQSABKAsyKy5saXZla2l0LnByb3RvLlRleHRTdHJl", - "YW1Xcml0ZXJXcml0ZVJlcXVlc3RIABJIChF0ZXh0X3N0cmVhbV9jbG9zZRhC", - "IAEoCzIrLmxpdmVraXQucHJvdG8uVGV4dFN0cmVhbVdyaXRlckNsb3NlUmVx", - "dWVzdEgAEjsKCnNlbmRfYnl0ZXMYQyABKAsyJS5saXZla2l0LnByb3RvLlN0", - "cmVhbVNlbmRCeXRlc1JlcXVlc3RIABJmCiRzZXRfcmVtb3RlX3RyYWNrX3B1", - "YmxpY2F0aW9uX3F1YWxpdHkYRCABKAsyNi5saXZla2l0LnByb3RvLlNldFJl", - "bW90ZVRyYWNrUHVibGljYXRpb25RdWFsaXR5UmVxdWVzdEgAQgkKB21lc3Nh", - "Z2Ui5SUKC0ZmaVJlc3BvbnNlEjEKB2Rpc3Bvc2UYAiABKAsyHi5saXZla2l0", - "LnByb3RvLkRpc3Bvc2VSZXNwb25zZUgAEjEKB2Nvbm5lY3QYAyABKAsyHi5s", - "aXZla2l0LnByb3RvLkNvbm5lY3RSZXNwb25zZUgAEjcKCmRpc2Nvbm5lY3QY", - "BCABKAsyIS5saXZla2l0LnByb3RvLkRpc2Nvbm5lY3RSZXNwb25zZUgAEjwK", - "DXB1Ymxpc2hfdHJhY2sYBSABKAsyIy5saXZla2l0LnByb3RvLlB1Ymxpc2hU", - "cmFja1Jlc3BvbnNlSAASQAoPdW5wdWJsaXNoX3RyYWNrGAYgASgLMiUubGl2", - "ZWtpdC5wcm90by5VbnB1Ymxpc2hUcmFja1Jlc3BvbnNlSAASOgoMcHVibGlz", - "aF9kYXRhGAcgASgLMiIubGl2ZWtpdC5wcm90by5QdWJsaXNoRGF0YVJlc3Bv", - "bnNlSAASPgoOc2V0X3N1YnNjcmliZWQYCCABKAsyJC5saXZla2l0LnByb3Rv", - "LlNldFN1YnNjcmliZWRSZXNwb25zZUgAEkUKEnNldF9sb2NhbF9tZXRhZGF0", - "YRgJIAEoCzInLmxpdmVraXQucHJvdG8uU2V0TG9jYWxNZXRhZGF0YVJlc3Bv", - "bnNlSAASPQoOc2V0X2xvY2FsX25hbWUYCiABKAsyIy5saXZla2l0LnByb3Rv", - "LlNldExvY2FsTmFtZVJlc3BvbnNlSAASSQoUc2V0X2xvY2FsX2F0dHJpYnV0", - "ZXMYCyABKAsyKS5saXZla2l0LnByb3RvLlNldExvY2FsQXR0cmlidXRlc1Jl", - "c3BvbnNlSAASQwoRZ2V0X3Nlc3Npb25fc3RhdHMYDCABKAsyJi5saXZla2l0", - "LnByb3RvLkdldFNlc3Npb25TdGF0c1Jlc3BvbnNlSAASTAoVcHVibGlzaF90", - "cmFuc2NyaXB0aW9uGA0gASgLMisubGl2ZWtpdC5wcm90by5QdWJsaXNoVHJh", - "bnNjcmlwdGlvblJlc3BvbnNlSAASQQoQcHVibGlzaF9zaXBfZHRtZhgOIAEo", - "CzIlLmxpdmVraXQucHJvdG8uUHVibGlzaFNpcER0bWZSZXNwb25zZUgAEkUK", - "EmNyZWF0ZV92aWRlb190cmFjaxgPIAEoCzInLmxpdmVraXQucHJvdG8uQ3Jl", - "YXRlVmlkZW9UcmFja1Jlc3BvbnNlSAASRQoSY3JlYXRlX2F1ZGlvX3RyYWNr", - "GBAgASgLMicubGl2ZWtpdC5wcm90by5DcmVhdGVBdWRpb1RyYWNrUmVzcG9u", - "c2VIABJBChBsb2NhbF90cmFja19tdXRlGBEgASgLMiUubGl2ZWtpdC5wcm90", - "by5Mb2NhbFRyYWNrTXV0ZVJlc3BvbnNlSAASRwoTZW5hYmxlX3JlbW90ZV90", - "cmFjaxgSIAEoCzIoLmxpdmVraXQucHJvdG8uRW5hYmxlUmVtb3RlVHJhY2tS", - "ZXNwb25zZUgAEjQKCWdldF9zdGF0cxgTIAEoCzIfLmxpdmVraXQucHJvdG8u", - "R2V0U3RhdHNSZXNwb25zZUgAEmQKInNldF90cmFja19zdWJzY3JpcHRpb25f", - "cGVybWlzc2lvbnMYLyABKAsyNi5saXZla2l0LnByb3RvLlNldFRyYWNrU3Vi", - "c2NyaXB0aW9uUGVybWlzc2lvbnNSZXNwb25zZUgAEkEKEG5ld192aWRlb19z", - "dHJlYW0YFCABKAsyJS5saXZla2l0LnByb3RvLk5ld1ZpZGVvU3RyZWFtUmVz", - "cG9uc2VIABJBChBuZXdfdmlkZW9fc291cmNlGBUgASgLMiUubGl2ZWtpdC5w", - "cm90by5OZXdWaWRlb1NvdXJjZVJlc3BvbnNlSAASRwoTY2FwdHVyZV92aWRl", - "b19mcmFtZRgWIAEoCzIoLmxpdmVraXQucHJvdG8uQ2FwdHVyZVZpZGVvRnJh", - "bWVSZXNwb25zZUgAEjwKDXZpZGVvX2NvbnZlcnQYFyABKAsyIy5saXZla2l0", - "LnByb3RvLlZpZGVvQ29udmVydFJlc3BvbnNlSAASWgoddmlkZW9fc3RyZWFt", - "X2Zyb21fcGFydGljaXBhbnQYGCABKAsyMS5saXZla2l0LnByb3RvLlZpZGVv", - "U3RyZWFtRnJvbVBhcnRpY2lwYW50UmVzcG9uc2VIABJBChBuZXdfYXVkaW9f", - "c3RyZWFtGBkgASgLMiUubGl2ZWtpdC5wcm90by5OZXdBdWRpb1N0cmVhbVJl", - "c3BvbnNlSAASQQoQbmV3X2F1ZGlvX3NvdXJjZRgaIAEoCzIlLmxpdmVraXQu", - "cHJvdG8uTmV3QXVkaW9Tb3VyY2VSZXNwb25zZUgAEkcKE2NhcHR1cmVfYXVk", - "aW9fZnJhbWUYGyABKAsyKC5saXZla2l0LnByb3RvLkNhcHR1cmVBdWRpb0Zy", - "YW1lUmVzcG9uc2VIABJFChJjbGVhcl9hdWRpb19idWZmZXIYHCABKAsyJy5s", - "aXZla2l0LnByb3RvLkNsZWFyQXVkaW9CdWZmZXJSZXNwb25zZUgAEkcKE25l", - "d19hdWRpb19yZXNhbXBsZXIYHSABKAsyKC5saXZla2l0LnByb3RvLk5ld0F1", - "ZGlvUmVzYW1wbGVyUmVzcG9uc2VIABJFChJyZW1peF9hbmRfcmVzYW1wbGUY", - "HiABKAsyJy5saXZla2l0LnByb3RvLlJlbWl4QW5kUmVzYW1wbGVSZXNwb25z", - "ZUgAEloKHWF1ZGlvX3N0cmVhbV9mcm9tX3BhcnRpY2lwYW50GB8gASgLMjEu", - "bGl2ZWtpdC5wcm90by5BdWRpb1N0cmVhbUZyb21QYXJ0aWNpcGFudFJlc3Bv", - "bnNlSAASKwoEZTJlZRggIAEoCzIbLmxpdmVraXQucHJvdG8uRTJlZVJlc3Bv", - "bnNlSAASQwoRbmV3X3NveF9yZXNhbXBsZXIYISABKAsyJi5saXZla2l0LnBy", - "b3RvLk5ld1NveFJlc2FtcGxlclJlc3BvbnNlSAASRQoScHVzaF9zb3hfcmVz", - "YW1wbGVyGCIgASgLMicubGl2ZWtpdC5wcm90by5QdXNoU294UmVzYW1wbGVy", - "UmVzcG9uc2VIABJHChNmbHVzaF9zb3hfcmVzYW1wbGVyGCMgASgLMigubGl2", - "ZWtpdC5wcm90by5GbHVzaFNveFJlc2FtcGxlclJlc3BvbnNlSAASQwoRc2Vu", - "ZF9jaGF0X21lc3NhZ2UYJCABKAsyJi5saXZla2l0LnByb3RvLlNlbmRDaGF0", - "TWVzc2FnZVJlc3BvbnNlSAASOAoLcGVyZm9ybV9ycGMYJSABKAsyIS5saXZl", - "a2l0LnByb3RvLlBlcmZvcm1ScGNSZXNwb25zZUgAEkcKE3JlZ2lzdGVyX3Jw", - "Y19tZXRob2QYJiABKAsyKC5saXZla2l0LnByb3RvLlJlZ2lzdGVyUnBjTWV0", - "aG9kUmVzcG9uc2VIABJLChV1bnJlZ2lzdGVyX3JwY19tZXRob2QYJyABKAsy", - "Ki5saXZla2l0LnByb3RvLlVucmVnaXN0ZXJScGNNZXRob2RSZXNwb25zZUgA", - "ElwKHnJwY19tZXRob2RfaW52b2NhdGlvbl9yZXNwb25zZRgoIAEoCzIyLmxp", - "dmVraXQucHJvdG8uUnBjTWV0aG9kSW52b2NhdGlvblJlc3BvbnNlUmVzcG9u", - "c2VIABJeCh9lbmFibGVfcmVtb3RlX3RyYWNrX3B1YmxpY2F0aW9uGCkgASgL", - "MjMubGl2ZWtpdC5wcm90by5FbmFibGVSZW1vdGVUcmFja1B1YmxpY2F0aW9u", - "UmVzcG9uc2VIABJxCil1cGRhdGVfcmVtb3RlX3RyYWNrX3B1YmxpY2F0aW9u", - "X2RpbWVuc2lvbhgqIAEoCzI8LmxpdmVraXQucHJvdG8uVXBkYXRlUmVtb3Rl", - "VHJhY2tQdWJsaWNhdGlvbkRpbWVuc2lvblJlc3BvbnNlSAASRQoSc2VuZF9z", - "dHJlYW1faGVhZGVyGCsgASgLMicubGl2ZWtpdC5wcm90by5TZW5kU3RyZWFt", - "SGVhZGVyUmVzcG9uc2VIABJDChFzZW5kX3N0cmVhbV9jaHVuaxgsIAEoCzIm", - "LmxpdmVraXQucHJvdG8uU2VuZFN0cmVhbUNodW5rUmVzcG9uc2VIABJHChNz", - "ZW5kX3N0cmVhbV90cmFpbGVyGC0gASgLMigubGl2ZWtpdC5wcm90by5TZW5k", - "U3RyZWFtVHJhaWxlclJlc3BvbnNlSAASeQouc2V0X2RhdGFfY2hhbm5lbF9i", - "dWZmZXJlZF9hbW91bnRfbG93X3RocmVzaG9sZBguIAEoCzI/LmxpdmVraXQu", - "cHJvdG8uU2V0RGF0YUNoYW5uZWxCdWZmZXJlZEFtb3VudExvd1RocmVzaG9s", - "ZFJlc3BvbnNlSAASUAoYbG9hZF9hdWRpb19maWx0ZXJfcGx1Z2luGDAgASgL", - "MiwubGl2ZWtpdC5wcm90by5Mb2FkQXVkaW9GaWx0ZXJQbHVnaW5SZXNwb25z", - "ZUgAEjAKB25ld19hcG0YMSABKAsyHS5saXZla2l0LnByb3RvLk5ld0FwbVJl", - "c3BvbnNlSAASRQoSYXBtX3Byb2Nlc3Nfc3RyZWFtGDIgASgLMicubGl2ZWtp", - "dC5wcm90by5BcG1Qcm9jZXNzU3RyZWFtUmVzcG9uc2VIABJUChphcG1fcHJv", - "Y2Vzc19yZXZlcnNlX3N0cmVhbRgzIAEoCzIuLmxpdmVraXQucHJvdG8uQXBt", - "UHJvY2Vzc1JldmVyc2VTdHJlYW1SZXNwb25zZUgAEkgKFGFwbV9zZXRfc3Ry", - "ZWFtX2RlbGF5GDQgASgLMigubGl2ZWtpdC5wcm90by5BcG1TZXRTdHJlYW1E", - "ZWxheVJlc3BvbnNlSAASVwoVYnl0ZV9yZWFkX2luY3JlbWVudGFsGDUgASgL", - "MjYubGl2ZWtpdC5wcm90by5CeXRlU3RyZWFtUmVhZGVyUmVhZEluY3JlbWVu", - "dGFsUmVzcG9uc2VIABJHCg1ieXRlX3JlYWRfYWxsGDYgASgLMi4ubGl2ZWtp", - "dC5wcm90by5CeXRlU3RyZWFtUmVhZGVyUmVhZEFsbFJlc3BvbnNlSAASUAoS", - "Ynl0ZV93cml0ZV90b19maWxlGDcgASgLMjIubGl2ZWtpdC5wcm90by5CeXRl", - "U3RyZWFtUmVhZGVyV3JpdGVUb0ZpbGVSZXNwb25zZUgAElcKFXRleHRfcmVh", - "ZF9pbmNyZW1lbnRhbBg4IAEoCzI2LmxpdmVraXQucHJvdG8uVGV4dFN0cmVh", - "bVJlYWRlclJlYWRJbmNyZW1lbnRhbFJlc3BvbnNlSAASRwoNdGV4dF9yZWFk", - "X2FsbBg5IAEoCzIuLmxpdmVraXQucHJvdG8uVGV4dFN0cmVhbVJlYWRlclJl", - "YWRBbGxSZXNwb25zZUgAEjoKCXNlbmRfZmlsZRg6IAEoCzIlLmxpdmVraXQu", - "cHJvdG8uU3RyZWFtU2VuZEZpbGVSZXNwb25zZUgAEjoKCXNlbmRfdGV4dBg7", - "IAEoCzIlLmxpdmVraXQucHJvdG8uU3RyZWFtU2VuZFRleHRSZXNwb25zZUgA", - "EkEKEGJ5dGVfc3RyZWFtX29wZW4YPCABKAsyJS5saXZla2l0LnByb3RvLkJ5", - "dGVTdHJlYW1PcGVuUmVzcG9uc2VIABJJChFieXRlX3N0cmVhbV93cml0ZRg9", - "IAEoCzIsLmxpdmVraXQucHJvdG8uQnl0ZVN0cmVhbVdyaXRlcldyaXRlUmVz", - "cG9uc2VIABJJChFieXRlX3N0cmVhbV9jbG9zZRg+IAEoCzIsLmxpdmVraXQu", - "cHJvdG8uQnl0ZVN0cmVhbVdyaXRlckNsb3NlUmVzcG9uc2VIABJBChB0ZXh0", - "X3N0cmVhbV9vcGVuGD8gASgLMiUubGl2ZWtpdC5wcm90by5UZXh0U3RyZWFt", - "T3BlblJlc3BvbnNlSAASSQoRdGV4dF9zdHJlYW1fd3JpdGUYQCABKAsyLC5s", - "aXZla2l0LnByb3RvLlRleHRTdHJlYW1Xcml0ZXJXcml0ZVJlc3BvbnNlSAAS", - "SQoRdGV4dF9zdHJlYW1fY2xvc2UYQSABKAsyLC5saXZla2l0LnByb3RvLlRl", - "eHRTdHJlYW1Xcml0ZXJDbG9zZVJlc3BvbnNlSAASPAoKc2VuZF9ieXRlcxhC", - "IAEoCzImLmxpdmVraXQucHJvdG8uU3RyZWFtU2VuZEJ5dGVzUmVzcG9uc2VI", - "ABJnCiRzZXRfcmVtb3RlX3RyYWNrX3B1YmxpY2F0aW9uX3F1YWxpdHkYQyAB", - "KAsyNy5saXZla2l0LnByb3RvLlNldFJlbW90ZVRyYWNrUHVibGljYXRpb25R", - "dWFsaXR5UmVzcG9uc2VIAEIJCgdtZXNzYWdlIoUVCghGZmlFdmVudBIuCgpy", - "b29tX2V2ZW50GAEgASgLMhgubGl2ZWtpdC5wcm90by5Sb29tRXZlbnRIABIw", - "Cgt0cmFja19ldmVudBgCIAEoCzIZLmxpdmVraXQucHJvdG8uVHJhY2tFdmVu", - "dEgAEj0KEnZpZGVvX3N0cmVhbV9ldmVudBgDIAEoCzIfLmxpdmVraXQucHJv", - "dG8uVmlkZW9TdHJlYW1FdmVudEgAEj0KEmF1ZGlvX3N0cmVhbV9ldmVudBgE", - "IAEoCzIfLmxpdmVraXQucHJvdG8uQXVkaW9TdHJlYW1FdmVudEgAEjEKB2Nv", - "bm5lY3QYBSABKAsyHi5saXZla2l0LnByb3RvLkNvbm5lY3RDYWxsYmFja0gA", - "EjcKCmRpc2Nvbm5lY3QYByABKAsyIS5saXZla2l0LnByb3RvLkRpc2Nvbm5l", - "Y3RDYWxsYmFja0gAEjEKB2Rpc3Bvc2UYCCABKAsyHi5saXZla2l0LnByb3Rv", - "LkRpc3Bvc2VDYWxsYmFja0gAEjwKDXB1Ymxpc2hfdHJhY2sYCSABKAsyIy5s", - "aXZla2l0LnByb3RvLlB1Ymxpc2hUcmFja0NhbGxiYWNrSAASQAoPdW5wdWJs", - "aXNoX3RyYWNrGAogASgLMiUubGl2ZWtpdC5wcm90by5VbnB1Ymxpc2hUcmFj", - "a0NhbGxiYWNrSAASOgoMcHVibGlzaF9kYXRhGAsgASgLMiIubGl2ZWtpdC5w", - "cm90by5QdWJsaXNoRGF0YUNhbGxiYWNrSAASTAoVcHVibGlzaF90cmFuc2Ny", - "aXB0aW9uGAwgASgLMisubGl2ZWtpdC5wcm90by5QdWJsaXNoVHJhbnNjcmlw", - "dGlvbkNhbGxiYWNrSAASRwoTY2FwdHVyZV9hdWRpb19mcmFtZRgNIAEoCzIo", - "LmxpdmVraXQucHJvdG8uQ2FwdHVyZUF1ZGlvRnJhbWVDYWxsYmFja0gAEkUK", - "EnNldF9sb2NhbF9tZXRhZGF0YRgOIAEoCzInLmxpdmVraXQucHJvdG8uU2V0", - "TG9jYWxNZXRhZGF0YUNhbGxiYWNrSAASPQoOc2V0X2xvY2FsX25hbWUYDyAB", - "KAsyIy5saXZla2l0LnByb3RvLlNldExvY2FsTmFtZUNhbGxiYWNrSAASSQoU", - "c2V0X2xvY2FsX2F0dHJpYnV0ZXMYECABKAsyKS5saXZla2l0LnByb3RvLlNl", - "dExvY2FsQXR0cmlidXRlc0NhbGxiYWNrSAASNAoJZ2V0X3N0YXRzGBEgASgL", - "Mh8ubGl2ZWtpdC5wcm90by5HZXRTdGF0c0NhbGxiYWNrSAASJwoEbG9ncxgS", - "IAEoCzIXLmxpdmVraXQucHJvdG8uTG9nQmF0Y2hIABJDChFnZXRfc2Vzc2lv", - "bl9zdGF0cxgTIAEoCzImLmxpdmVraXQucHJvdG8uR2V0U2Vzc2lvblN0YXRz", - "Q2FsbGJhY2tIABIlCgVwYW5pYxgUIAEoCzIULmxpdmVraXQucHJvdG8uUGFu", - "aWNIABJBChBwdWJsaXNoX3NpcF9kdG1mGBUgASgLMiUubGl2ZWtpdC5wcm90", - "by5QdWJsaXNoU2lwRHRtZkNhbGxiYWNrSAASPgoMY2hhdF9tZXNzYWdlGBYg", - "ASgLMiYubGl2ZWtpdC5wcm90by5TZW5kQ2hhdE1lc3NhZ2VDYWxsYmFja0gA", - "EjgKC3BlcmZvcm1fcnBjGBcgASgLMiEubGl2ZWtpdC5wcm90by5QZXJmb3Jt", - "UnBjQ2FsbGJhY2tIABJIChVycGNfbWV0aG9kX2ludm9jYXRpb24YGCABKAsy", - "Jy5saXZla2l0LnByb3RvLlJwY01ldGhvZEludm9jYXRpb25FdmVudEgAEkUK", - "EnNlbmRfc3RyZWFtX2hlYWRlchgZIAEoCzInLmxpdmVraXQucHJvdG8uU2Vu", - "ZFN0cmVhbUhlYWRlckNhbGxiYWNrSAASQwoRc2VuZF9zdHJlYW1fY2h1bmsY", - "GiABKAsyJi5saXZla2l0LnByb3RvLlNlbmRTdHJlYW1DaHVua0NhbGxiYWNr", - "SAASRwoTc2VuZF9zdHJlYW1fdHJhaWxlchgbIAEoCzIoLmxpdmVraXQucHJv", - "dG8uU2VuZFN0cmVhbVRyYWlsZXJDYWxsYmFja0gAEkgKGGJ5dGVfc3RyZWFt", - "X3JlYWRlcl9ldmVudBgcIAEoCzIkLmxpdmVraXQucHJvdG8uQnl0ZVN0cmVh", - "bVJlYWRlckV2ZW50SAASVQobYnl0ZV9zdHJlYW1fcmVhZGVyX3JlYWRfYWxs", - "GB0gASgLMi4ubGl2ZWtpdC5wcm90by5CeXRlU3RyZWFtUmVhZGVyUmVhZEFs", - "bENhbGxiYWNrSAASXgogYnl0ZV9zdHJlYW1fcmVhZGVyX3dyaXRlX3RvX2Zp", - "bGUYHiABKAsyMi5saXZla2l0LnByb3RvLkJ5dGVTdHJlYW1SZWFkZXJXcml0", - "ZVRvRmlsZUNhbGxiYWNrSAASQQoQYnl0ZV9zdHJlYW1fb3BlbhgfIAEoCzIl", - "LmxpdmVraXQucHJvdG8uQnl0ZVN0cmVhbU9wZW5DYWxsYmFja0gAElAKGGJ5", - "dGVfc3RyZWFtX3dyaXRlcl93cml0ZRggIAEoCzIsLmxpdmVraXQucHJvdG8u", - "Qnl0ZVN0cmVhbVdyaXRlcldyaXRlQ2FsbGJhY2tIABJQChhieXRlX3N0cmVh", - "bV93cml0ZXJfY2xvc2UYISABKAsyLC5saXZla2l0LnByb3RvLkJ5dGVTdHJl", - "YW1Xcml0ZXJDbG9zZUNhbGxiYWNrSAASOgoJc2VuZF9maWxlGCIgASgLMiUu", - "bGl2ZWtpdC5wcm90by5TdHJlYW1TZW5kRmlsZUNhbGxiYWNrSAASSAoYdGV4", - "dF9zdHJlYW1fcmVhZGVyX2V2ZW50GCMgASgLMiQubGl2ZWtpdC5wcm90by5U", - "ZXh0U3RyZWFtUmVhZGVyRXZlbnRIABJVCht0ZXh0X3N0cmVhbV9yZWFkZXJf", - "cmVhZF9hbGwYJCABKAsyLi5saXZla2l0LnByb3RvLlRleHRTdHJlYW1SZWFk", - "ZXJSZWFkQWxsQ2FsbGJhY2tIABJBChB0ZXh0X3N0cmVhbV9vcGVuGCUgASgL", - "MiUubGl2ZWtpdC5wcm90by5UZXh0U3RyZWFtT3BlbkNhbGxiYWNrSAASUAoY", - "dGV4dF9zdHJlYW1fd3JpdGVyX3dyaXRlGCYgASgLMiwubGl2ZWtpdC5wcm90", - "by5UZXh0U3RyZWFtV3JpdGVyV3JpdGVDYWxsYmFja0gAElAKGHRleHRfc3Ry", - "ZWFtX3dyaXRlcl9jbG9zZRgnIAEoCzIsLmxpdmVraXQucHJvdG8uVGV4dFN0", - "cmVhbVdyaXRlckNsb3NlQ2FsbGJhY2tIABI6CglzZW5kX3RleHQYKCABKAsy", - "JS5saXZla2l0LnByb3RvLlN0cmVhbVNlbmRUZXh0Q2FsbGJhY2tIABI8Cgpz", - "ZW5kX2J5dGVzGCkgASgLMiYubGl2ZWtpdC5wcm90by5TdHJlYW1TZW5kQnl0", - "ZXNDYWxsYmFja0gAQgkKB21lc3NhZ2UiHwoORGlzcG9zZVJlcXVlc3QSDQoF", - "YXN5bmMYASACKAgiIwoPRGlzcG9zZVJlc3BvbnNlEhAKCGFzeW5jX2lkGAEg", - "ASgEIiMKD0Rpc3Bvc2VDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBCKFAQoJ", - "TG9nUmVjb3JkEiYKBWxldmVsGAEgAigOMhcubGl2ZWtpdC5wcm90by5Mb2dM", - "ZXZlbBIOCgZ0YXJnZXQYAiACKAkSEwoLbW9kdWxlX3BhdGgYAyABKAkSDAoE", - "ZmlsZRgEIAEoCRIMCgRsaW5lGAUgASgNEg8KB21lc3NhZ2UYBiACKAkiNQoI", - "TG9nQmF0Y2gSKQoHcmVjb3JkcxgBIAMoCzIYLmxpdmVraXQucHJvdG8uTG9n", - "UmVjb3JkIhgKBVBhbmljEg8KB21lc3NhZ2UYASACKAkqUwoITG9nTGV2ZWwS", - "DQoJTE9HX0VSUk9SEAASDAoITE9HX1dBUk4QARIMCghMT0dfSU5GTxACEg0K", - "CUxPR19ERUJVRxADEg0KCUxPR19UUkFDRRAEQhCqAg1MaXZlS2l0LlByb3Rv")); + "dG8aEWRhdGFfc3RyZWFtLnByb3RvGhBkYXRhX3RyYWNrLnByb3RvIqwqCgpG", + "ZmlSZXF1ZXN0EjAKB2Rpc3Bvc2UYAiABKAsyHS5saXZla2l0LnByb3RvLkRp", + "c3Bvc2VSZXF1ZXN0SAASMAoHY29ubmVjdBgDIAEoCzIdLmxpdmVraXQucHJv", + "dG8uQ29ubmVjdFJlcXVlc3RIABI2CgpkaXNjb25uZWN0GAQgASgLMiAubGl2", + "ZWtpdC5wcm90by5EaXNjb25uZWN0UmVxdWVzdEgAEjsKDXB1Ymxpc2hfdHJh", + "Y2sYBSABKAsyIi5saXZla2l0LnByb3RvLlB1Ymxpc2hUcmFja1JlcXVlc3RI", + "ABI/Cg91bnB1Ymxpc2hfdHJhY2sYBiABKAsyJC5saXZla2l0LnByb3RvLlVu", + "cHVibGlzaFRyYWNrUmVxdWVzdEgAEjkKDHB1Ymxpc2hfZGF0YRgHIAEoCzIh", + "LmxpdmVraXQucHJvdG8uUHVibGlzaERhdGFSZXF1ZXN0SAASPQoOc2V0X3N1", + "YnNjcmliZWQYCCABKAsyIy5saXZla2l0LnByb3RvLlNldFN1YnNjcmliZWRS", + "ZXF1ZXN0SAASRAoSc2V0X2xvY2FsX21ldGFkYXRhGAkgASgLMiYubGl2ZWtp", + "dC5wcm90by5TZXRMb2NhbE1ldGFkYXRhUmVxdWVzdEgAEjwKDnNldF9sb2Nh", + "bF9uYW1lGAogASgLMiIubGl2ZWtpdC5wcm90by5TZXRMb2NhbE5hbWVSZXF1", + "ZXN0SAASSAoUc2V0X2xvY2FsX2F0dHJpYnV0ZXMYCyABKAsyKC5saXZla2l0", + "LnByb3RvLlNldExvY2FsQXR0cmlidXRlc1JlcXVlc3RIABJCChFnZXRfc2Vz", + "c2lvbl9zdGF0cxgMIAEoCzIlLmxpdmVraXQucHJvdG8uR2V0U2Vzc2lvblN0", + "YXRzUmVxdWVzdEgAEksKFXB1Ymxpc2hfdHJhbnNjcmlwdGlvbhgNIAEoCzIq", + "LmxpdmVraXQucHJvdG8uUHVibGlzaFRyYW5zY3JpcHRpb25SZXF1ZXN0SAAS", + "QAoQcHVibGlzaF9zaXBfZHRtZhgOIAEoCzIkLmxpdmVraXQucHJvdG8uUHVi", + "bGlzaFNpcER0bWZSZXF1ZXN0SAASRAoSY3JlYXRlX3ZpZGVvX3RyYWNrGA8g", + "ASgLMiYubGl2ZWtpdC5wcm90by5DcmVhdGVWaWRlb1RyYWNrUmVxdWVzdEgA", + "EkQKEmNyZWF0ZV9hdWRpb190cmFjaxgQIAEoCzImLmxpdmVraXQucHJvdG8u", + "Q3JlYXRlQXVkaW9UcmFja1JlcXVlc3RIABJAChBsb2NhbF90cmFja19tdXRl", + "GBEgASgLMiQubGl2ZWtpdC5wcm90by5Mb2NhbFRyYWNrTXV0ZVJlcXVlc3RI", + "ABJGChNlbmFibGVfcmVtb3RlX3RyYWNrGBIgASgLMicubGl2ZWtpdC5wcm90", + "by5FbmFibGVSZW1vdGVUcmFja1JlcXVlc3RIABIzCglnZXRfc3RhdHMYEyAB", + "KAsyHi5saXZla2l0LnByb3RvLkdldFN0YXRzUmVxdWVzdEgAEmMKInNldF90", + "cmFja19zdWJzY3JpcHRpb25fcGVybWlzc2lvbnMYMCABKAsyNS5saXZla2l0", + "LnByb3RvLlNldFRyYWNrU3Vic2NyaXB0aW9uUGVybWlzc2lvbnNSZXF1ZXN0", + "SAASQAoQbmV3X3ZpZGVvX3N0cmVhbRgUIAEoCzIkLmxpdmVraXQucHJvdG8u", + "TmV3VmlkZW9TdHJlYW1SZXF1ZXN0SAASQAoQbmV3X3ZpZGVvX3NvdXJjZRgV", + "IAEoCzIkLmxpdmVraXQucHJvdG8uTmV3VmlkZW9Tb3VyY2VSZXF1ZXN0SAAS", + "RgoTY2FwdHVyZV92aWRlb19mcmFtZRgWIAEoCzInLmxpdmVraXQucHJvdG8u", + "Q2FwdHVyZVZpZGVvRnJhbWVSZXF1ZXN0SAASOwoNdmlkZW9fY29udmVydBgX", + "IAEoCzIiLmxpdmVraXQucHJvdG8uVmlkZW9Db252ZXJ0UmVxdWVzdEgAElkK", + "HXZpZGVvX3N0cmVhbV9mcm9tX3BhcnRpY2lwYW50GBggASgLMjAubGl2ZWtp", + "dC5wcm90by5WaWRlb1N0cmVhbUZyb21QYXJ0aWNpcGFudFJlcXVlc3RIABJA", + "ChBuZXdfYXVkaW9fc3RyZWFtGBkgASgLMiQubGl2ZWtpdC5wcm90by5OZXdB", + "dWRpb1N0cmVhbVJlcXVlc3RIABJAChBuZXdfYXVkaW9fc291cmNlGBogASgL", + "MiQubGl2ZWtpdC5wcm90by5OZXdBdWRpb1NvdXJjZVJlcXVlc3RIABJGChNj", + "YXB0dXJlX2F1ZGlvX2ZyYW1lGBsgASgLMicubGl2ZWtpdC5wcm90by5DYXB0", + "dXJlQXVkaW9GcmFtZVJlcXVlc3RIABJEChJjbGVhcl9hdWRpb19idWZmZXIY", + "HCABKAsyJi5saXZla2l0LnByb3RvLkNsZWFyQXVkaW9CdWZmZXJSZXF1ZXN0", + "SAASRgoTbmV3X2F1ZGlvX3Jlc2FtcGxlchgdIAEoCzInLmxpdmVraXQucHJv", + "dG8uTmV3QXVkaW9SZXNhbXBsZXJSZXF1ZXN0SAASRAoScmVtaXhfYW5kX3Jl", + "c2FtcGxlGB4gASgLMiYubGl2ZWtpdC5wcm90by5SZW1peEFuZFJlc2FtcGxl", + "UmVxdWVzdEgAEioKBGUyZWUYHyABKAsyGi5saXZla2l0LnByb3RvLkUyZWVS", + "ZXF1ZXN0SAASWQodYXVkaW9fc3RyZWFtX2Zyb21fcGFydGljaXBhbnQYICAB", + "KAsyMC5saXZla2l0LnByb3RvLkF1ZGlvU3RyZWFtRnJvbVBhcnRpY2lwYW50", + "UmVxdWVzdEgAEkIKEW5ld19zb3hfcmVzYW1wbGVyGCEgASgLMiUubGl2ZWtp", + "dC5wcm90by5OZXdTb3hSZXNhbXBsZXJSZXF1ZXN0SAASRAoScHVzaF9zb3hf", + "cmVzYW1wbGVyGCIgASgLMiYubGl2ZWtpdC5wcm90by5QdXNoU294UmVzYW1w", + "bGVyUmVxdWVzdEgAEkYKE2ZsdXNoX3NveF9yZXNhbXBsZXIYIyABKAsyJy5s", + "aXZla2l0LnByb3RvLkZsdXNoU294UmVzYW1wbGVyUmVxdWVzdEgAEkIKEXNl", + "bmRfY2hhdF9tZXNzYWdlGCQgASgLMiUubGl2ZWtpdC5wcm90by5TZW5kQ2hh", + "dE1lc3NhZ2VSZXF1ZXN0SAASQgoRZWRpdF9jaGF0X21lc3NhZ2UYJSABKAsy", + "JS5saXZla2l0LnByb3RvLkVkaXRDaGF0TWVzc2FnZVJlcXVlc3RIABI3Cgtw", + "ZXJmb3JtX3JwYxgmIAEoCzIgLmxpdmVraXQucHJvdG8uUGVyZm9ybVJwY1Jl", + "cXVlc3RIABJGChNyZWdpc3Rlcl9ycGNfbWV0aG9kGCcgASgLMicubGl2ZWtp", + "dC5wcm90by5SZWdpc3RlclJwY01ldGhvZFJlcXVlc3RIABJKChV1bnJlZ2lz", + "dGVyX3JwY19tZXRob2QYKCABKAsyKS5saXZla2l0LnByb3RvLlVucmVnaXN0", + "ZXJScGNNZXRob2RSZXF1ZXN0SAASWwoecnBjX21ldGhvZF9pbnZvY2F0aW9u", + "X3Jlc3BvbnNlGCkgASgLMjEubGl2ZWtpdC5wcm90by5ScGNNZXRob2RJbnZv", + "Y2F0aW9uUmVzcG9uc2VSZXF1ZXN0SAASXQofZW5hYmxlX3JlbW90ZV90cmFj", + "a19wdWJsaWNhdGlvbhgqIAEoCzIyLmxpdmVraXQucHJvdG8uRW5hYmxlUmVt", + "b3RlVHJhY2tQdWJsaWNhdGlvblJlcXVlc3RIABJwCil1cGRhdGVfcmVtb3Rl", + "X3RyYWNrX3B1YmxpY2F0aW9uX2RpbWVuc2lvbhgrIAEoCzI7LmxpdmVraXQu", + "cHJvdG8uVXBkYXRlUmVtb3RlVHJhY2tQdWJsaWNhdGlvbkRpbWVuc2lvblJl", + "cXVlc3RIABJEChJzZW5kX3N0cmVhbV9oZWFkZXIYLCABKAsyJi5saXZla2l0", + "LnByb3RvLlNlbmRTdHJlYW1IZWFkZXJSZXF1ZXN0SAASQgoRc2VuZF9zdHJl", + "YW1fY2h1bmsYLSABKAsyJS5saXZla2l0LnByb3RvLlNlbmRTdHJlYW1DaHVu", + "a1JlcXVlc3RIABJGChNzZW5kX3N0cmVhbV90cmFpbGVyGC4gASgLMicubGl2", + "ZWtpdC5wcm90by5TZW5kU3RyZWFtVHJhaWxlclJlcXVlc3RIABJ4Ci5zZXRf", + "ZGF0YV9jaGFubmVsX2J1ZmZlcmVkX2Ftb3VudF9sb3dfdGhyZXNob2xkGC8g", + "ASgLMj4ubGl2ZWtpdC5wcm90by5TZXREYXRhQ2hhbm5lbEJ1ZmZlcmVkQW1v", + "dW50TG93VGhyZXNob2xkUmVxdWVzdEgAEk8KGGxvYWRfYXVkaW9fZmlsdGVy", + "X3BsdWdpbhgxIAEoCzIrLmxpdmVraXQucHJvdG8uTG9hZEF1ZGlvRmlsdGVy", + "UGx1Z2luUmVxdWVzdEgAEi8KB25ld19hcG0YMiABKAsyHC5saXZla2l0LnBy", + "b3RvLk5ld0FwbVJlcXVlc3RIABJEChJhcG1fcHJvY2Vzc19zdHJlYW0YMyAB", + "KAsyJi5saXZla2l0LnByb3RvLkFwbVByb2Nlc3NTdHJlYW1SZXF1ZXN0SAAS", + "UwoaYXBtX3Byb2Nlc3NfcmV2ZXJzZV9zdHJlYW0YNCABKAsyLS5saXZla2l0", + "LnByb3RvLkFwbVByb2Nlc3NSZXZlcnNlU3RyZWFtUmVxdWVzdEgAEkcKFGFw", + "bV9zZXRfc3RyZWFtX2RlbGF5GDUgASgLMicubGl2ZWtpdC5wcm90by5BcG1T", + "ZXRTdHJlYW1EZWxheVJlcXVlc3RIABJWChVieXRlX3JlYWRfaW5jcmVtZW50", + "YWwYNiABKAsyNS5saXZla2l0LnByb3RvLkJ5dGVTdHJlYW1SZWFkZXJSZWFk", + "SW5jcmVtZW50YWxSZXF1ZXN0SAASRgoNYnl0ZV9yZWFkX2FsbBg3IAEoCzIt", + "LmxpdmVraXQucHJvdG8uQnl0ZVN0cmVhbVJlYWRlclJlYWRBbGxSZXF1ZXN0", + "SAASTwoSYnl0ZV93cml0ZV90b19maWxlGDggASgLMjEubGl2ZWtpdC5wcm90", + "by5CeXRlU3RyZWFtUmVhZGVyV3JpdGVUb0ZpbGVSZXF1ZXN0SAASVgoVdGV4", + "dF9yZWFkX2luY3JlbWVudGFsGDkgASgLMjUubGl2ZWtpdC5wcm90by5UZXh0", + "U3RyZWFtUmVhZGVyUmVhZEluY3JlbWVudGFsUmVxdWVzdEgAEkYKDXRleHRf", + "cmVhZF9hbGwYOiABKAsyLS5saXZla2l0LnByb3RvLlRleHRTdHJlYW1SZWFk", + "ZXJSZWFkQWxsUmVxdWVzdEgAEjkKCXNlbmRfZmlsZRg7IAEoCzIkLmxpdmVr", + "aXQucHJvdG8uU3RyZWFtU2VuZEZpbGVSZXF1ZXN0SAASOQoJc2VuZF90ZXh0", + "GDwgASgLMiQubGl2ZWtpdC5wcm90by5TdHJlYW1TZW5kVGV4dFJlcXVlc3RI", + "ABJAChBieXRlX3N0cmVhbV9vcGVuGD0gASgLMiQubGl2ZWtpdC5wcm90by5C", + "eXRlU3RyZWFtT3BlblJlcXVlc3RIABJIChFieXRlX3N0cmVhbV93cml0ZRg+", + "IAEoCzIrLmxpdmVraXQucHJvdG8uQnl0ZVN0cmVhbVdyaXRlcldyaXRlUmVx", + "dWVzdEgAEkgKEWJ5dGVfc3RyZWFtX2Nsb3NlGD8gASgLMisubGl2ZWtpdC5w", + "cm90by5CeXRlU3RyZWFtV3JpdGVyQ2xvc2VSZXF1ZXN0SAASQAoQdGV4dF9z", + "dHJlYW1fb3BlbhhAIAEoCzIkLmxpdmVraXQucHJvdG8uVGV4dFN0cmVhbU9w", + "ZW5SZXF1ZXN0SAASSAoRdGV4dF9zdHJlYW1fd3JpdGUYQSABKAsyKy5saXZl", + "a2l0LnByb3RvLlRleHRTdHJlYW1Xcml0ZXJXcml0ZVJlcXVlc3RIABJIChF0", + "ZXh0X3N0cmVhbV9jbG9zZRhCIAEoCzIrLmxpdmVraXQucHJvdG8uVGV4dFN0", + "cmVhbVdyaXRlckNsb3NlUmVxdWVzdEgAEjsKCnNlbmRfYnl0ZXMYQyABKAsy", + "JS5saXZla2l0LnByb3RvLlN0cmVhbVNlbmRCeXRlc1JlcXVlc3RIABJmCiRz", + "ZXRfcmVtb3RlX3RyYWNrX3B1YmxpY2F0aW9uX3F1YWxpdHkYRCABKAsyNi5s", + "aXZla2l0LnByb3RvLlNldFJlbW90ZVRyYWNrUHVibGljYXRpb25RdWFsaXR5", + "UmVxdWVzdEgAEkQKEnB1Ymxpc2hfZGF0YV90cmFjaxhFIAEoCzImLmxpdmVr", + "aXQucHJvdG8uUHVibGlzaERhdGFUcmFja1JlcXVlc3RIABJQChlsb2NhbF9k", + "YXRhX3RyYWNrX3RyeV9wdXNoGEYgASgLMisubGl2ZWtpdC5wcm90by5Mb2Nh", + "bERhdGFUcmFja1RyeVB1c2hSZXF1ZXN0SAASUwoabG9jYWxfZGF0YV90cmFj", + "a191bnB1Ymxpc2gYRyABKAsyLS5saXZla2l0LnByb3RvLkxvY2FsRGF0YVRy", + "YWNrVW5wdWJsaXNoUmVxdWVzdEgAElgKHWxvY2FsX2RhdGFfdHJhY2tfaXNf", + "cHVibGlzaGVkGEggASgLMi8ubGl2ZWtpdC5wcm90by5Mb2NhbERhdGFUcmFj", + "a0lzUHVibGlzaGVkUmVxdWVzdEgAEkgKFHN1YnNjcmliZV9kYXRhX3RyYWNr", + "GEkgASgLMigubGl2ZWtpdC5wcm90by5TdWJzY3JpYmVEYXRhVHJhY2tSZXF1", + "ZXN0SAASWgoecmVtb3RlX2RhdGFfdHJhY2tfaXNfcHVibGlzaGVkGEogASgL", + "MjAubGl2ZWtpdC5wcm90by5SZW1vdGVEYXRhVHJhY2tJc1B1Ymxpc2hlZFJl", + "cXVlc3RIABJXChxkYXRhX3RyYWNrX3N1YnNjcmlwdGlvbl9yZWFkGEsgASgL", + "Mi8ubGl2ZWtpdC5wcm90by5EYXRhVHJhY2tTdWJzY3JpcHRpb25SZWFkUmVx", + "dWVzdEgAQgkKB21lc3NhZ2UisioKC0ZmaVJlc3BvbnNlEjEKB2Rpc3Bvc2UY", + "AiABKAsyHi5saXZla2l0LnByb3RvLkRpc3Bvc2VSZXNwb25zZUgAEjEKB2Nv", + "bm5lY3QYAyABKAsyHi5saXZla2l0LnByb3RvLkNvbm5lY3RSZXNwb25zZUgA", + "EjcKCmRpc2Nvbm5lY3QYBCABKAsyIS5saXZla2l0LnByb3RvLkRpc2Nvbm5l", + "Y3RSZXNwb25zZUgAEjwKDXB1Ymxpc2hfdHJhY2sYBSABKAsyIy5saXZla2l0", + "LnByb3RvLlB1Ymxpc2hUcmFja1Jlc3BvbnNlSAASQAoPdW5wdWJsaXNoX3Ry", + "YWNrGAYgASgLMiUubGl2ZWtpdC5wcm90by5VbnB1Ymxpc2hUcmFja1Jlc3Bv", + "bnNlSAASOgoMcHVibGlzaF9kYXRhGAcgASgLMiIubGl2ZWtpdC5wcm90by5Q", + "dWJsaXNoRGF0YVJlc3BvbnNlSAASPgoOc2V0X3N1YnNjcmliZWQYCCABKAsy", + "JC5saXZla2l0LnByb3RvLlNldFN1YnNjcmliZWRSZXNwb25zZUgAEkUKEnNl", + "dF9sb2NhbF9tZXRhZGF0YRgJIAEoCzInLmxpdmVraXQucHJvdG8uU2V0TG9j", + "YWxNZXRhZGF0YVJlc3BvbnNlSAASPQoOc2V0X2xvY2FsX25hbWUYCiABKAsy", + "Iy5saXZla2l0LnByb3RvLlNldExvY2FsTmFtZVJlc3BvbnNlSAASSQoUc2V0", + "X2xvY2FsX2F0dHJpYnV0ZXMYCyABKAsyKS5saXZla2l0LnByb3RvLlNldExv", + "Y2FsQXR0cmlidXRlc1Jlc3BvbnNlSAASQwoRZ2V0X3Nlc3Npb25fc3RhdHMY", + "DCABKAsyJi5saXZla2l0LnByb3RvLkdldFNlc3Npb25TdGF0c1Jlc3BvbnNl", + "SAASTAoVcHVibGlzaF90cmFuc2NyaXB0aW9uGA0gASgLMisubGl2ZWtpdC5w", + "cm90by5QdWJsaXNoVHJhbnNjcmlwdGlvblJlc3BvbnNlSAASQQoQcHVibGlz", + "aF9zaXBfZHRtZhgOIAEoCzIlLmxpdmVraXQucHJvdG8uUHVibGlzaFNpcER0", + "bWZSZXNwb25zZUgAEkUKEmNyZWF0ZV92aWRlb190cmFjaxgPIAEoCzInLmxp", + "dmVraXQucHJvdG8uQ3JlYXRlVmlkZW9UcmFja1Jlc3BvbnNlSAASRQoSY3Jl", + "YXRlX2F1ZGlvX3RyYWNrGBAgASgLMicubGl2ZWtpdC5wcm90by5DcmVhdGVB", + "dWRpb1RyYWNrUmVzcG9uc2VIABJBChBsb2NhbF90cmFja19tdXRlGBEgASgL", + "MiUubGl2ZWtpdC5wcm90by5Mb2NhbFRyYWNrTXV0ZVJlc3BvbnNlSAASRwoT", + "ZW5hYmxlX3JlbW90ZV90cmFjaxgSIAEoCzIoLmxpdmVraXQucHJvdG8uRW5h", + "YmxlUmVtb3RlVHJhY2tSZXNwb25zZUgAEjQKCWdldF9zdGF0cxgTIAEoCzIf", + "LmxpdmVraXQucHJvdG8uR2V0U3RhdHNSZXNwb25zZUgAEmQKInNldF90cmFj", + "a19zdWJzY3JpcHRpb25fcGVybWlzc2lvbnMYLyABKAsyNi5saXZla2l0LnBy", + "b3RvLlNldFRyYWNrU3Vic2NyaXB0aW9uUGVybWlzc2lvbnNSZXNwb25zZUgA", + "EkEKEG5ld192aWRlb19zdHJlYW0YFCABKAsyJS5saXZla2l0LnByb3RvLk5l", + "d1ZpZGVvU3RyZWFtUmVzcG9uc2VIABJBChBuZXdfdmlkZW9fc291cmNlGBUg", + "ASgLMiUubGl2ZWtpdC5wcm90by5OZXdWaWRlb1NvdXJjZVJlc3BvbnNlSAAS", + "RwoTY2FwdHVyZV92aWRlb19mcmFtZRgWIAEoCzIoLmxpdmVraXQucHJvdG8u", + "Q2FwdHVyZVZpZGVvRnJhbWVSZXNwb25zZUgAEjwKDXZpZGVvX2NvbnZlcnQY", + "FyABKAsyIy5saXZla2l0LnByb3RvLlZpZGVvQ29udmVydFJlc3BvbnNlSAAS", + "WgoddmlkZW9fc3RyZWFtX2Zyb21fcGFydGljaXBhbnQYGCABKAsyMS5saXZl", + "a2l0LnByb3RvLlZpZGVvU3RyZWFtRnJvbVBhcnRpY2lwYW50UmVzcG9uc2VI", + "ABJBChBuZXdfYXVkaW9fc3RyZWFtGBkgASgLMiUubGl2ZWtpdC5wcm90by5O", + "ZXdBdWRpb1N0cmVhbVJlc3BvbnNlSAASQQoQbmV3X2F1ZGlvX3NvdXJjZRga", + "IAEoCzIlLmxpdmVraXQucHJvdG8uTmV3QXVkaW9Tb3VyY2VSZXNwb25zZUgA", + "EkcKE2NhcHR1cmVfYXVkaW9fZnJhbWUYGyABKAsyKC5saXZla2l0LnByb3Rv", + "LkNhcHR1cmVBdWRpb0ZyYW1lUmVzcG9uc2VIABJFChJjbGVhcl9hdWRpb19i", + "dWZmZXIYHCABKAsyJy5saXZla2l0LnByb3RvLkNsZWFyQXVkaW9CdWZmZXJS", + "ZXNwb25zZUgAEkcKE25ld19hdWRpb19yZXNhbXBsZXIYHSABKAsyKC5saXZl", + "a2l0LnByb3RvLk5ld0F1ZGlvUmVzYW1wbGVyUmVzcG9uc2VIABJFChJyZW1p", + "eF9hbmRfcmVzYW1wbGUYHiABKAsyJy5saXZla2l0LnByb3RvLlJlbWl4QW5k", + "UmVzYW1wbGVSZXNwb25zZUgAEloKHWF1ZGlvX3N0cmVhbV9mcm9tX3BhcnRp", + "Y2lwYW50GB8gASgLMjEubGl2ZWtpdC5wcm90by5BdWRpb1N0cmVhbUZyb21Q", + "YXJ0aWNpcGFudFJlc3BvbnNlSAASKwoEZTJlZRggIAEoCzIbLmxpdmVraXQu", + "cHJvdG8uRTJlZVJlc3BvbnNlSAASQwoRbmV3X3NveF9yZXNhbXBsZXIYISAB", + "KAsyJi5saXZla2l0LnByb3RvLk5ld1NveFJlc2FtcGxlclJlc3BvbnNlSAAS", + "RQoScHVzaF9zb3hfcmVzYW1wbGVyGCIgASgLMicubGl2ZWtpdC5wcm90by5Q", + "dXNoU294UmVzYW1wbGVyUmVzcG9uc2VIABJHChNmbHVzaF9zb3hfcmVzYW1w", + "bGVyGCMgASgLMigubGl2ZWtpdC5wcm90by5GbHVzaFNveFJlc2FtcGxlclJl", + "c3BvbnNlSAASQwoRc2VuZF9jaGF0X21lc3NhZ2UYJCABKAsyJi5saXZla2l0", + "LnByb3RvLlNlbmRDaGF0TWVzc2FnZVJlc3BvbnNlSAASOAoLcGVyZm9ybV9y", + "cGMYJSABKAsyIS5saXZla2l0LnByb3RvLlBlcmZvcm1ScGNSZXNwb25zZUgA", + "EkcKE3JlZ2lzdGVyX3JwY19tZXRob2QYJiABKAsyKC5saXZla2l0LnByb3Rv", + "LlJlZ2lzdGVyUnBjTWV0aG9kUmVzcG9uc2VIABJLChV1bnJlZ2lzdGVyX3Jw", + "Y19tZXRob2QYJyABKAsyKi5saXZla2l0LnByb3RvLlVucmVnaXN0ZXJScGNN", + "ZXRob2RSZXNwb25zZUgAElwKHnJwY19tZXRob2RfaW52b2NhdGlvbl9yZXNw", + "b25zZRgoIAEoCzIyLmxpdmVraXQucHJvdG8uUnBjTWV0aG9kSW52b2NhdGlv", + "blJlc3BvbnNlUmVzcG9uc2VIABJeCh9lbmFibGVfcmVtb3RlX3RyYWNrX3B1", + "YmxpY2F0aW9uGCkgASgLMjMubGl2ZWtpdC5wcm90by5FbmFibGVSZW1vdGVU", + "cmFja1B1YmxpY2F0aW9uUmVzcG9uc2VIABJxCil1cGRhdGVfcmVtb3RlX3Ry", + "YWNrX3B1YmxpY2F0aW9uX2RpbWVuc2lvbhgqIAEoCzI8LmxpdmVraXQucHJv", + "dG8uVXBkYXRlUmVtb3RlVHJhY2tQdWJsaWNhdGlvbkRpbWVuc2lvblJlc3Bv", + "bnNlSAASRQoSc2VuZF9zdHJlYW1faGVhZGVyGCsgASgLMicubGl2ZWtpdC5w", + "cm90by5TZW5kU3RyZWFtSGVhZGVyUmVzcG9uc2VIABJDChFzZW5kX3N0cmVh", + "bV9jaHVuaxgsIAEoCzImLmxpdmVraXQucHJvdG8uU2VuZFN0cmVhbUNodW5r", + "UmVzcG9uc2VIABJHChNzZW5kX3N0cmVhbV90cmFpbGVyGC0gASgLMigubGl2", + "ZWtpdC5wcm90by5TZW5kU3RyZWFtVHJhaWxlclJlc3BvbnNlSAASeQouc2V0", + "X2RhdGFfY2hhbm5lbF9idWZmZXJlZF9hbW91bnRfbG93X3RocmVzaG9sZBgu", + "IAEoCzI/LmxpdmVraXQucHJvdG8uU2V0RGF0YUNoYW5uZWxCdWZmZXJlZEFt", + "b3VudExvd1RocmVzaG9sZFJlc3BvbnNlSAASUAoYbG9hZF9hdWRpb19maWx0", + "ZXJfcGx1Z2luGDAgASgLMiwubGl2ZWtpdC5wcm90by5Mb2FkQXVkaW9GaWx0", + "ZXJQbHVnaW5SZXNwb25zZUgAEjAKB25ld19hcG0YMSABKAsyHS5saXZla2l0", + "LnByb3RvLk5ld0FwbVJlc3BvbnNlSAASRQoSYXBtX3Byb2Nlc3Nfc3RyZWFt", + "GDIgASgLMicubGl2ZWtpdC5wcm90by5BcG1Qcm9jZXNzU3RyZWFtUmVzcG9u", + "c2VIABJUChphcG1fcHJvY2Vzc19yZXZlcnNlX3N0cmVhbRgzIAEoCzIuLmxp", + "dmVraXQucHJvdG8uQXBtUHJvY2Vzc1JldmVyc2VTdHJlYW1SZXNwb25zZUgA", + "EkgKFGFwbV9zZXRfc3RyZWFtX2RlbGF5GDQgASgLMigubGl2ZWtpdC5wcm90", + "by5BcG1TZXRTdHJlYW1EZWxheVJlc3BvbnNlSAASVwoVYnl0ZV9yZWFkX2lu", + "Y3JlbWVudGFsGDUgASgLMjYubGl2ZWtpdC5wcm90by5CeXRlU3RyZWFtUmVh", + "ZGVyUmVhZEluY3JlbWVudGFsUmVzcG9uc2VIABJHCg1ieXRlX3JlYWRfYWxs", + "GDYgASgLMi4ubGl2ZWtpdC5wcm90by5CeXRlU3RyZWFtUmVhZGVyUmVhZEFs", + "bFJlc3BvbnNlSAASUAoSYnl0ZV93cml0ZV90b19maWxlGDcgASgLMjIubGl2", + "ZWtpdC5wcm90by5CeXRlU3RyZWFtUmVhZGVyV3JpdGVUb0ZpbGVSZXNwb25z", + "ZUgAElcKFXRleHRfcmVhZF9pbmNyZW1lbnRhbBg4IAEoCzI2LmxpdmVraXQu", + "cHJvdG8uVGV4dFN0cmVhbVJlYWRlclJlYWRJbmNyZW1lbnRhbFJlc3BvbnNl", + "SAASRwoNdGV4dF9yZWFkX2FsbBg5IAEoCzIuLmxpdmVraXQucHJvdG8uVGV4", + "dFN0cmVhbVJlYWRlclJlYWRBbGxSZXNwb25zZUgAEjoKCXNlbmRfZmlsZRg6", + "IAEoCzIlLmxpdmVraXQucHJvdG8uU3RyZWFtU2VuZEZpbGVSZXNwb25zZUgA", + "EjoKCXNlbmRfdGV4dBg7IAEoCzIlLmxpdmVraXQucHJvdG8uU3RyZWFtU2Vu", + "ZFRleHRSZXNwb25zZUgAEkEKEGJ5dGVfc3RyZWFtX29wZW4YPCABKAsyJS5s", + "aXZla2l0LnByb3RvLkJ5dGVTdHJlYW1PcGVuUmVzcG9uc2VIABJJChFieXRl", + "X3N0cmVhbV93cml0ZRg9IAEoCzIsLmxpdmVraXQucHJvdG8uQnl0ZVN0cmVh", + "bVdyaXRlcldyaXRlUmVzcG9uc2VIABJJChFieXRlX3N0cmVhbV9jbG9zZRg+", + "IAEoCzIsLmxpdmVraXQucHJvdG8uQnl0ZVN0cmVhbVdyaXRlckNsb3NlUmVz", + "cG9uc2VIABJBChB0ZXh0X3N0cmVhbV9vcGVuGD8gASgLMiUubGl2ZWtpdC5w", + "cm90by5UZXh0U3RyZWFtT3BlblJlc3BvbnNlSAASSQoRdGV4dF9zdHJlYW1f", + "d3JpdGUYQCABKAsyLC5saXZla2l0LnByb3RvLlRleHRTdHJlYW1Xcml0ZXJX", + "cml0ZVJlc3BvbnNlSAASSQoRdGV4dF9zdHJlYW1fY2xvc2UYQSABKAsyLC5s", + "aXZla2l0LnByb3RvLlRleHRTdHJlYW1Xcml0ZXJDbG9zZVJlc3BvbnNlSAAS", + "PAoKc2VuZF9ieXRlcxhCIAEoCzImLmxpdmVraXQucHJvdG8uU3RyZWFtU2Vu", + "ZEJ5dGVzUmVzcG9uc2VIABJnCiRzZXRfcmVtb3RlX3RyYWNrX3B1YmxpY2F0", + "aW9uX3F1YWxpdHkYQyABKAsyNy5saXZla2l0LnByb3RvLlNldFJlbW90ZVRy", + "YWNrUHVibGljYXRpb25RdWFsaXR5UmVzcG9uc2VIABJFChJwdWJsaXNoX2Rh", + "dGFfdHJhY2sYRCABKAsyJy5saXZla2l0LnByb3RvLlB1Ymxpc2hEYXRhVHJh", + "Y2tSZXNwb25zZUgAElEKGWxvY2FsX2RhdGFfdHJhY2tfdHJ5X3B1c2gYRSAB", + "KAsyLC5saXZla2l0LnByb3RvLkxvY2FsRGF0YVRyYWNrVHJ5UHVzaFJlc3Bv", + "bnNlSAASVAoabG9jYWxfZGF0YV90cmFja191bnB1Ymxpc2gYRiABKAsyLi5s", + "aXZla2l0LnByb3RvLkxvY2FsRGF0YVRyYWNrVW5wdWJsaXNoUmVzcG9uc2VI", + "ABJZCh1sb2NhbF9kYXRhX3RyYWNrX2lzX3B1Ymxpc2hlZBhHIAEoCzIwLmxp", + "dmVraXQucHJvdG8uTG9jYWxEYXRhVHJhY2tJc1B1Ymxpc2hlZFJlc3BvbnNl", + "SAASSQoUc3Vic2NyaWJlX2RhdGFfdHJhY2sYSCABKAsyKS5saXZla2l0LnBy", + "b3RvLlN1YnNjcmliZURhdGFUcmFja1Jlc3BvbnNlSAASWwoecmVtb3RlX2Rh", + "dGFfdHJhY2tfaXNfcHVibGlzaGVkGEkgASgLMjEubGl2ZWtpdC5wcm90by5S", + "ZW1vdGVEYXRhVHJhY2tJc1B1Ymxpc2hlZFJlc3BvbnNlSAASWAocZGF0YV90", + "cmFja19zdWJzY3JpcHRpb25fcmVhZBhKIAEoCzIwLmxpdmVraXQucHJvdG8u", + "RGF0YVRyYWNrU3Vic2NyaXB0aW9uUmVhZFJlc3BvbnNlSABCCQoHbWVzc2Fn", + "ZSKgFgoIRmZpRXZlbnQSLgoKcm9vbV9ldmVudBgBIAEoCzIYLmxpdmVraXQu", + "cHJvdG8uUm9vbUV2ZW50SAASMAoLdHJhY2tfZXZlbnQYAiABKAsyGS5saXZl", + "a2l0LnByb3RvLlRyYWNrRXZlbnRIABI9ChJ2aWRlb19zdHJlYW1fZXZlbnQY", + "AyABKAsyHy5saXZla2l0LnByb3RvLlZpZGVvU3RyZWFtRXZlbnRIABI9ChJh", + "dWRpb19zdHJlYW1fZXZlbnQYBCABKAsyHy5saXZla2l0LnByb3RvLkF1ZGlv", + "U3RyZWFtRXZlbnRIABIxCgdjb25uZWN0GAUgASgLMh4ubGl2ZWtpdC5wcm90", + "by5Db25uZWN0Q2FsbGJhY2tIABI3CgpkaXNjb25uZWN0GAcgASgLMiEubGl2", + "ZWtpdC5wcm90by5EaXNjb25uZWN0Q2FsbGJhY2tIABIxCgdkaXNwb3NlGAgg", + "ASgLMh4ubGl2ZWtpdC5wcm90by5EaXNwb3NlQ2FsbGJhY2tIABI8Cg1wdWJs", + "aXNoX3RyYWNrGAkgASgLMiMubGl2ZWtpdC5wcm90by5QdWJsaXNoVHJhY2tD", + "YWxsYmFja0gAEkAKD3VucHVibGlzaF90cmFjaxgKIAEoCzIlLmxpdmVraXQu", + "cHJvdG8uVW5wdWJsaXNoVHJhY2tDYWxsYmFja0gAEjoKDHB1Ymxpc2hfZGF0", + "YRgLIAEoCzIiLmxpdmVraXQucHJvdG8uUHVibGlzaERhdGFDYWxsYmFja0gA", + "EkwKFXB1Ymxpc2hfdHJhbnNjcmlwdGlvbhgMIAEoCzIrLmxpdmVraXQucHJv", + "dG8uUHVibGlzaFRyYW5zY3JpcHRpb25DYWxsYmFja0gAEkcKE2NhcHR1cmVf", + "YXVkaW9fZnJhbWUYDSABKAsyKC5saXZla2l0LnByb3RvLkNhcHR1cmVBdWRp", + "b0ZyYW1lQ2FsbGJhY2tIABJFChJzZXRfbG9jYWxfbWV0YWRhdGEYDiABKAsy", + "Jy5saXZla2l0LnByb3RvLlNldExvY2FsTWV0YWRhdGFDYWxsYmFja0gAEj0K", + "DnNldF9sb2NhbF9uYW1lGA8gASgLMiMubGl2ZWtpdC5wcm90by5TZXRMb2Nh", + "bE5hbWVDYWxsYmFja0gAEkkKFHNldF9sb2NhbF9hdHRyaWJ1dGVzGBAgASgL", + "MikubGl2ZWtpdC5wcm90by5TZXRMb2NhbEF0dHJpYnV0ZXNDYWxsYmFja0gA", + "EjQKCWdldF9zdGF0cxgRIAEoCzIfLmxpdmVraXQucHJvdG8uR2V0U3RhdHND", + "YWxsYmFja0gAEicKBGxvZ3MYEiABKAsyFy5saXZla2l0LnByb3RvLkxvZ0Jh", + "dGNoSAASQwoRZ2V0X3Nlc3Npb25fc3RhdHMYEyABKAsyJi5saXZla2l0LnBy", + "b3RvLkdldFNlc3Npb25TdGF0c0NhbGxiYWNrSAASJQoFcGFuaWMYFCABKAsy", + "FC5saXZla2l0LnByb3RvLlBhbmljSAASQQoQcHVibGlzaF9zaXBfZHRtZhgV", + "IAEoCzIlLmxpdmVraXQucHJvdG8uUHVibGlzaFNpcER0bWZDYWxsYmFja0gA", + "Ej4KDGNoYXRfbWVzc2FnZRgWIAEoCzImLmxpdmVraXQucHJvdG8uU2VuZENo", + "YXRNZXNzYWdlQ2FsbGJhY2tIABI4CgtwZXJmb3JtX3JwYxgXIAEoCzIhLmxp", + "dmVraXQucHJvdG8uUGVyZm9ybVJwY0NhbGxiYWNrSAASSAoVcnBjX21ldGhv", + "ZF9pbnZvY2F0aW9uGBggASgLMicubGl2ZWtpdC5wcm90by5ScGNNZXRob2RJ", + "bnZvY2F0aW9uRXZlbnRIABJFChJzZW5kX3N0cmVhbV9oZWFkZXIYGSABKAsy", + "Jy5saXZla2l0LnByb3RvLlNlbmRTdHJlYW1IZWFkZXJDYWxsYmFja0gAEkMK", + "EXNlbmRfc3RyZWFtX2NodW5rGBogASgLMiYubGl2ZWtpdC5wcm90by5TZW5k", + "U3RyZWFtQ2h1bmtDYWxsYmFja0gAEkcKE3NlbmRfc3RyZWFtX3RyYWlsZXIY", + "GyABKAsyKC5saXZla2l0LnByb3RvLlNlbmRTdHJlYW1UcmFpbGVyQ2FsbGJh", + "Y2tIABJIChhieXRlX3N0cmVhbV9yZWFkZXJfZXZlbnQYHCABKAsyJC5saXZl", + "a2l0LnByb3RvLkJ5dGVTdHJlYW1SZWFkZXJFdmVudEgAElUKG2J5dGVfc3Ry", + "ZWFtX3JlYWRlcl9yZWFkX2FsbBgdIAEoCzIuLmxpdmVraXQucHJvdG8uQnl0", + "ZVN0cmVhbVJlYWRlclJlYWRBbGxDYWxsYmFja0gAEl4KIGJ5dGVfc3RyZWFt", + "X3JlYWRlcl93cml0ZV90b19maWxlGB4gASgLMjIubGl2ZWtpdC5wcm90by5C", + "eXRlU3RyZWFtUmVhZGVyV3JpdGVUb0ZpbGVDYWxsYmFja0gAEkEKEGJ5dGVf", + "c3RyZWFtX29wZW4YHyABKAsyJS5saXZla2l0LnByb3RvLkJ5dGVTdHJlYW1P", + "cGVuQ2FsbGJhY2tIABJQChhieXRlX3N0cmVhbV93cml0ZXJfd3JpdGUYICAB", + "KAsyLC5saXZla2l0LnByb3RvLkJ5dGVTdHJlYW1Xcml0ZXJXcml0ZUNhbGxi", + "YWNrSAASUAoYYnl0ZV9zdHJlYW1fd3JpdGVyX2Nsb3NlGCEgASgLMiwubGl2", + "ZWtpdC5wcm90by5CeXRlU3RyZWFtV3JpdGVyQ2xvc2VDYWxsYmFja0gAEjoK", + "CXNlbmRfZmlsZRgiIAEoCzIlLmxpdmVraXQucHJvdG8uU3RyZWFtU2VuZEZp", + "bGVDYWxsYmFja0gAEkgKGHRleHRfc3RyZWFtX3JlYWRlcl9ldmVudBgjIAEo", + "CzIkLmxpdmVraXQucHJvdG8uVGV4dFN0cmVhbVJlYWRlckV2ZW50SAASVQob", + "dGV4dF9zdHJlYW1fcmVhZGVyX3JlYWRfYWxsGCQgASgLMi4ubGl2ZWtpdC5w", + "cm90by5UZXh0U3RyZWFtUmVhZGVyUmVhZEFsbENhbGxiYWNrSAASQQoQdGV4", + "dF9zdHJlYW1fb3BlbhglIAEoCzIlLmxpdmVraXQucHJvdG8uVGV4dFN0cmVh", + "bU9wZW5DYWxsYmFja0gAElAKGHRleHRfc3RyZWFtX3dyaXRlcl93cml0ZRgm", + "IAEoCzIsLmxpdmVraXQucHJvdG8uVGV4dFN0cmVhbVdyaXRlcldyaXRlQ2Fs", + "bGJhY2tIABJQChh0ZXh0X3N0cmVhbV93cml0ZXJfY2xvc2UYJyABKAsyLC5s", + "aXZla2l0LnByb3RvLlRleHRTdHJlYW1Xcml0ZXJDbG9zZUNhbGxiYWNrSAAS", + "OgoJc2VuZF90ZXh0GCggASgLMiUubGl2ZWtpdC5wcm90by5TdHJlYW1TZW5k", + "VGV4dENhbGxiYWNrSAASPAoKc2VuZF9ieXRlcxgpIAEoCzImLmxpdmVraXQu", + "cHJvdG8uU3RyZWFtU2VuZEJ5dGVzQ2FsbGJhY2tIABJFChJwdWJsaXNoX2Rh", + "dGFfdHJhY2sYKiABKAsyJy5saXZla2l0LnByb3RvLlB1Ymxpc2hEYXRhVHJh", + "Y2tDYWxsYmFja0gAElIKHWRhdGFfdHJhY2tfc3Vic2NyaXB0aW9uX2V2ZW50", + "GCsgASgLMikubGl2ZWtpdC5wcm90by5EYXRhVHJhY2tTdWJzY3JpcHRpb25F", + "dmVudEgAQgkKB21lc3NhZ2UiHwoORGlzcG9zZVJlcXVlc3QSDQoFYXN5bmMY", + "ASACKAgiIwoPRGlzcG9zZVJlc3BvbnNlEhAKCGFzeW5jX2lkGAEgASgEIiMK", + "D0Rpc3Bvc2VDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBCKFAQoJTG9nUmVj", + "b3JkEiYKBWxldmVsGAEgAigOMhcubGl2ZWtpdC5wcm90by5Mb2dMZXZlbBIO", + "CgZ0YXJnZXQYAiACKAkSEwoLbW9kdWxlX3BhdGgYAyABKAkSDAoEZmlsZRgE", + "IAEoCRIMCgRsaW5lGAUgASgNEg8KB21lc3NhZ2UYBiACKAkiNQoITG9nQmF0", + "Y2gSKQoHcmVjb3JkcxgBIAMoCzIYLmxpdmVraXQucHJvdG8uTG9nUmVjb3Jk", + "IhgKBVBhbmljEg8KB21lc3NhZ2UYASACKAkqUwoITG9nTGV2ZWwSDQoJTE9H", + "X0VSUk9SEAASDAoITE9HX1dBUk4QARIMCghMT0dfSU5GTxACEg0KCUxPR19E", + "RUJVRxADEg0KCUxPR19UUkFDRRAEQhCqAg1MaXZlS2l0LlByb3Rv")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::LiveKit.Proto.E2EeReflection.Descriptor, global::LiveKit.Proto.TrackReflection.Descriptor, global::LiveKit.Proto.TrackPublicationReflection.Descriptor, global::LiveKit.Proto.RoomReflection.Descriptor, global::LiveKit.Proto.VideoFrameReflection.Descriptor, global::LiveKit.Proto.AudioFrameReflection.Descriptor, global::LiveKit.Proto.RpcReflection.Descriptor, global::LiveKit.Proto.DataStreamReflection.Descriptor, }, + new pbr::FileDescriptor[] { global::LiveKit.Proto.E2EeReflection.Descriptor, global::LiveKit.Proto.TrackReflection.Descriptor, global::LiveKit.Proto.TrackPublicationReflection.Descriptor, global::LiveKit.Proto.RoomReflection.Descriptor, global::LiveKit.Proto.VideoFrameReflection.Descriptor, global::LiveKit.Proto.AudioFrameReflection.Descriptor, global::LiveKit.Proto.RpcReflection.Descriptor, global::LiveKit.Proto.DataStreamReflection.Descriptor, global::LiveKit.Proto.DataTrackReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::LiveKit.Proto.LogLevel), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FfiRequest), global::LiveKit.Proto.FfiRequest.Parser, new[]{ "Dispose", "Connect", "Disconnect", "PublishTrack", "UnpublishTrack", "PublishData", "SetSubscribed", "SetLocalMetadata", "SetLocalName", "SetLocalAttributes", "GetSessionStats", "PublishTranscription", "PublishSipDtmf", "CreateVideoTrack", "CreateAudioTrack", "LocalTrackMute", "EnableRemoteTrack", "GetStats", "SetTrackSubscriptionPermissions", "NewVideoStream", "NewVideoSource", "CaptureVideoFrame", "VideoConvert", "VideoStreamFromParticipant", "NewAudioStream", "NewAudioSource", "CaptureAudioFrame", "ClearAudioBuffer", "NewAudioResampler", "RemixAndResample", "E2Ee", "AudioStreamFromParticipant", "NewSoxResampler", "PushSoxResampler", "FlushSoxResampler", "SendChatMessage", "EditChatMessage", "PerformRpc", "RegisterRpcMethod", "UnregisterRpcMethod", "RpcMethodInvocationResponse", "EnableRemoteTrackPublication", "UpdateRemoteTrackPublicationDimension", "SendStreamHeader", "SendStreamChunk", "SendStreamTrailer", "SetDataChannelBufferedAmountLowThreshold", "LoadAudioFilterPlugin", "NewApm", "ApmProcessStream", "ApmProcessReverseStream", "ApmSetStreamDelay", "ByteReadIncremental", "ByteReadAll", "ByteWriteToFile", "TextReadIncremental", "TextReadAll", "SendFile", "SendText", "ByteStreamOpen", "ByteStreamWrite", "ByteStreamClose", "TextStreamOpen", "TextStreamWrite", "TextStreamClose", "SendBytes", "SetRemoteTrackPublicationQuality" }, new[]{ "Message" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FfiResponse), global::LiveKit.Proto.FfiResponse.Parser, new[]{ "Dispose", "Connect", "Disconnect", "PublishTrack", "UnpublishTrack", "PublishData", "SetSubscribed", "SetLocalMetadata", "SetLocalName", "SetLocalAttributes", "GetSessionStats", "PublishTranscription", "PublishSipDtmf", "CreateVideoTrack", "CreateAudioTrack", "LocalTrackMute", "EnableRemoteTrack", "GetStats", "SetTrackSubscriptionPermissions", "NewVideoStream", "NewVideoSource", "CaptureVideoFrame", "VideoConvert", "VideoStreamFromParticipant", "NewAudioStream", "NewAudioSource", "CaptureAudioFrame", "ClearAudioBuffer", "NewAudioResampler", "RemixAndResample", "AudioStreamFromParticipant", "E2Ee", "NewSoxResampler", "PushSoxResampler", "FlushSoxResampler", "SendChatMessage", "PerformRpc", "RegisterRpcMethod", "UnregisterRpcMethod", "RpcMethodInvocationResponse", "EnableRemoteTrackPublication", "UpdateRemoteTrackPublicationDimension", "SendStreamHeader", "SendStreamChunk", "SendStreamTrailer", "SetDataChannelBufferedAmountLowThreshold", "LoadAudioFilterPlugin", "NewApm", "ApmProcessStream", "ApmProcessReverseStream", "ApmSetStreamDelay", "ByteReadIncremental", "ByteReadAll", "ByteWriteToFile", "TextReadIncremental", "TextReadAll", "SendFile", "SendText", "ByteStreamOpen", "ByteStreamWrite", "ByteStreamClose", "TextStreamOpen", "TextStreamWrite", "TextStreamClose", "SendBytes", "SetRemoteTrackPublicationQuality" }, new[]{ "Message" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FfiEvent), global::LiveKit.Proto.FfiEvent.Parser, new[]{ "RoomEvent", "TrackEvent", "VideoStreamEvent", "AudioStreamEvent", "Connect", "Disconnect", "Dispose", "PublishTrack", "UnpublishTrack", "PublishData", "PublishTranscription", "CaptureAudioFrame", "SetLocalMetadata", "SetLocalName", "SetLocalAttributes", "GetStats", "Logs", "GetSessionStats", "Panic", "PublishSipDtmf", "ChatMessage", "PerformRpc", "RpcMethodInvocation", "SendStreamHeader", "SendStreamChunk", "SendStreamTrailer", "ByteStreamReaderEvent", "ByteStreamReaderReadAll", "ByteStreamReaderWriteToFile", "ByteStreamOpen", "ByteStreamWriterWrite", "ByteStreamWriterClose", "SendFile", "TextStreamReaderEvent", "TextStreamReaderReadAll", "TextStreamOpen", "TextStreamWriterWrite", "TextStreamWriterClose", "SendText", "SendBytes" }, new[]{ "Message" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FfiRequest), global::LiveKit.Proto.FfiRequest.Parser, new[]{ "Dispose", "Connect", "Disconnect", "PublishTrack", "UnpublishTrack", "PublishData", "SetSubscribed", "SetLocalMetadata", "SetLocalName", "SetLocalAttributes", "GetSessionStats", "PublishTranscription", "PublishSipDtmf", "CreateVideoTrack", "CreateAudioTrack", "LocalTrackMute", "EnableRemoteTrack", "GetStats", "SetTrackSubscriptionPermissions", "NewVideoStream", "NewVideoSource", "CaptureVideoFrame", "VideoConvert", "VideoStreamFromParticipant", "NewAudioStream", "NewAudioSource", "CaptureAudioFrame", "ClearAudioBuffer", "NewAudioResampler", "RemixAndResample", "E2Ee", "AudioStreamFromParticipant", "NewSoxResampler", "PushSoxResampler", "FlushSoxResampler", "SendChatMessage", "EditChatMessage", "PerformRpc", "RegisterRpcMethod", "UnregisterRpcMethod", "RpcMethodInvocationResponse", "EnableRemoteTrackPublication", "UpdateRemoteTrackPublicationDimension", "SendStreamHeader", "SendStreamChunk", "SendStreamTrailer", "SetDataChannelBufferedAmountLowThreshold", "LoadAudioFilterPlugin", "NewApm", "ApmProcessStream", "ApmProcessReverseStream", "ApmSetStreamDelay", "ByteReadIncremental", "ByteReadAll", "ByteWriteToFile", "TextReadIncremental", "TextReadAll", "SendFile", "SendText", "ByteStreamOpen", "ByteStreamWrite", "ByteStreamClose", "TextStreamOpen", "TextStreamWrite", "TextStreamClose", "SendBytes", "SetRemoteTrackPublicationQuality", "PublishDataTrack", "LocalDataTrackTryPush", "LocalDataTrackUnpublish", "LocalDataTrackIsPublished", "SubscribeDataTrack", "RemoteDataTrackIsPublished", "DataTrackSubscriptionRead" }, new[]{ "Message" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FfiResponse), global::LiveKit.Proto.FfiResponse.Parser, new[]{ "Dispose", "Connect", "Disconnect", "PublishTrack", "UnpublishTrack", "PublishData", "SetSubscribed", "SetLocalMetadata", "SetLocalName", "SetLocalAttributes", "GetSessionStats", "PublishTranscription", "PublishSipDtmf", "CreateVideoTrack", "CreateAudioTrack", "LocalTrackMute", "EnableRemoteTrack", "GetStats", "SetTrackSubscriptionPermissions", "NewVideoStream", "NewVideoSource", "CaptureVideoFrame", "VideoConvert", "VideoStreamFromParticipant", "NewAudioStream", "NewAudioSource", "CaptureAudioFrame", "ClearAudioBuffer", "NewAudioResampler", "RemixAndResample", "AudioStreamFromParticipant", "E2Ee", "NewSoxResampler", "PushSoxResampler", "FlushSoxResampler", "SendChatMessage", "PerformRpc", "RegisterRpcMethod", "UnregisterRpcMethod", "RpcMethodInvocationResponse", "EnableRemoteTrackPublication", "UpdateRemoteTrackPublicationDimension", "SendStreamHeader", "SendStreamChunk", "SendStreamTrailer", "SetDataChannelBufferedAmountLowThreshold", "LoadAudioFilterPlugin", "NewApm", "ApmProcessStream", "ApmProcessReverseStream", "ApmSetStreamDelay", "ByteReadIncremental", "ByteReadAll", "ByteWriteToFile", "TextReadIncremental", "TextReadAll", "SendFile", "SendText", "ByteStreamOpen", "ByteStreamWrite", "ByteStreamClose", "TextStreamOpen", "TextStreamWrite", "TextStreamClose", "SendBytes", "SetRemoteTrackPublicationQuality", "PublishDataTrack", "LocalDataTrackTryPush", "LocalDataTrackUnpublish", "LocalDataTrackIsPublished", "SubscribeDataTrack", "RemoteDataTrackIsPublished", "DataTrackSubscriptionRead" }, new[]{ "Message" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FfiEvent), global::LiveKit.Proto.FfiEvent.Parser, new[]{ "RoomEvent", "TrackEvent", "VideoStreamEvent", "AudioStreamEvent", "Connect", "Disconnect", "Dispose", "PublishTrack", "UnpublishTrack", "PublishData", "PublishTranscription", "CaptureAudioFrame", "SetLocalMetadata", "SetLocalName", "SetLocalAttributes", "GetStats", "Logs", "GetSessionStats", "Panic", "PublishSipDtmf", "ChatMessage", "PerformRpc", "RpcMethodInvocation", "SendStreamHeader", "SendStreamChunk", "SendStreamTrailer", "ByteStreamReaderEvent", "ByteStreamReaderReadAll", "ByteStreamReaderWriteToFile", "ByteStreamOpen", "ByteStreamWriterWrite", "ByteStreamWriterClose", "SendFile", "TextStreamReaderEvent", "TextStreamReaderReadAll", "TextStreamOpen", "TextStreamWriterWrite", "TextStreamWriterClose", "SendText", "SendBytes", "PublishDataTrack", "DataTrackSubscriptionEvent" }, new[]{ "Message" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DisposeRequest), global::LiveKit.Proto.DisposeRequest.Parser, new[]{ "Async" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DisposeResponse), global::LiveKit.Proto.DisposeResponse.Parser, new[]{ "AsyncId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DisposeCallback), global::LiveKit.Proto.DisposeCallback.Parser, new[]{ "AsyncId" }, null, null, null, null), @@ -582,6 +612,27 @@ public FfiRequest(FfiRequest other) : this() { case MessageOneofCase.SetRemoteTrackPublicationQuality: SetRemoteTrackPublicationQuality = other.SetRemoteTrackPublicationQuality.Clone(); break; + case MessageOneofCase.PublishDataTrack: + PublishDataTrack = other.PublishDataTrack.Clone(); + break; + case MessageOneofCase.LocalDataTrackTryPush: + LocalDataTrackTryPush = other.LocalDataTrackTryPush.Clone(); + break; + case MessageOneofCase.LocalDataTrackUnpublish: + LocalDataTrackUnpublish = other.LocalDataTrackUnpublish.Clone(); + break; + case MessageOneofCase.LocalDataTrackIsPublished: + LocalDataTrackIsPublished = other.LocalDataTrackIsPublished.Clone(); + break; + case MessageOneofCase.SubscribeDataTrack: + SubscribeDataTrack = other.SubscribeDataTrack.Clone(); + break; + case MessageOneofCase.RemoteDataTrackIsPublished: + RemoteDataTrackIsPublished = other.RemoteDataTrackIsPublished.Clone(); + break; + case MessageOneofCase.DataTrackSubscriptionRead: + DataTrackSubscriptionRead = other.DataTrackSubscriptionRead.Clone(); + break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -1427,6 +1478,96 @@ public FfiRequest Clone() { } } + /// Field number for the "publish_data_track" field. + public const int PublishDataTrackFieldNumber = 69; + /// + /// Data Track (local) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.PublishDataTrackRequest PublishDataTrack { + get { return messageCase_ == MessageOneofCase.PublishDataTrack ? (global::LiveKit.Proto.PublishDataTrackRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.PublishDataTrack; + } + } + + /// Field number for the "local_data_track_try_push" field. + public const int LocalDataTrackTryPushFieldNumber = 70; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.LocalDataTrackTryPushRequest LocalDataTrackTryPush { + get { return messageCase_ == MessageOneofCase.LocalDataTrackTryPush ? (global::LiveKit.Proto.LocalDataTrackTryPushRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.LocalDataTrackTryPush; + } + } + + /// Field number for the "local_data_track_unpublish" field. + public const int LocalDataTrackUnpublishFieldNumber = 71; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.LocalDataTrackUnpublishRequest LocalDataTrackUnpublish { + get { return messageCase_ == MessageOneofCase.LocalDataTrackUnpublish ? (global::LiveKit.Proto.LocalDataTrackUnpublishRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.LocalDataTrackUnpublish; + } + } + + /// Field number for the "local_data_track_is_published" field. + public const int LocalDataTrackIsPublishedFieldNumber = 72; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.LocalDataTrackIsPublishedRequest LocalDataTrackIsPublished { + get { return messageCase_ == MessageOneofCase.LocalDataTrackIsPublished ? (global::LiveKit.Proto.LocalDataTrackIsPublishedRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.LocalDataTrackIsPublished; + } + } + + /// Field number for the "subscribe_data_track" field. + public const int SubscribeDataTrackFieldNumber = 73; + /// + /// Data Track (remote) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.SubscribeDataTrackRequest SubscribeDataTrack { + get { return messageCase_ == MessageOneofCase.SubscribeDataTrack ? (global::LiveKit.Proto.SubscribeDataTrackRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.SubscribeDataTrack; + } + } + + /// Field number for the "remote_data_track_is_published" field. + public const int RemoteDataTrackIsPublishedFieldNumber = 74; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.RemoteDataTrackIsPublishedRequest RemoteDataTrackIsPublished { + get { return messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished ? (global::LiveKit.Proto.RemoteDataTrackIsPublishedRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.RemoteDataTrackIsPublished; + } + } + + /// Field number for the "data_track_subscription_read" field. + public const int DataTrackSubscriptionReadFieldNumber = 75; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackSubscriptionReadRequest DataTrackSubscriptionRead { + get { return messageCase_ == MessageOneofCase.DataTrackSubscriptionRead ? (global::LiveKit.Proto.DataTrackSubscriptionReadRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.DataTrackSubscriptionRead; + } + } + private object message_; /// Enum of possible cases for the "message" oneof. public enum MessageOneofCase { @@ -1498,6 +1639,13 @@ public enum MessageOneofCase { TextStreamClose = 66, SendBytes = 67, SetRemoteTrackPublicationQuality = 68, + PublishDataTrack = 69, + LocalDataTrackTryPush = 70, + LocalDataTrackUnpublish = 71, + LocalDataTrackIsPublished = 72, + SubscribeDataTrack = 73, + RemoteDataTrackIsPublished = 74, + DataTrackSubscriptionRead = 75, } private MessageOneofCase messageCase_ = MessageOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1595,6 +1743,13 @@ public bool Equals(FfiRequest other) { if (!object.Equals(TextStreamClose, other.TextStreamClose)) return false; if (!object.Equals(SendBytes, other.SendBytes)) return false; if (!object.Equals(SetRemoteTrackPublicationQuality, other.SetRemoteTrackPublicationQuality)) return false; + if (!object.Equals(PublishDataTrack, other.PublishDataTrack)) return false; + if (!object.Equals(LocalDataTrackTryPush, other.LocalDataTrackTryPush)) return false; + if (!object.Equals(LocalDataTrackUnpublish, other.LocalDataTrackUnpublish)) return false; + if (!object.Equals(LocalDataTrackIsPublished, other.LocalDataTrackIsPublished)) return false; + if (!object.Equals(SubscribeDataTrack, other.SubscribeDataTrack)) return false; + if (!object.Equals(RemoteDataTrackIsPublished, other.RemoteDataTrackIsPublished)) return false; + if (!object.Equals(DataTrackSubscriptionRead, other.DataTrackSubscriptionRead)) return false; if (MessageCase != other.MessageCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -1670,6 +1825,13 @@ public override int GetHashCode() { if (messageCase_ == MessageOneofCase.TextStreamClose) hash ^= TextStreamClose.GetHashCode(); if (messageCase_ == MessageOneofCase.SendBytes) hash ^= SendBytes.GetHashCode(); if (messageCase_ == MessageOneofCase.SetRemoteTrackPublicationQuality) hash ^= SetRemoteTrackPublicationQuality.GetHashCode(); + if (messageCase_ == MessageOneofCase.PublishDataTrack) hash ^= PublishDataTrack.GetHashCode(); + if (messageCase_ == MessageOneofCase.LocalDataTrackTryPush) hash ^= LocalDataTrackTryPush.GetHashCode(); + if (messageCase_ == MessageOneofCase.LocalDataTrackUnpublish) hash ^= LocalDataTrackUnpublish.GetHashCode(); + if (messageCase_ == MessageOneofCase.LocalDataTrackIsPublished) hash ^= LocalDataTrackIsPublished.GetHashCode(); + if (messageCase_ == MessageOneofCase.SubscribeDataTrack) hash ^= SubscribeDataTrack.GetHashCode(); + if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) hash ^= RemoteDataTrackIsPublished.GetHashCode(); + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionRead) hash ^= DataTrackSubscriptionRead.GetHashCode(); hash ^= (int) messageCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -1957,6 +2119,34 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(162, 4); output.WriteMessage(SetRemoteTrackPublicationQuality); } + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + output.WriteRawTag(170, 4); + output.WriteMessage(PublishDataTrack); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackTryPush) { + output.WriteRawTag(178, 4); + output.WriteMessage(LocalDataTrackTryPush); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackUnpublish) { + output.WriteRawTag(186, 4); + output.WriteMessage(LocalDataTrackUnpublish); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackIsPublished) { + output.WriteRawTag(194, 4); + output.WriteMessage(LocalDataTrackIsPublished); + } + if (messageCase_ == MessageOneofCase.SubscribeDataTrack) { + output.WriteRawTag(202, 4); + output.WriteMessage(SubscribeDataTrack); + } + if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) { + output.WriteRawTag(210, 4); + output.WriteMessage(RemoteDataTrackIsPublished); + } + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionRead) { + output.WriteRawTag(218, 4); + output.WriteMessage(DataTrackSubscriptionRead); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -2235,6 +2425,34 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(162, 4); output.WriteMessage(SetRemoteTrackPublicationQuality); } + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + output.WriteRawTag(170, 4); + output.WriteMessage(PublishDataTrack); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackTryPush) { + output.WriteRawTag(178, 4); + output.WriteMessage(LocalDataTrackTryPush); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackUnpublish) { + output.WriteRawTag(186, 4); + output.WriteMessage(LocalDataTrackUnpublish); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackIsPublished) { + output.WriteRawTag(194, 4); + output.WriteMessage(LocalDataTrackIsPublished); + } + if (messageCase_ == MessageOneofCase.SubscribeDataTrack) { + output.WriteRawTag(202, 4); + output.WriteMessage(SubscribeDataTrack); + } + if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) { + output.WriteRawTag(210, 4); + output.WriteMessage(RemoteDataTrackIsPublished); + } + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionRead) { + output.WriteRawTag(218, 4); + output.WriteMessage(DataTrackSubscriptionRead); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -2446,6 +2664,27 @@ public int CalculateSize() { if (messageCase_ == MessageOneofCase.SetRemoteTrackPublicationQuality) { size += 2 + pb::CodedOutputStream.ComputeMessageSize(SetRemoteTrackPublicationQuality); } + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(PublishDataTrack); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackTryPush) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(LocalDataTrackTryPush); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackUnpublish) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(LocalDataTrackUnpublish); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackIsPublished) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(LocalDataTrackIsPublished); + } + if (messageCase_ == MessageOneofCase.SubscribeDataTrack) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(SubscribeDataTrack); + } + if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(RemoteDataTrackIsPublished); + } + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionRead) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(DataTrackSubscriptionRead); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -2861,6 +3100,48 @@ public void MergeFrom(FfiRequest other) { } SetRemoteTrackPublicationQuality.MergeFrom(other.SetRemoteTrackPublicationQuality); break; + case MessageOneofCase.PublishDataTrack: + if (PublishDataTrack == null) { + PublishDataTrack = new global::LiveKit.Proto.PublishDataTrackRequest(); + } + PublishDataTrack.MergeFrom(other.PublishDataTrack); + break; + case MessageOneofCase.LocalDataTrackTryPush: + if (LocalDataTrackTryPush == null) { + LocalDataTrackTryPush = new global::LiveKit.Proto.LocalDataTrackTryPushRequest(); + } + LocalDataTrackTryPush.MergeFrom(other.LocalDataTrackTryPush); + break; + case MessageOneofCase.LocalDataTrackUnpublish: + if (LocalDataTrackUnpublish == null) { + LocalDataTrackUnpublish = new global::LiveKit.Proto.LocalDataTrackUnpublishRequest(); + } + LocalDataTrackUnpublish.MergeFrom(other.LocalDataTrackUnpublish); + break; + case MessageOneofCase.LocalDataTrackIsPublished: + if (LocalDataTrackIsPublished == null) { + LocalDataTrackIsPublished = new global::LiveKit.Proto.LocalDataTrackIsPublishedRequest(); + } + LocalDataTrackIsPublished.MergeFrom(other.LocalDataTrackIsPublished); + break; + case MessageOneofCase.SubscribeDataTrack: + if (SubscribeDataTrack == null) { + SubscribeDataTrack = new global::LiveKit.Proto.SubscribeDataTrackRequest(); + } + SubscribeDataTrack.MergeFrom(other.SubscribeDataTrack); + break; + case MessageOneofCase.RemoteDataTrackIsPublished: + if (RemoteDataTrackIsPublished == null) { + RemoteDataTrackIsPublished = new global::LiveKit.Proto.RemoteDataTrackIsPublishedRequest(); + } + RemoteDataTrackIsPublished.MergeFrom(other.RemoteDataTrackIsPublished); + break; + case MessageOneofCase.DataTrackSubscriptionRead: + if (DataTrackSubscriptionRead == null) { + DataTrackSubscriptionRead = new global::LiveKit.Proto.DataTrackSubscriptionReadRequest(); + } + DataTrackSubscriptionRead.MergeFrom(other.DataTrackSubscriptionRead); + break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); @@ -3485,6 +3766,69 @@ public void MergeFrom(pb::CodedInputStream input) { SetRemoteTrackPublicationQuality = subBuilder; break; } + case 554: { + global::LiveKit.Proto.PublishDataTrackRequest subBuilder = new global::LiveKit.Proto.PublishDataTrackRequest(); + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + subBuilder.MergeFrom(PublishDataTrack); + } + input.ReadMessage(subBuilder); + PublishDataTrack = subBuilder; + break; + } + case 562: { + global::LiveKit.Proto.LocalDataTrackTryPushRequest subBuilder = new global::LiveKit.Proto.LocalDataTrackTryPushRequest(); + if (messageCase_ == MessageOneofCase.LocalDataTrackTryPush) { + subBuilder.MergeFrom(LocalDataTrackTryPush); + } + input.ReadMessage(subBuilder); + LocalDataTrackTryPush = subBuilder; + break; + } + case 570: { + global::LiveKit.Proto.LocalDataTrackUnpublishRequest subBuilder = new global::LiveKit.Proto.LocalDataTrackUnpublishRequest(); + if (messageCase_ == MessageOneofCase.LocalDataTrackUnpublish) { + subBuilder.MergeFrom(LocalDataTrackUnpublish); + } + input.ReadMessage(subBuilder); + LocalDataTrackUnpublish = subBuilder; + break; + } + case 578: { + global::LiveKit.Proto.LocalDataTrackIsPublishedRequest subBuilder = new global::LiveKit.Proto.LocalDataTrackIsPublishedRequest(); + if (messageCase_ == MessageOneofCase.LocalDataTrackIsPublished) { + subBuilder.MergeFrom(LocalDataTrackIsPublished); + } + input.ReadMessage(subBuilder); + LocalDataTrackIsPublished = subBuilder; + break; + } + case 586: { + global::LiveKit.Proto.SubscribeDataTrackRequest subBuilder = new global::LiveKit.Proto.SubscribeDataTrackRequest(); + if (messageCase_ == MessageOneofCase.SubscribeDataTrack) { + subBuilder.MergeFrom(SubscribeDataTrack); + } + input.ReadMessage(subBuilder); + SubscribeDataTrack = subBuilder; + break; + } + case 594: { + global::LiveKit.Proto.RemoteDataTrackIsPublishedRequest subBuilder = new global::LiveKit.Proto.RemoteDataTrackIsPublishedRequest(); + if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) { + subBuilder.MergeFrom(RemoteDataTrackIsPublished); + } + input.ReadMessage(subBuilder); + RemoteDataTrackIsPublished = subBuilder; + break; + } + case 602: { + global::LiveKit.Proto.DataTrackSubscriptionReadRequest subBuilder = new global::LiveKit.Proto.DataTrackSubscriptionReadRequest(); + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionRead) { + subBuilder.MergeFrom(DataTrackSubscriptionRead); + } + input.ReadMessage(subBuilder); + DataTrackSubscriptionRead = subBuilder; + break; + } } } #endif @@ -4107,6 +4451,69 @@ public void MergeFrom(pb::CodedInputStream input) { SetRemoteTrackPublicationQuality = subBuilder; break; } + case 554: { + global::LiveKit.Proto.PublishDataTrackRequest subBuilder = new global::LiveKit.Proto.PublishDataTrackRequest(); + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + subBuilder.MergeFrom(PublishDataTrack); + } + input.ReadMessage(subBuilder); + PublishDataTrack = subBuilder; + break; + } + case 562: { + global::LiveKit.Proto.LocalDataTrackTryPushRequest subBuilder = new global::LiveKit.Proto.LocalDataTrackTryPushRequest(); + if (messageCase_ == MessageOneofCase.LocalDataTrackTryPush) { + subBuilder.MergeFrom(LocalDataTrackTryPush); + } + input.ReadMessage(subBuilder); + LocalDataTrackTryPush = subBuilder; + break; + } + case 570: { + global::LiveKit.Proto.LocalDataTrackUnpublishRequest subBuilder = new global::LiveKit.Proto.LocalDataTrackUnpublishRequest(); + if (messageCase_ == MessageOneofCase.LocalDataTrackUnpublish) { + subBuilder.MergeFrom(LocalDataTrackUnpublish); + } + input.ReadMessage(subBuilder); + LocalDataTrackUnpublish = subBuilder; + break; + } + case 578: { + global::LiveKit.Proto.LocalDataTrackIsPublishedRequest subBuilder = new global::LiveKit.Proto.LocalDataTrackIsPublishedRequest(); + if (messageCase_ == MessageOneofCase.LocalDataTrackIsPublished) { + subBuilder.MergeFrom(LocalDataTrackIsPublished); + } + input.ReadMessage(subBuilder); + LocalDataTrackIsPublished = subBuilder; + break; + } + case 586: { + global::LiveKit.Proto.SubscribeDataTrackRequest subBuilder = new global::LiveKit.Proto.SubscribeDataTrackRequest(); + if (messageCase_ == MessageOneofCase.SubscribeDataTrack) { + subBuilder.MergeFrom(SubscribeDataTrack); + } + input.ReadMessage(subBuilder); + SubscribeDataTrack = subBuilder; + break; + } + case 594: { + global::LiveKit.Proto.RemoteDataTrackIsPublishedRequest subBuilder = new global::LiveKit.Proto.RemoteDataTrackIsPublishedRequest(); + if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) { + subBuilder.MergeFrom(RemoteDataTrackIsPublished); + } + input.ReadMessage(subBuilder); + RemoteDataTrackIsPublished = subBuilder; + break; + } + case 602: { + global::LiveKit.Proto.DataTrackSubscriptionReadRequest subBuilder = new global::LiveKit.Proto.DataTrackSubscriptionReadRequest(); + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionRead) { + subBuilder.MergeFrom(DataTrackSubscriptionRead); + } + input.ReadMessage(subBuilder); + DataTrackSubscriptionRead = subBuilder; + break; + } } } } @@ -4351,6 +4758,27 @@ public FfiResponse(FfiResponse other) : this() { case MessageOneofCase.SetRemoteTrackPublicationQuality: SetRemoteTrackPublicationQuality = other.SetRemoteTrackPublicationQuality.Clone(); break; + case MessageOneofCase.PublishDataTrack: + PublishDataTrack = other.PublishDataTrack.Clone(); + break; + case MessageOneofCase.LocalDataTrackTryPush: + LocalDataTrackTryPush = other.LocalDataTrackTryPush.Clone(); + break; + case MessageOneofCase.LocalDataTrackUnpublish: + LocalDataTrackUnpublish = other.LocalDataTrackUnpublish.Clone(); + break; + case MessageOneofCase.LocalDataTrackIsPublished: + LocalDataTrackIsPublished = other.LocalDataTrackIsPublished.Clone(); + break; + case MessageOneofCase.SubscribeDataTrack: + SubscribeDataTrack = other.SubscribeDataTrack.Clone(); + break; + case MessageOneofCase.RemoteDataTrackIsPublished: + RemoteDataTrackIsPublished = other.RemoteDataTrackIsPublished.Clone(); + break; + case MessageOneofCase.DataTrackSubscriptionRead: + DataTrackSubscriptionRead = other.DataTrackSubscriptionRead.Clone(); + break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -5184,6 +5612,96 @@ public FfiResponse Clone() { } } + /// Field number for the "publish_data_track" field. + public const int PublishDataTrackFieldNumber = 68; + /// + /// Data Track (local) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.PublishDataTrackResponse PublishDataTrack { + get { return messageCase_ == MessageOneofCase.PublishDataTrack ? (global::LiveKit.Proto.PublishDataTrackResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.PublishDataTrack; + } + } + + /// Field number for the "local_data_track_try_push" field. + public const int LocalDataTrackTryPushFieldNumber = 69; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.LocalDataTrackTryPushResponse LocalDataTrackTryPush { + get { return messageCase_ == MessageOneofCase.LocalDataTrackTryPush ? (global::LiveKit.Proto.LocalDataTrackTryPushResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.LocalDataTrackTryPush; + } + } + + /// Field number for the "local_data_track_unpublish" field. + public const int LocalDataTrackUnpublishFieldNumber = 70; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.LocalDataTrackUnpublishResponse LocalDataTrackUnpublish { + get { return messageCase_ == MessageOneofCase.LocalDataTrackUnpublish ? (global::LiveKit.Proto.LocalDataTrackUnpublishResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.LocalDataTrackUnpublish; + } + } + + /// Field number for the "local_data_track_is_published" field. + public const int LocalDataTrackIsPublishedFieldNumber = 71; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.LocalDataTrackIsPublishedResponse LocalDataTrackIsPublished { + get { return messageCase_ == MessageOneofCase.LocalDataTrackIsPublished ? (global::LiveKit.Proto.LocalDataTrackIsPublishedResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.LocalDataTrackIsPublished; + } + } + + /// Field number for the "subscribe_data_track" field. + public const int SubscribeDataTrackFieldNumber = 72; + /// + /// Data Track (remote) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.SubscribeDataTrackResponse SubscribeDataTrack { + get { return messageCase_ == MessageOneofCase.SubscribeDataTrack ? (global::LiveKit.Proto.SubscribeDataTrackResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.SubscribeDataTrack; + } + } + + /// Field number for the "remote_data_track_is_published" field. + public const int RemoteDataTrackIsPublishedFieldNumber = 73; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.RemoteDataTrackIsPublishedResponse RemoteDataTrackIsPublished { + get { return messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished ? (global::LiveKit.Proto.RemoteDataTrackIsPublishedResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.RemoteDataTrackIsPublished; + } + } + + /// Field number for the "data_track_subscription_read" field. + public const int DataTrackSubscriptionReadFieldNumber = 74; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackSubscriptionReadResponse DataTrackSubscriptionRead { + get { return messageCase_ == MessageOneofCase.DataTrackSubscriptionRead ? (global::LiveKit.Proto.DataTrackSubscriptionReadResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.DataTrackSubscriptionRead; + } + } + private object message_; /// Enum of possible cases for the "message" oneof. public enum MessageOneofCase { @@ -5254,6 +5772,13 @@ public enum MessageOneofCase { TextStreamClose = 65, SendBytes = 66, SetRemoteTrackPublicationQuality = 67, + PublishDataTrack = 68, + LocalDataTrackTryPush = 69, + LocalDataTrackUnpublish = 70, + LocalDataTrackIsPublished = 71, + SubscribeDataTrack = 72, + RemoteDataTrackIsPublished = 73, + DataTrackSubscriptionRead = 74, } private MessageOneofCase messageCase_ = MessageOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5350,6 +5875,13 @@ public bool Equals(FfiResponse other) { if (!object.Equals(TextStreamClose, other.TextStreamClose)) return false; if (!object.Equals(SendBytes, other.SendBytes)) return false; if (!object.Equals(SetRemoteTrackPublicationQuality, other.SetRemoteTrackPublicationQuality)) return false; + if (!object.Equals(PublishDataTrack, other.PublishDataTrack)) return false; + if (!object.Equals(LocalDataTrackTryPush, other.LocalDataTrackTryPush)) return false; + if (!object.Equals(LocalDataTrackUnpublish, other.LocalDataTrackUnpublish)) return false; + if (!object.Equals(LocalDataTrackIsPublished, other.LocalDataTrackIsPublished)) return false; + if (!object.Equals(SubscribeDataTrack, other.SubscribeDataTrack)) return false; + if (!object.Equals(RemoteDataTrackIsPublished, other.RemoteDataTrackIsPublished)) return false; + if (!object.Equals(DataTrackSubscriptionRead, other.DataTrackSubscriptionRead)) return false; if (MessageCase != other.MessageCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -5424,6 +5956,13 @@ public override int GetHashCode() { if (messageCase_ == MessageOneofCase.TextStreamClose) hash ^= TextStreamClose.GetHashCode(); if (messageCase_ == MessageOneofCase.SendBytes) hash ^= SendBytes.GetHashCode(); if (messageCase_ == MessageOneofCase.SetRemoteTrackPublicationQuality) hash ^= SetRemoteTrackPublicationQuality.GetHashCode(); + if (messageCase_ == MessageOneofCase.PublishDataTrack) hash ^= PublishDataTrack.GetHashCode(); + if (messageCase_ == MessageOneofCase.LocalDataTrackTryPush) hash ^= LocalDataTrackTryPush.GetHashCode(); + if (messageCase_ == MessageOneofCase.LocalDataTrackUnpublish) hash ^= LocalDataTrackUnpublish.GetHashCode(); + if (messageCase_ == MessageOneofCase.LocalDataTrackIsPublished) hash ^= LocalDataTrackIsPublished.GetHashCode(); + if (messageCase_ == MessageOneofCase.SubscribeDataTrack) hash ^= SubscribeDataTrack.GetHashCode(); + if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) hash ^= RemoteDataTrackIsPublished.GetHashCode(); + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionRead) hash ^= DataTrackSubscriptionRead.GetHashCode(); hash ^= (int) messageCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -5707,6 +6246,34 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(154, 4); output.WriteMessage(SetRemoteTrackPublicationQuality); } + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + output.WriteRawTag(162, 4); + output.WriteMessage(PublishDataTrack); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackTryPush) { + output.WriteRawTag(170, 4); + output.WriteMessage(LocalDataTrackTryPush); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackUnpublish) { + output.WriteRawTag(178, 4); + output.WriteMessage(LocalDataTrackUnpublish); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackIsPublished) { + output.WriteRawTag(186, 4); + output.WriteMessage(LocalDataTrackIsPublished); + } + if (messageCase_ == MessageOneofCase.SubscribeDataTrack) { + output.WriteRawTag(194, 4); + output.WriteMessage(SubscribeDataTrack); + } + if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) { + output.WriteRawTag(202, 4); + output.WriteMessage(RemoteDataTrackIsPublished); + } + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionRead) { + output.WriteRawTag(210, 4); + output.WriteMessage(DataTrackSubscriptionRead); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -5981,6 +6548,34 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(154, 4); output.WriteMessage(SetRemoteTrackPublicationQuality); } + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + output.WriteRawTag(162, 4); + output.WriteMessage(PublishDataTrack); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackTryPush) { + output.WriteRawTag(170, 4); + output.WriteMessage(LocalDataTrackTryPush); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackUnpublish) { + output.WriteRawTag(178, 4); + output.WriteMessage(LocalDataTrackUnpublish); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackIsPublished) { + output.WriteRawTag(186, 4); + output.WriteMessage(LocalDataTrackIsPublished); + } + if (messageCase_ == MessageOneofCase.SubscribeDataTrack) { + output.WriteRawTag(194, 4); + output.WriteMessage(SubscribeDataTrack); + } + if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) { + output.WriteRawTag(202, 4); + output.WriteMessage(RemoteDataTrackIsPublished); + } + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionRead) { + output.WriteRawTag(210, 4); + output.WriteMessage(DataTrackSubscriptionRead); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -6189,6 +6784,27 @@ public int CalculateSize() { if (messageCase_ == MessageOneofCase.SetRemoteTrackPublicationQuality) { size += 2 + pb::CodedOutputStream.ComputeMessageSize(SetRemoteTrackPublicationQuality); } + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(PublishDataTrack); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackTryPush) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(LocalDataTrackTryPush); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackUnpublish) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(LocalDataTrackUnpublish); + } + if (messageCase_ == MessageOneofCase.LocalDataTrackIsPublished) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(LocalDataTrackIsPublished); + } + if (messageCase_ == MessageOneofCase.SubscribeDataTrack) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(SubscribeDataTrack); + } + if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(RemoteDataTrackIsPublished); + } + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionRead) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(DataTrackSubscriptionRead); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -6598,6 +7214,48 @@ public void MergeFrom(FfiResponse other) { } SetRemoteTrackPublicationQuality.MergeFrom(other.SetRemoteTrackPublicationQuality); break; + case MessageOneofCase.PublishDataTrack: + if (PublishDataTrack == null) { + PublishDataTrack = new global::LiveKit.Proto.PublishDataTrackResponse(); + } + PublishDataTrack.MergeFrom(other.PublishDataTrack); + break; + case MessageOneofCase.LocalDataTrackTryPush: + if (LocalDataTrackTryPush == null) { + LocalDataTrackTryPush = new global::LiveKit.Proto.LocalDataTrackTryPushResponse(); + } + LocalDataTrackTryPush.MergeFrom(other.LocalDataTrackTryPush); + break; + case MessageOneofCase.LocalDataTrackUnpublish: + if (LocalDataTrackUnpublish == null) { + LocalDataTrackUnpublish = new global::LiveKit.Proto.LocalDataTrackUnpublishResponse(); + } + LocalDataTrackUnpublish.MergeFrom(other.LocalDataTrackUnpublish); + break; + case MessageOneofCase.LocalDataTrackIsPublished: + if (LocalDataTrackIsPublished == null) { + LocalDataTrackIsPublished = new global::LiveKit.Proto.LocalDataTrackIsPublishedResponse(); + } + LocalDataTrackIsPublished.MergeFrom(other.LocalDataTrackIsPublished); + break; + case MessageOneofCase.SubscribeDataTrack: + if (SubscribeDataTrack == null) { + SubscribeDataTrack = new global::LiveKit.Proto.SubscribeDataTrackResponse(); + } + SubscribeDataTrack.MergeFrom(other.SubscribeDataTrack); + break; + case MessageOneofCase.RemoteDataTrackIsPublished: + if (RemoteDataTrackIsPublished == null) { + RemoteDataTrackIsPublished = new global::LiveKit.Proto.RemoteDataTrackIsPublishedResponse(); + } + RemoteDataTrackIsPublished.MergeFrom(other.RemoteDataTrackIsPublished); + break; + case MessageOneofCase.DataTrackSubscriptionRead: + if (DataTrackSubscriptionRead == null) { + DataTrackSubscriptionRead = new global::LiveKit.Proto.DataTrackSubscriptionReadResponse(); + } + DataTrackSubscriptionRead.MergeFrom(other.DataTrackSubscriptionRead); + break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); @@ -7213,6 +7871,69 @@ public void MergeFrom(pb::CodedInputStream input) { SetRemoteTrackPublicationQuality = subBuilder; break; } + case 546: { + global::LiveKit.Proto.PublishDataTrackResponse subBuilder = new global::LiveKit.Proto.PublishDataTrackResponse(); + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + subBuilder.MergeFrom(PublishDataTrack); + } + input.ReadMessage(subBuilder); + PublishDataTrack = subBuilder; + break; + } + case 554: { + global::LiveKit.Proto.LocalDataTrackTryPushResponse subBuilder = new global::LiveKit.Proto.LocalDataTrackTryPushResponse(); + if (messageCase_ == MessageOneofCase.LocalDataTrackTryPush) { + subBuilder.MergeFrom(LocalDataTrackTryPush); + } + input.ReadMessage(subBuilder); + LocalDataTrackTryPush = subBuilder; + break; + } + case 562: { + global::LiveKit.Proto.LocalDataTrackUnpublishResponse subBuilder = new global::LiveKit.Proto.LocalDataTrackUnpublishResponse(); + if (messageCase_ == MessageOneofCase.LocalDataTrackUnpublish) { + subBuilder.MergeFrom(LocalDataTrackUnpublish); + } + input.ReadMessage(subBuilder); + LocalDataTrackUnpublish = subBuilder; + break; + } + case 570: { + global::LiveKit.Proto.LocalDataTrackIsPublishedResponse subBuilder = new global::LiveKit.Proto.LocalDataTrackIsPublishedResponse(); + if (messageCase_ == MessageOneofCase.LocalDataTrackIsPublished) { + subBuilder.MergeFrom(LocalDataTrackIsPublished); + } + input.ReadMessage(subBuilder); + LocalDataTrackIsPublished = subBuilder; + break; + } + case 578: { + global::LiveKit.Proto.SubscribeDataTrackResponse subBuilder = new global::LiveKit.Proto.SubscribeDataTrackResponse(); + if (messageCase_ == MessageOneofCase.SubscribeDataTrack) { + subBuilder.MergeFrom(SubscribeDataTrack); + } + input.ReadMessage(subBuilder); + SubscribeDataTrack = subBuilder; + break; + } + case 586: { + global::LiveKit.Proto.RemoteDataTrackIsPublishedResponse subBuilder = new global::LiveKit.Proto.RemoteDataTrackIsPublishedResponse(); + if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) { + subBuilder.MergeFrom(RemoteDataTrackIsPublished); + } + input.ReadMessage(subBuilder); + RemoteDataTrackIsPublished = subBuilder; + break; + } + case 594: { + global::LiveKit.Proto.DataTrackSubscriptionReadResponse subBuilder = new global::LiveKit.Proto.DataTrackSubscriptionReadResponse(); + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionRead) { + subBuilder.MergeFrom(DataTrackSubscriptionRead); + } + input.ReadMessage(subBuilder); + DataTrackSubscriptionRead = subBuilder; + break; + } } } #endif @@ -7826,6 +8547,69 @@ public void MergeFrom(pb::CodedInputStream input) { SetRemoteTrackPublicationQuality = subBuilder; break; } + case 546: { + global::LiveKit.Proto.PublishDataTrackResponse subBuilder = new global::LiveKit.Proto.PublishDataTrackResponse(); + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + subBuilder.MergeFrom(PublishDataTrack); + } + input.ReadMessage(subBuilder); + PublishDataTrack = subBuilder; + break; + } + case 554: { + global::LiveKit.Proto.LocalDataTrackTryPushResponse subBuilder = new global::LiveKit.Proto.LocalDataTrackTryPushResponse(); + if (messageCase_ == MessageOneofCase.LocalDataTrackTryPush) { + subBuilder.MergeFrom(LocalDataTrackTryPush); + } + input.ReadMessage(subBuilder); + LocalDataTrackTryPush = subBuilder; + break; + } + case 562: { + global::LiveKit.Proto.LocalDataTrackUnpublishResponse subBuilder = new global::LiveKit.Proto.LocalDataTrackUnpublishResponse(); + if (messageCase_ == MessageOneofCase.LocalDataTrackUnpublish) { + subBuilder.MergeFrom(LocalDataTrackUnpublish); + } + input.ReadMessage(subBuilder); + LocalDataTrackUnpublish = subBuilder; + break; + } + case 570: { + global::LiveKit.Proto.LocalDataTrackIsPublishedResponse subBuilder = new global::LiveKit.Proto.LocalDataTrackIsPublishedResponse(); + if (messageCase_ == MessageOneofCase.LocalDataTrackIsPublished) { + subBuilder.MergeFrom(LocalDataTrackIsPublished); + } + input.ReadMessage(subBuilder); + LocalDataTrackIsPublished = subBuilder; + break; + } + case 578: { + global::LiveKit.Proto.SubscribeDataTrackResponse subBuilder = new global::LiveKit.Proto.SubscribeDataTrackResponse(); + if (messageCase_ == MessageOneofCase.SubscribeDataTrack) { + subBuilder.MergeFrom(SubscribeDataTrack); + } + input.ReadMessage(subBuilder); + SubscribeDataTrack = subBuilder; + break; + } + case 586: { + global::LiveKit.Proto.RemoteDataTrackIsPublishedResponse subBuilder = new global::LiveKit.Proto.RemoteDataTrackIsPublishedResponse(); + if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) { + subBuilder.MergeFrom(RemoteDataTrackIsPublished); + } + input.ReadMessage(subBuilder); + RemoteDataTrackIsPublished = subBuilder; + break; + } + case 594: { + global::LiveKit.Proto.DataTrackSubscriptionReadResponse subBuilder = new global::LiveKit.Proto.DataTrackSubscriptionReadResponse(); + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionRead) { + subBuilder.MergeFrom(DataTrackSubscriptionRead); + } + input.ReadMessage(subBuilder); + DataTrackSubscriptionRead = subBuilder; + break; + } } } } @@ -7994,6 +8778,12 @@ public FfiEvent(FfiEvent other) : this() { case MessageOneofCase.SendBytes: SendBytes = other.SendBytes.Clone(); break; + case MessageOneofCase.PublishDataTrack: + PublishDataTrack = other.PublishDataTrack.Clone(); + break; + case MessageOneofCase.DataTrackSubscriptionEvent: + DataTrackSubscriptionEvent = other.DataTrackSubscriptionEvent.Clone(); + break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -8491,6 +9281,36 @@ public FfiEvent Clone() { } } + /// Field number for the "publish_data_track" field. + public const int PublishDataTrackFieldNumber = 42; + /// + /// Data Track (local) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.PublishDataTrackCallback PublishDataTrack { + get { return messageCase_ == MessageOneofCase.PublishDataTrack ? (global::LiveKit.Proto.PublishDataTrackCallback) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.PublishDataTrack; + } + } + + /// Field number for the "data_track_subscription_event" field. + public const int DataTrackSubscriptionEventFieldNumber = 43; + /// + /// Data Track (remote) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackSubscriptionEvent DataTrackSubscriptionEvent { + get { return messageCase_ == MessageOneofCase.DataTrackSubscriptionEvent ? (global::LiveKit.Proto.DataTrackSubscriptionEvent) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.DataTrackSubscriptionEvent; + } + } + private object message_; /// Enum of possible cases for the "message" oneof. public enum MessageOneofCase { @@ -8535,6 +9355,8 @@ public enum MessageOneofCase { TextStreamWriterClose = 39, SendText = 40, SendBytes = 41, + PublishDataTrack = 42, + DataTrackSubscriptionEvent = 43, } private MessageOneofCase messageCase_ = MessageOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8605,6 +9427,8 @@ public bool Equals(FfiEvent other) { if (!object.Equals(TextStreamWriterClose, other.TextStreamWriterClose)) return false; if (!object.Equals(SendText, other.SendText)) return false; if (!object.Equals(SendBytes, other.SendBytes)) return false; + if (!object.Equals(PublishDataTrack, other.PublishDataTrack)) return false; + if (!object.Equals(DataTrackSubscriptionEvent, other.DataTrackSubscriptionEvent)) return false; if (MessageCase != other.MessageCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -8653,6 +9477,8 @@ public override int GetHashCode() { if (messageCase_ == MessageOneofCase.TextStreamWriterClose) hash ^= TextStreamWriterClose.GetHashCode(); if (messageCase_ == MessageOneofCase.SendText) hash ^= SendText.GetHashCode(); if (messageCase_ == MessageOneofCase.SendBytes) hash ^= SendBytes.GetHashCode(); + if (messageCase_ == MessageOneofCase.PublishDataTrack) hash ^= PublishDataTrack.GetHashCode(); + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionEvent) hash ^= DataTrackSubscriptionEvent.GetHashCode(); hash ^= (int) messageCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -8832,6 +9658,14 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(202, 2); output.WriteMessage(SendBytes); } + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + output.WriteRawTag(210, 2); + output.WriteMessage(PublishDataTrack); + } + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionEvent) { + output.WriteRawTag(218, 2); + output.WriteMessage(DataTrackSubscriptionEvent); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -9002,6 +9836,14 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(202, 2); output.WriteMessage(SendBytes); } + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + output.WriteRawTag(210, 2); + output.WriteMessage(PublishDataTrack); + } + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionEvent) { + output.WriteRawTag(218, 2); + output.WriteMessage(DataTrackSubscriptionEvent); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -9132,6 +9974,12 @@ public int CalculateSize() { if (messageCase_ == MessageOneofCase.SendBytes) { size += 2 + pb::CodedOutputStream.ComputeMessageSize(SendBytes); } + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(PublishDataTrack); + } + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionEvent) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(DataTrackSubscriptionEvent); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -9385,6 +10233,18 @@ public void MergeFrom(FfiEvent other) { } SendBytes.MergeFrom(other.SendBytes); break; + case MessageOneofCase.PublishDataTrack: + if (PublishDataTrack == null) { + PublishDataTrack = new global::LiveKit.Proto.PublishDataTrackCallback(); + } + PublishDataTrack.MergeFrom(other.PublishDataTrack); + break; + case MessageOneofCase.DataTrackSubscriptionEvent: + if (DataTrackSubscriptionEvent == null) { + DataTrackSubscriptionEvent = new global::LiveKit.Proto.DataTrackSubscriptionEvent(); + } + DataTrackSubscriptionEvent.MergeFrom(other.DataTrackSubscriptionEvent); + break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); @@ -9766,6 +10626,24 @@ public void MergeFrom(pb::CodedInputStream input) { SendBytes = subBuilder; break; } + case 338: { + global::LiveKit.Proto.PublishDataTrackCallback subBuilder = new global::LiveKit.Proto.PublishDataTrackCallback(); + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + subBuilder.MergeFrom(PublishDataTrack); + } + input.ReadMessage(subBuilder); + PublishDataTrack = subBuilder; + break; + } + case 346: { + global::LiveKit.Proto.DataTrackSubscriptionEvent subBuilder = new global::LiveKit.Proto.DataTrackSubscriptionEvent(); + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionEvent) { + subBuilder.MergeFrom(DataTrackSubscriptionEvent); + } + input.ReadMessage(subBuilder); + DataTrackSubscriptionEvent = subBuilder; + break; + } } } #endif @@ -10145,6 +11023,24 @@ public void MergeFrom(pb::CodedInputStream input) { SendBytes = subBuilder; break; } + case 338: { + global::LiveKit.Proto.PublishDataTrackCallback subBuilder = new global::LiveKit.Proto.PublishDataTrackCallback(); + if (messageCase_ == MessageOneofCase.PublishDataTrack) { + subBuilder.MergeFrom(PublishDataTrack); + } + input.ReadMessage(subBuilder); + PublishDataTrack = subBuilder; + break; + } + case 346: { + global::LiveKit.Proto.DataTrackSubscriptionEvent subBuilder = new global::LiveKit.Proto.DataTrackSubscriptionEvent(); + if (messageCase_ == MessageOneofCase.DataTrackSubscriptionEvent) { + subBuilder.MergeFrom(DataTrackSubscriptionEvent); + } + input.ReadMessage(subBuilder); + DataTrackSubscriptionEvent = subBuilder; + break; + } } } } diff --git a/Runtime/Scripts/Proto/Room.cs b/Runtime/Scripts/Proto/Room.cs index feb2afb5..676bbd6a 100644 --- a/Runtime/Scripts/Proto/Room.cs +++ b/Runtime/Scripts/Proto/Room.cs @@ -27,323 +27,329 @@ static RoomReflection() { "Cgpyb29tLnByb3RvEg1saXZla2l0LnByb3RvGgplMmVlLnByb3RvGgxoYW5k", "bGUucHJvdG8aEXBhcnRpY2lwYW50LnByb3RvGgt0cmFjay5wcm90bxoRdmlk", "ZW9fZnJhbWUucHJvdG8aC3N0YXRzLnByb3RvGhFkYXRhX3N0cmVhbS5wcm90", - "byJzCg5Db25uZWN0UmVxdWVzdBILCgN1cmwYASACKAkSDQoFdG9rZW4YAiAC", - "KAkSKwoHb3B0aW9ucxgDIAIoCzIaLmxpdmVraXQucHJvdG8uUm9vbU9wdGlv", - "bnMSGAoQcmVxdWVzdF9hc3luY19pZBgEIAEoBCIjCg9Db25uZWN0UmVzcG9u", - "c2USEAoIYXN5bmNfaWQYASACKAQivwMKD0Nvbm5lY3RDYWxsYmFjaxIQCghh", - "c3luY19pZBgBIAIoBBIPCgVlcnJvchgCIAEoCUgAEjcKBnJlc3VsdBgDIAEo", - "CzIlLmxpdmVraXQucHJvdG8uQ29ubmVjdENhbGxiYWNrLlJlc3VsdEgAGokB", - "ChVQYXJ0aWNpcGFudFdpdGhUcmFja3MSNAoLcGFydGljaXBhbnQYASACKAsy", - "Hy5saXZla2l0LnByb3RvLk93bmVkUGFydGljaXBhbnQSOgoMcHVibGljYXRp", - "b25zGAIgAygLMiQubGl2ZWtpdC5wcm90by5Pd25lZFRyYWNrUHVibGljYXRp", - "b24auAEKBlJlc3VsdBImCgRyb29tGAEgAigLMhgubGl2ZWtpdC5wcm90by5P", - "d25lZFJvb20SOgoRbG9jYWxfcGFydGljaXBhbnQYAiACKAsyHy5saXZla2l0", - "LnByb3RvLk93bmVkUGFydGljaXBhbnQSSgoMcGFydGljaXBhbnRzGAMgAygL", - "MjQubGl2ZWtpdC5wcm90by5Db25uZWN0Q2FsbGJhY2suUGFydGljaXBhbnRX", - "aXRoVHJhY2tzQgkKB21lc3NhZ2UicwoRRGlzY29ubmVjdFJlcXVlc3QSEwoL", - "cm9vbV9oYW5kbGUYASACKAQSGAoQcmVxdWVzdF9hc3luY19pZBgCIAEoBBIv", - "CgZyZWFzb24YAyABKA4yHy5saXZla2l0LnByb3RvLkRpc2Nvbm5lY3RSZWFz", - "b24iJgoSRGlzY29ubmVjdFJlc3BvbnNlEhAKCGFzeW5jX2lkGAEgAigEIiYK", - "EkRpc2Nvbm5lY3RDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBCKcAQoTUHVi", - "bGlzaFRyYWNrUmVxdWVzdBIgChhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUY", - "ASACKAQSFAoMdHJhY2tfaGFuZGxlGAIgAigEEjMKB29wdGlvbnMYAyACKAsy", - "Ii5saXZla2l0LnByb3RvLlRyYWNrUHVibGlzaE9wdGlvbnMSGAoQcmVxdWVz", - "dF9hc3luY19pZBgEIAEoBCIoChRQdWJsaXNoVHJhY2tSZXNwb25zZRIQCghh", - "c3luY19pZBgBIAIoBCKBAQoUUHVibGlzaFRyYWNrQ2FsbGJhY2sSEAoIYXN5", - "bmNfaWQYASACKAQSDwoFZXJyb3IYAiABKAlIABI7CgtwdWJsaWNhdGlvbhgD", - "IAEoCzIkLmxpdmVraXQucHJvdG8uT3duZWRUcmFja1B1YmxpY2F0aW9uSABC", - "CQoHbWVzc2FnZSKBAQoVVW5wdWJsaXNoVHJhY2tSZXF1ZXN0EiAKGGxvY2Fs", - "X3BhcnRpY2lwYW50X2hhbmRsZRgBIAIoBBIRCgl0cmFja19zaWQYAiACKAkS", - "GQoRc3RvcF9vbl91bnB1Ymxpc2gYAyACKAgSGAoQcmVxdWVzdF9hc3luY19p", - "ZBgEIAEoBCIqChZVbnB1Ymxpc2hUcmFja1Jlc3BvbnNlEhAKCGFzeW5jX2lk", - "GAEgAigEIjkKFlVucHVibGlzaFRyYWNrQ2FsbGJhY2sSEAoIYXN5bmNfaWQY", - "ASACKAQSDQoFZXJyb3IYAiABKAki0wEKElB1Ymxpc2hEYXRhUmVxdWVzdBIg", - "Chhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUYASACKAQSEAoIZGF0YV9wdHIY", - "AiACKAQSEAoIZGF0YV9sZW4YAyACKAQSEAoIcmVsaWFibGUYBCACKAgSHAoQ", - "ZGVzdGluYXRpb25fc2lkcxgFIAMoCUICGAESDQoFdG9waWMYBiABKAkSHgoW", - "ZGVzdGluYXRpb25faWRlbnRpdGllcxgHIAMoCRIYChByZXF1ZXN0X2FzeW5j", - "X2lkGAggASgEIicKE1B1Ymxpc2hEYXRhUmVzcG9uc2USEAoIYXN5bmNfaWQY", - "ASACKAQiNgoTUHVibGlzaERhdGFDYWxsYmFjaxIQCghhc3luY19pZBgBIAIo", - "BBINCgVlcnJvchgCIAEoCSLAAQobUHVibGlzaFRyYW5zY3JpcHRpb25SZXF1", - "ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hhbmRsZRgBIAIoBBIcChRwYXJ0", - "aWNpcGFudF9pZGVudGl0eRgCIAIoCRIQCgh0cmFja19pZBgDIAIoCRI1Cghz", - "ZWdtZW50cxgEIAMoCzIjLmxpdmVraXQucHJvdG8uVHJhbnNjcmlwdGlvblNl", - "Z21lbnQSGAoQcmVxdWVzdF9hc3luY19pZBgFIAEoBCIwChxQdWJsaXNoVHJh", - "bnNjcmlwdGlvblJlc3BvbnNlEhAKCGFzeW5jX2lkGAEgAigEIj8KHFB1Ymxp", - "c2hUcmFuc2NyaXB0aW9uQ2FsbGJhY2sSEAoIYXN5bmNfaWQYASACKAQSDQoF", - "ZXJyb3IYAiABKAkikAEKFVB1Ymxpc2hTaXBEdG1mUmVxdWVzdBIgChhsb2Nh", - "bF9wYXJ0aWNpcGFudF9oYW5kbGUYASACKAQSDAoEY29kZRgCIAIoDRINCgVk", - "aWdpdBgDIAIoCRIeChZkZXN0aW5hdGlvbl9pZGVudGl0aWVzGAQgAygJEhgK", - "EHJlcXVlc3RfYXN5bmNfaWQYBSABKAQiKgoWUHVibGlzaFNpcER0bWZSZXNw", - "b25zZRIQCghhc3luY19pZBgBIAIoBCI5ChZQdWJsaXNoU2lwRHRtZkNhbGxi", - "YWNrEhAKCGFzeW5jX2lkGAEgAigEEg0KBWVycm9yGAIgASgJImcKF1NldExv", - "Y2FsTWV0YWRhdGFSZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hhbmRs", - "ZRgBIAIoBBIQCghtZXRhZGF0YRgCIAIoCRIYChByZXF1ZXN0X2FzeW5jX2lk", - "GAMgASgEIiwKGFNldExvY2FsTWV0YWRhdGFSZXNwb25zZRIQCghhc3luY19p", - "ZBgBIAIoBCI7ChhTZXRMb2NhbE1ldGFkYXRhQ2FsbGJhY2sSEAoIYXN5bmNf", - "aWQYASACKAQSDQoFZXJyb3IYAiABKAkingEKFlNlbmRDaGF0TWVzc2FnZVJl", - "cXVlc3QSIAoYbG9jYWxfcGFydGljaXBhbnRfaGFuZGxlGAEgAigEEg8KB21l", - "c3NhZ2UYAiACKAkSHgoWZGVzdGluYXRpb25faWRlbnRpdGllcxgDIAMoCRIX", - "Cg9zZW5kZXJfaWRlbnRpdHkYBCABKAkSGAoQcmVxdWVzdF9hc3luY19pZBgF", - "IAEoBCLWAQoWRWRpdENoYXRNZXNzYWdlUmVxdWVzdBIgChhsb2NhbF9wYXJ0", - "aWNpcGFudF9oYW5kbGUYASACKAQSEQoJZWRpdF90ZXh0GAIgAigJEjQKEG9y", - "aWdpbmFsX21lc3NhZ2UYAyACKAsyGi5saXZla2l0LnByb3RvLkNoYXRNZXNz", - "YWdlEh4KFmRlc3RpbmF0aW9uX2lkZW50aXRpZXMYBCADKAkSFwoPc2VuZGVy", - "X2lkZW50aXR5GAUgASgJEhgKEHJlcXVlc3RfYXN5bmNfaWQYBiABKAQiKwoX", - "U2VuZENoYXRNZXNzYWdlUmVzcG9uc2USEAoIYXN5bmNfaWQYASACKAQiewoX", - "U2VuZENoYXRNZXNzYWdlQ2FsbGJhY2sSEAoIYXN5bmNfaWQYASACKAQSDwoF", - "ZXJyb3IYAiABKAlIABIyCgxjaGF0X21lc3NhZ2UYAyABKAsyGi5saXZla2l0", - "LnByb3RvLkNoYXRNZXNzYWdlSABCCQoHbWVzc2FnZSKLAQoZU2V0TG9jYWxB", - "dHRyaWJ1dGVzUmVxdWVzdBIgChhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUY", - "ASACKAQSMgoKYXR0cmlidXRlcxgCIAMoCzIeLmxpdmVraXQucHJvdG8uQXR0", - "cmlidXRlc0VudHJ5EhgKEHJlcXVlc3RfYXN5bmNfaWQYAyABKAQiLQoPQXR0", - "cmlidXRlc0VudHJ5EgsKA2tleRgBIAIoCRINCgV2YWx1ZRgCIAIoCSIuChpT", - "ZXRMb2NhbEF0dHJpYnV0ZXNSZXNwb25zZRIQCghhc3luY19pZBgBIAIoBCI9", - "ChpTZXRMb2NhbEF0dHJpYnV0ZXNDYWxsYmFjaxIQCghhc3luY19pZBgBIAIo", - "BBINCgVlcnJvchgCIAEoCSJfChNTZXRMb2NhbE5hbWVSZXF1ZXN0EiAKGGxv", - "Y2FsX3BhcnRpY2lwYW50X2hhbmRsZRgBIAIoBBIMCgRuYW1lGAIgAigJEhgK", - "EHJlcXVlc3RfYXN5bmNfaWQYAyABKAQiKAoUU2V0TG9jYWxOYW1lUmVzcG9u", - "c2USEAoIYXN5bmNfaWQYASACKAQiNwoUU2V0TG9jYWxOYW1lQ2FsbGJhY2sS", - "EAoIYXN5bmNfaWQYASACKAQSDQoFZXJyb3IYAiABKAkiRQoUU2V0U3Vic2Ny", - "aWJlZFJlcXVlc3QSEQoJc3Vic2NyaWJlGAEgAigIEhoKEnB1YmxpY2F0aW9u", - "X2hhbmRsZRgCIAIoBCIXChVTZXRTdWJzY3JpYmVkUmVzcG9uc2UiRwoWR2V0", - "U2Vzc2lvblN0YXRzUmVxdWVzdBITCgtyb29tX2hhbmRsZRgBIAIoBBIYChBy", - "ZXF1ZXN0X2FzeW5jX2lkGAIgASgEIisKF0dldFNlc3Npb25TdGF0c1Jlc3Bv", - "bnNlEhAKCGFzeW5jX2lkGAEgAigEIvcBChdHZXRTZXNzaW9uU3RhdHNDYWxs", - "YmFjaxIQCghhc3luY19pZBgBIAIoBBIPCgVlcnJvchgCIAEoCUgAEj8KBnJl", - "c3VsdBgDIAEoCzItLmxpdmVraXQucHJvdG8uR2V0U2Vzc2lvblN0YXRzQ2Fs", - "bGJhY2suUmVzdWx0SAAabQoGUmVzdWx0EjAKD3B1Ymxpc2hlcl9zdGF0cxgB", - "IAMoCzIXLmxpdmVraXQucHJvdG8uUnRjU3RhdHMSMQoQc3Vic2NyaWJlcl9z", - "dGF0cxgCIAMoCzIXLmxpdmVraXQucHJvdG8uUnRjU3RhdHNCCQoHbWVzc2Fn", - "ZSI7Cg1WaWRlb0VuY29kaW5nEhMKC21heF9iaXRyYXRlGAEgAigEEhUKDW1h", - "eF9mcmFtZXJhdGUYAiACKAEiJAoNQXVkaW9FbmNvZGluZxITCgttYXhfYml0", - "cmF0ZRgBIAIoBCK1AgoTVHJhY2tQdWJsaXNoT3B0aW9ucxI0Cg52aWRlb19l", - "bmNvZGluZxgBIAEoCzIcLmxpdmVraXQucHJvdG8uVmlkZW9FbmNvZGluZxI0", - "Cg5hdWRpb19lbmNvZGluZxgCIAEoCzIcLmxpdmVraXQucHJvdG8uQXVkaW9F", - "bmNvZGluZxIuCgt2aWRlb19jb2RlYxgDIAEoDjIZLmxpdmVraXQucHJvdG8u", - "VmlkZW9Db2RlYxILCgNkdHgYBCABKAgSCwoDcmVkGAUgASgIEhEKCXNpbXVs", - "Y2FzdBgGIAEoCBIqCgZzb3VyY2UYByABKA4yGi5saXZla2l0LnByb3RvLlRy", - "YWNrU291cmNlEg4KBnN0cmVhbRgIIAEoCRIZChFwcmVjb25uZWN0X2J1ZmZl", - "chgJIAEoCCI9CglJY2VTZXJ2ZXISDAoEdXJscxgBIAMoCRIQCgh1c2VybmFt", - "ZRgCIAEoCRIQCghwYXNzd29yZBgDIAEoCSLEAQoJUnRjQ29uZmlnEjsKEmlj", - "ZV90cmFuc3BvcnRfdHlwZRgBIAEoDjIfLmxpdmVraXQucHJvdG8uSWNlVHJh", - "bnNwb3J0VHlwZRJLChpjb250aW51YWxfZ2F0aGVyaW5nX3BvbGljeRgCIAEo", - "DjInLmxpdmVraXQucHJvdG8uQ29udGludWFsR2F0aGVyaW5nUG9saWN5Ei0K", - "C2ljZV9zZXJ2ZXJzGAMgAygLMhgubGl2ZWtpdC5wcm90by5JY2VTZXJ2ZXIi", - "rgIKC1Jvb21PcHRpb25zEhYKDmF1dG9fc3Vic2NyaWJlGAEgASgIEhcKD2Fk", - "YXB0aXZlX3N0cmVhbRgCIAEoCBIQCghkeW5hY2FzdBgDIAEoCBIsCgRlMmVl", - "GAQgASgLMhoubGl2ZWtpdC5wcm90by5FMmVlT3B0aW9uc0ICGAESLAoKcnRj", - "X2NvbmZpZxgFIAEoCzIYLmxpdmVraXQucHJvdG8uUnRjQ29uZmlnEhQKDGpv", - "aW5fcmV0cmllcxgGIAEoDRIuCgplbmNyeXB0aW9uGAcgASgLMhoubGl2ZWtp", - "dC5wcm90by5FMmVlT3B0aW9ucxIeChZzaW5nbGVfcGVlcl9jb25uZWN0aW9u", - "GAggASgIEhoKEmNvbm5lY3RfdGltZW91dF9tcxgJIAEoBCJ3ChRUcmFuc2Ny", - "aXB0aW9uU2VnbWVudBIKCgJpZBgBIAIoCRIMCgR0ZXh0GAIgAigJEhIKCnN0", - "YXJ0X3RpbWUYAyACKAQSEAoIZW5kX3RpbWUYBCACKAQSDQoFZmluYWwYBSAC", - "KAgSEAoIbGFuZ3VhZ2UYBiACKAkiMAoKQnVmZmVySW5mbxIQCghkYXRhX3B0", - "chgBIAIoBBIQCghkYXRhX2xlbhgCIAIoBCJlCgtPd25lZEJ1ZmZlchItCgZo", - "YW5kbGUYASACKAsyHS5saXZla2l0LnByb3RvLkZmaU93bmVkSGFuZGxlEicK", - "BGRhdGEYAiACKAsyGS5saXZla2l0LnByb3RvLkJ1ZmZlckluZm8iuxUKCVJv", - "b21FdmVudBITCgtyb29tX2hhbmRsZRgBIAIoBBJEChVwYXJ0aWNpcGFudF9j", - "b25uZWN0ZWQYAiABKAsyIy5saXZla2l0LnByb3RvLlBhcnRpY2lwYW50Q29u", - "bmVjdGVkSAASSgoYcGFydGljaXBhbnRfZGlzY29ubmVjdGVkGAMgASgLMiYu", - "bGl2ZWtpdC5wcm90by5QYXJ0aWNpcGFudERpc2Nvbm5lY3RlZEgAEkMKFWxv", - "Y2FsX3RyYWNrX3B1Ymxpc2hlZBgEIAEoCzIiLmxpdmVraXQucHJvdG8uTG9j", - "YWxUcmFja1B1Ymxpc2hlZEgAEkcKF2xvY2FsX3RyYWNrX3VucHVibGlzaGVk", - "GAUgASgLMiQubGl2ZWtpdC5wcm90by5Mb2NhbFRyYWNrVW5wdWJsaXNoZWRI", - "ABJFChZsb2NhbF90cmFja19zdWJzY3JpYmVkGAYgASgLMiMubGl2ZWtpdC5w", - "cm90by5Mb2NhbFRyYWNrU3Vic2NyaWJlZEgAEjgKD3RyYWNrX3B1Ymxpc2hl", - "ZBgHIAEoCzIdLmxpdmVraXQucHJvdG8uVHJhY2tQdWJsaXNoZWRIABI8ChF0", - "cmFja191bnB1Ymxpc2hlZBgIIAEoCzIfLmxpdmVraXQucHJvdG8uVHJhY2tV", - "bnB1Ymxpc2hlZEgAEjoKEHRyYWNrX3N1YnNjcmliZWQYCSABKAsyHi5saXZl", - "a2l0LnByb3RvLlRyYWNrU3Vic2NyaWJlZEgAEj4KEnRyYWNrX3Vuc3Vic2Ny", - "aWJlZBgKIAEoCzIgLmxpdmVraXQucHJvdG8uVHJhY2tVbnN1YnNjcmliZWRI", - "ABJLChl0cmFja19zdWJzY3JpcHRpb25fZmFpbGVkGAsgASgLMiYubGl2ZWtp", - "dC5wcm90by5UcmFja1N1YnNjcmlwdGlvbkZhaWxlZEgAEjAKC3RyYWNrX211", - "dGVkGAwgASgLMhkubGl2ZWtpdC5wcm90by5UcmFja011dGVkSAASNAoNdHJh", - "Y2tfdW5tdXRlZBgNIAEoCzIbLmxpdmVraXQucHJvdG8uVHJhY2tVbm11dGVk", - "SAASRwoXYWN0aXZlX3NwZWFrZXJzX2NoYW5nZWQYDiABKAsyJC5saXZla2l0", - "LnByb3RvLkFjdGl2ZVNwZWFrZXJzQ2hhbmdlZEgAEkMKFXJvb21fbWV0YWRh", - "dGFfY2hhbmdlZBgPIAEoCzIiLmxpdmVraXQucHJvdG8uUm9vbU1ldGFkYXRh", - "Q2hhbmdlZEgAEjkKEHJvb21fc2lkX2NoYW5nZWQYECABKAsyHS5saXZla2l0", - "LnByb3RvLlJvb21TaWRDaGFuZ2VkSAASUQoccGFydGljaXBhbnRfbWV0YWRh", - "dGFfY2hhbmdlZBgRIAEoCzIpLmxpdmVraXQucHJvdG8uUGFydGljaXBhbnRN", - "ZXRhZGF0YUNoYW5nZWRIABJJChhwYXJ0aWNpcGFudF9uYW1lX2NoYW5nZWQY", - "EiABKAsyJS5saXZla2l0LnByb3RvLlBhcnRpY2lwYW50TmFtZUNoYW5nZWRI", - "ABJVCh5wYXJ0aWNpcGFudF9hdHRyaWJ1dGVzX2NoYW5nZWQYEyABKAsyKy5s", - "aXZla2l0LnByb3RvLlBhcnRpY2lwYW50QXR0cmlidXRlc0NoYW5nZWRIABJN", - "Chpjb25uZWN0aW9uX3F1YWxpdHlfY2hhbmdlZBgUIAEoCzInLmxpdmVraXQu", - "cHJvdG8uQ29ubmVjdGlvblF1YWxpdHlDaGFuZ2VkSAASSQoYY29ubmVjdGlv", - "bl9zdGF0ZV9jaGFuZ2VkGBUgASgLMiUubGl2ZWtpdC5wcm90by5Db25uZWN0", - "aW9uU3RhdGVDaGFuZ2VkSAASMwoMZGlzY29ubmVjdGVkGBYgASgLMhsubGl2", - "ZWtpdC5wcm90by5EaXNjb25uZWN0ZWRIABIzCgxyZWNvbm5lY3RpbmcYFyAB", - "KAsyGy5saXZla2l0LnByb3RvLlJlY29ubmVjdGluZ0gAEjEKC3JlY29ubmVj", - "dGVkGBggASgLMhoubGl2ZWtpdC5wcm90by5SZWNvbm5lY3RlZEgAEj0KEmUy", - "ZWVfc3RhdGVfY2hhbmdlZBgZIAEoCzIfLmxpdmVraXQucHJvdG8uRTJlZVN0", - "YXRlQ2hhbmdlZEgAEiUKA2VvcxgaIAEoCzIWLmxpdmVraXQucHJvdG8uUm9v", - "bUVPU0gAEkEKFGRhdGFfcGFja2V0X3JlY2VpdmVkGBsgASgLMiEubGl2ZWtp", - "dC5wcm90by5EYXRhUGFja2V0UmVjZWl2ZWRIABJGChZ0cmFuc2NyaXB0aW9u", - "X3JlY2VpdmVkGBwgASgLMiQubGl2ZWtpdC5wcm90by5UcmFuc2NyaXB0aW9u", - "UmVjZWl2ZWRIABI6CgxjaGF0X21lc3NhZ2UYHSABKAsyIi5saXZla2l0LnBy", - "b3RvLkNoYXRNZXNzYWdlUmVjZWl2ZWRIABJJChZzdHJlYW1faGVhZGVyX3Jl", - "Y2VpdmVkGB4gASgLMicubGl2ZWtpdC5wcm90by5EYXRhU3RyZWFtSGVhZGVy", - "UmVjZWl2ZWRIABJHChVzdHJlYW1fY2h1bmtfcmVjZWl2ZWQYHyABKAsyJi5s", - "aXZla2l0LnByb3RvLkRhdGFTdHJlYW1DaHVua1JlY2VpdmVkSAASSwoXc3Ry", - "ZWFtX3RyYWlsZXJfcmVjZWl2ZWQYICABKAsyKC5saXZla2l0LnByb3RvLkRh", - "dGFTdHJlYW1UcmFpbGVyUmVjZWl2ZWRIABJpCiJkYXRhX2NoYW5uZWxfbG93", - "X3RocmVzaG9sZF9jaGFuZ2VkGCEgASgLMjsubGl2ZWtpdC5wcm90by5EYXRh", - "Q2hhbm5lbEJ1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkQ2hhbmdlZEgAEj0K", - "EmJ5dGVfc3RyZWFtX29wZW5lZBgiIAEoCzIfLmxpdmVraXQucHJvdG8uQnl0", - "ZVN0cmVhbU9wZW5lZEgAEj0KEnRleHRfc3RyZWFtX29wZW5lZBgjIAEoCzIf", - "LmxpdmVraXQucHJvdG8uVGV4dFN0cmVhbU9wZW5lZEgAEi8KDHJvb21fdXBk", - "YXRlZBgkIAEoCzIXLmxpdmVraXQucHJvdG8uUm9vbUluZm9IABIoCgVtb3Zl", - "ZBglIAEoCzIXLmxpdmVraXQucHJvdG8uUm9vbUluZm9IABJCChRwYXJ0aWNp", - "cGFudHNfdXBkYXRlZBgmIAEoCzIiLmxpdmVraXQucHJvdG8uUGFydGljaXBh", - "bnRzVXBkYXRlZEgAEmIKJXBhcnRpY2lwYW50X2VuY3J5cHRpb25fc3RhdHVz", - "X2NoYW5nZWQYJyABKAsyMS5saXZla2l0LnByb3RvLlBhcnRpY2lwYW50RW5j", - "cnlwdGlvblN0YXR1c0NoYW5nZWRIABJVCh5wYXJ0aWNpcGFudF9wZXJtaXNz", - "aW9uX2NoYW5nZWQYKSABKAsyKy5saXZla2l0LnByb3RvLlBhcnRpY2lwYW50", - "UGVybWlzc2lvbkNoYW5nZWRIABI4Cg90b2tlbl9yZWZyZXNoZWQYKCABKAsy", - "HS5saXZla2l0LnByb3RvLlRva2VuUmVmcmVzaGVkSABCCQoHbWVzc2FnZSLJ", - "AgoIUm9vbUluZm8SCwoDc2lkGAEgASgJEgwKBG5hbWUYAiACKAkSEAoIbWV0", - "YWRhdGEYAyACKAkSLgombG9zc3lfZGNfYnVmZmVyZWRfYW1vdW50X2xvd190", - "aHJlc2hvbGQYBCACKAQSMQopcmVsaWFibGVfZGNfYnVmZmVyZWRfYW1vdW50", - "X2xvd190aHJlc2hvbGQYBSACKAQSFQoNZW1wdHlfdGltZW91dBgGIAIoDRIZ", - "ChFkZXBhcnR1cmVfdGltZW91dBgHIAIoDRIYChBtYXhfcGFydGljaXBhbnRz", - "GAggAigNEhUKDWNyZWF0aW9uX3RpbWUYCSACKAMSGAoQbnVtX3BhcnRpY2lw", - "YW50cxgKIAIoDRIWCg5udW1fcHVibGlzaGVycxgLIAIoDRIYChBhY3RpdmVf", - "cmVjb3JkaW5nGAwgAigIImEKCU93bmVkUm9vbRItCgZoYW5kbGUYASACKAsy", - "HS5saXZla2l0LnByb3RvLkZmaU93bmVkSGFuZGxlEiUKBGluZm8YAiACKAsy", - "Fy5saXZla2l0LnByb3RvLlJvb21JbmZvIksKE1BhcnRpY2lwYW50c1VwZGF0", - "ZWQSNAoMcGFydGljaXBhbnRzGAEgAygLMh4ubGl2ZWtpdC5wcm90by5QYXJ0", - "aWNpcGFudEluZm8iRQoUUGFydGljaXBhbnRDb25uZWN0ZWQSLQoEaW5mbxgB", - "IAIoCzIfLmxpdmVraXQucHJvdG8uT3duZWRQYXJ0aWNpcGFudCJzChdQYXJ0", - "aWNpcGFudERpc2Nvbm5lY3RlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgB", - "IAIoCRI6ChFkaXNjb25uZWN0X3JlYXNvbhgCIAIoDjIfLmxpdmVraXQucHJv", - "dG8uRGlzY29ubmVjdFJlYXNvbiIoChNMb2NhbFRyYWNrUHVibGlzaGVkEhEK", - "CXRyYWNrX3NpZBgBIAIoCSIwChVMb2NhbFRyYWNrVW5wdWJsaXNoZWQSFwoP", - "cHVibGljYXRpb25fc2lkGAEgAigJIikKFExvY2FsVHJhY2tTdWJzY3JpYmVk", - "EhEKCXRyYWNrX3NpZBgCIAIoCSJpCg5UcmFja1B1Ymxpc2hlZBIcChRwYXJ0", - "aWNpcGFudF9pZGVudGl0eRgBIAIoCRI5CgtwdWJsaWNhdGlvbhgCIAIoCzIk", - "LmxpdmVraXQucHJvdG8uT3duZWRUcmFja1B1YmxpY2F0aW9uIkkKEFRyYWNr", - "VW5wdWJsaXNoZWQSHAoUcGFydGljaXBhbnRfaWRlbnRpdHkYASACKAkSFwoP", - "cHVibGljYXRpb25fc2lkGAIgAigJIlkKD1RyYWNrU3Vic2NyaWJlZBIcChRw", - "YXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRIoCgV0cmFjaxgCIAIoCzIZLmxp", - "dmVraXQucHJvdG8uT3duZWRUcmFjayJEChFUcmFja1Vuc3Vic2NyaWJlZBIc", - "ChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRIRCgl0cmFja19zaWQYAiAC", - "KAkiWQoXVHJhY2tTdWJzY3JpcHRpb25GYWlsZWQSHAoUcGFydGljaXBhbnRf", - "aWRlbnRpdHkYASACKAkSEQoJdHJhY2tfc2lkGAIgAigJEg0KBWVycm9yGAMg", - "AigJIj0KClRyYWNrTXV0ZWQSHAoUcGFydGljaXBhbnRfaWRlbnRpdHkYASAC", - "KAkSEQoJdHJhY2tfc2lkGAIgAigJIj8KDFRyYWNrVW5tdXRlZBIcChRwYXJ0", - "aWNpcGFudF9pZGVudGl0eRgBIAIoCRIRCgl0cmFja19zaWQYAiACKAkiXwoQ", - "RTJlZVN0YXRlQ2hhbmdlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIo", - "CRItCgVzdGF0ZRgCIAIoDjIeLmxpdmVraXQucHJvdG8uRW5jcnlwdGlvblN0", - "YXRlIjcKFUFjdGl2ZVNwZWFrZXJzQ2hhbmdlZBIeChZwYXJ0aWNpcGFudF9p", - "ZGVudGl0aWVzGAEgAygJIicKE1Jvb21NZXRhZGF0YUNoYW5nZWQSEAoIbWV0", - "YWRhdGEYASACKAkiHQoOUm9vbVNpZENoYW5nZWQSCwoDc2lkGAEgAigJIkwK", - "GlBhcnRpY2lwYW50TWV0YWRhdGFDaGFuZ2VkEhwKFHBhcnRpY2lwYW50X2lk", - "ZW50aXR5GAEgAigJEhAKCG1ldGFkYXRhGAIgAigJIqwBChxQYXJ0aWNpcGFu", - "dEF0dHJpYnV0ZXNDaGFuZ2VkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAEg", - "AigJEjIKCmF0dHJpYnV0ZXMYAiADKAsyHi5saXZla2l0LnByb3RvLkF0dHJp", - "YnV0ZXNFbnRyeRI6ChJjaGFuZ2VkX2F0dHJpYnV0ZXMYAyADKAsyHi5saXZl", - "a2l0LnByb3RvLkF0dHJpYnV0ZXNFbnRyeSJYCiJQYXJ0aWNpcGFudEVuY3J5", - "cHRpb25TdGF0dXNDaGFuZ2VkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAEg", - "AigJEhQKDGlzX2VuY3J5cHRlZBgCIAIoCCJEChZQYXJ0aWNpcGFudE5hbWVD", - "aGFuZ2VkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAEgAigJEgwKBG5hbWUY", - "AiACKAkidgocUGFydGljaXBhbnRQZXJtaXNzaW9uQ2hhbmdlZBIcChRwYXJ0", - "aWNpcGFudF9pZGVudGl0eRgBIAIoCRI4CgpwZXJtaXNzaW9uGAIgASgLMiQu", - "bGl2ZWtpdC5wcm90by5QYXJ0aWNpcGFudFBlcm1pc3Npb24iawoYQ29ubmVj", - "dGlvblF1YWxpdHlDaGFuZ2VkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAEg", - "AigJEjEKB3F1YWxpdHkYAiACKA4yIC5saXZla2l0LnByb3RvLkNvbm5lY3Rp", - "b25RdWFsaXR5IkUKClVzZXJQYWNrZXQSKAoEZGF0YRgBIAIoCzIaLmxpdmVr", - "aXQucHJvdG8uT3duZWRCdWZmZXISDQoFdG9waWMYAiABKAkieQoLQ2hhdE1l", - "c3NhZ2USCgoCaWQYASACKAkSEQoJdGltZXN0YW1wGAIgAigDEg8KB21lc3Nh", - "Z2UYAyACKAkSFgoOZWRpdF90aW1lc3RhbXAYBCABKAMSDwoHZGVsZXRlZBgF", - "IAEoCBIRCglnZW5lcmF0ZWQYBiABKAgiYAoTQ2hhdE1lc3NhZ2VSZWNlaXZl", - "ZBIrCgdtZXNzYWdlGAEgAigLMhoubGl2ZWtpdC5wcm90by5DaGF0TWVzc2Fn", - "ZRIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgCIAIoCSImCgdTaXBEVE1GEgwK", - "BGNvZGUYASACKA0SDQoFZGlnaXQYAiABKAkivwEKEkRhdGFQYWNrZXRSZWNl", - "aXZlZBIrCgRraW5kGAEgAigOMh0ubGl2ZWtpdC5wcm90by5EYXRhUGFja2V0", - "S2luZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgCIAIoCRIpCgR1c2VyGAQg", - "ASgLMhkubGl2ZWtpdC5wcm90by5Vc2VyUGFja2V0SAASKgoIc2lwX2R0bWYY", - "BSABKAsyFi5saXZla2l0LnByb3RvLlNpcERUTUZIAEIHCgV2YWx1ZSJ/ChVU", - "cmFuc2NyaXB0aW9uUmVjZWl2ZWQSHAoUcGFydGljaXBhbnRfaWRlbnRpdHkY", - "ASABKAkSEQoJdHJhY2tfc2lkGAIgASgJEjUKCHNlZ21lbnRzGAMgAygLMiMu", - "bGl2ZWtpdC5wcm90by5UcmFuc2NyaXB0aW9uU2VnbWVudCJHChZDb25uZWN0", - "aW9uU3RhdGVDaGFuZ2VkEi0KBXN0YXRlGAEgAigOMh4ubGl2ZWtpdC5wcm90", - "by5Db25uZWN0aW9uU3RhdGUiCwoJQ29ubmVjdGVkIj8KDERpc2Nvbm5lY3Rl", - "ZBIvCgZyZWFzb24YASACKA4yHy5saXZla2l0LnByb3RvLkRpc2Nvbm5lY3RS", - "ZWFzb24iDgoMUmVjb25uZWN0aW5nIg0KC1JlY29ubmVjdGVkIh8KDlRva2Vu", - "UmVmcmVzaGVkEg0KBXRva2VuGAEgAigJIgkKB1Jvb21FT1MijgcKCkRhdGFT", - "dHJlYW0aqgEKClRleHRIZWFkZXISPwoOb3BlcmF0aW9uX3R5cGUYASACKA4y", - "Jy5saXZla2l0LnByb3RvLkRhdGFTdHJlYW0uT3BlcmF0aW9uVHlwZRIPCgd2", - "ZXJzaW9uGAIgASgFEhoKEnJlcGx5X3RvX3N0cmVhbV9pZBgDIAEoCRIbChNh", - "dHRhY2hlZF9zdHJlYW1faWRzGAQgAygJEhEKCWdlbmVyYXRlZBgFIAEoCBoa", - "CgpCeXRlSGVhZGVyEgwKBG5hbWUYASACKAka6wIKBkhlYWRlchIRCglzdHJl", - "YW1faWQYASACKAkSEQoJdGltZXN0YW1wGAIgAigDEhEKCW1pbWVfdHlwZRgD", - "IAIoCRINCgV0b3BpYxgEIAIoCRIUCgx0b3RhbF9sZW5ndGgYBSABKAQSRAoK", - "YXR0cmlidXRlcxgGIAMoCzIwLmxpdmVraXQucHJvdG8uRGF0YVN0cmVhbS5I", - "ZWFkZXIuQXR0cmlidXRlc0VudHJ5EjsKC3RleHRfaGVhZGVyGAcgASgLMiQu", - "bGl2ZWtpdC5wcm90by5EYXRhU3RyZWFtLlRleHRIZWFkZXJIABI7CgtieXRl", - "X2hlYWRlchgIIAEoCzIkLmxpdmVraXQucHJvdG8uRGF0YVN0cmVhbS5CeXRl", - "SGVhZGVySAAaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2", - "YWx1ZRgCIAEoCToCOAFCEAoOY29udGVudF9oZWFkZXIaXQoFQ2h1bmsSEQoJ", - "c3RyZWFtX2lkGAEgAigJEhMKC2NodW5rX2luZGV4GAIgAigEEg8KB2NvbnRl", - "bnQYAyACKAwSDwoHdmVyc2lvbhgEIAEoBRIKCgJpdhgFIAEoDBqmAQoHVHJh", - "aWxlchIRCglzdHJlYW1faWQYASACKAkSDgoGcmVhc29uGAIgAigJEkUKCmF0", - "dHJpYnV0ZXMYAyADKAsyMS5saXZla2l0LnByb3RvLkRhdGFTdHJlYW0uVHJh", - "aWxlci5BdHRyaWJ1dGVzRW50cnkaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tl", - "eRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoNT3BlcmF0aW9uVHlwZRIK", - "CgZDUkVBVEUQABIKCgZVUERBVEUQARIKCgZERUxFVEUQAhIMCghSRUFDVElP", - "ThADImoKGERhdGFTdHJlYW1IZWFkZXJSZWNlaXZlZBIcChRwYXJ0aWNpcGFu", - "dF9pZGVudGl0eRgBIAIoCRIwCgZoZWFkZXIYAiACKAsyIC5saXZla2l0LnBy", - "b3RvLkRhdGFTdHJlYW0uSGVhZGVyImcKF0RhdGFTdHJlYW1DaHVua1JlY2Vp", - "dmVkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAEgAigJEi4KBWNodW5rGAIg", - "AigLMh8ubGl2ZWtpdC5wcm90by5EYXRhU3RyZWFtLkNodW5rIm0KGURhdGFT", - "dHJlYW1UcmFpbGVyUmVjZWl2ZWQSHAoUcGFydGljaXBhbnRfaWRlbnRpdHkY", - "ASACKAkSMgoHdHJhaWxlchgCIAIoCzIhLmxpdmVraXQucHJvdG8uRGF0YVN0", - "cmVhbS5UcmFpbGVyIsABChdTZW5kU3RyZWFtSGVhZGVyUmVxdWVzdBIgChhs", - "b2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUYASACKAQSMAoGaGVhZGVyGAIgAigL", - "MiAubGl2ZWtpdC5wcm90by5EYXRhU3RyZWFtLkhlYWRlchIeChZkZXN0aW5h", - "dGlvbl9pZGVudGl0aWVzGAMgAygJEhcKD3NlbmRlcl9pZGVudGl0eRgEIAIo", - "CRIYChByZXF1ZXN0X2FzeW5jX2lkGAUgASgEIr0BChZTZW5kU3RyZWFtQ2h1", - "bmtSZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hhbmRsZRgBIAIoBBIu", - "CgVjaHVuaxgCIAIoCzIfLmxpdmVraXQucHJvdG8uRGF0YVN0cmVhbS5DaHVu", - "axIeChZkZXN0aW5hdGlvbl9pZGVudGl0aWVzGAMgAygJEhcKD3NlbmRlcl9p", - "ZGVudGl0eRgEIAIoCRIYChByZXF1ZXN0X2FzeW5jX2lkGAUgASgEIsMBChhT", - "ZW5kU3RyZWFtVHJhaWxlclJlcXVlc3QSIAoYbG9jYWxfcGFydGljaXBhbnRf", - "aGFuZGxlGAEgAigEEjIKB3RyYWlsZXIYAiACKAsyIS5saXZla2l0LnByb3Rv", - "LkRhdGFTdHJlYW0uVHJhaWxlchIeChZkZXN0aW5hdGlvbl9pZGVudGl0aWVz", - "GAMgAygJEhcKD3NlbmRlcl9pZGVudGl0eRgEIAIoCRIYChByZXF1ZXN0X2Fz", - "eW5jX2lkGAUgASgEIiwKGFNlbmRTdHJlYW1IZWFkZXJSZXNwb25zZRIQCghh", - "c3luY19pZBgBIAIoBCIrChdTZW5kU3RyZWFtQ2h1bmtSZXNwb25zZRIQCghh", - "c3luY19pZBgBIAIoBCItChlTZW5kU3RyZWFtVHJhaWxlclJlc3BvbnNlEhAK", - "CGFzeW5jX2lkGAEgAigEIjsKGFNlbmRTdHJlYW1IZWFkZXJDYWxsYmFjaxIQ", - "Cghhc3luY19pZBgBIAIoBBINCgVlcnJvchgCIAEoCSI6ChdTZW5kU3RyZWFt", - "Q2h1bmtDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBBINCgVlcnJvchgCIAEo", - "CSI8ChlTZW5kU3RyZWFtVHJhaWxlckNhbGxiYWNrEhAKCGFzeW5jX2lkGAEg", - "AigEEg0KBWVycm9yGAIgASgJIpMBCi9TZXREYXRhQ2hhbm5lbEJ1ZmZlcmVk", - "QW1vdW50TG93VGhyZXNob2xkUmVxdWVzdBIgChhsb2NhbF9wYXJ0aWNpcGFu", - "dF9oYW5kbGUYASACKAQSEQoJdGhyZXNob2xkGAIgAigEEisKBGtpbmQYAyAC", - "KA4yHS5saXZla2l0LnByb3RvLkRhdGFQYWNrZXRLaW5kIjIKMFNldERhdGFD", - "aGFubmVsQnVmZmVyZWRBbW91bnRMb3dUaHJlc2hvbGRSZXNwb25zZSJuCixE", - "YXRhQ2hhbm5lbEJ1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkQ2hhbmdlZBIr", - "CgRraW5kGAEgAigOMh0ubGl2ZWtpdC5wcm90by5EYXRhUGFja2V0S2luZBIR", - "Cgl0aHJlc2hvbGQYAiACKAQiZgoQQnl0ZVN0cmVhbU9wZW5lZBI0CgZyZWFk", - "ZXIYASACKAsyJC5saXZla2l0LnByb3RvLk93bmVkQnl0ZVN0cmVhbVJlYWRl", - "chIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgCIAIoCSJmChBUZXh0U3RyZWFt", - "T3BlbmVkEjQKBnJlYWRlchgBIAIoCzIkLmxpdmVraXQucHJvdG8uT3duZWRU", - "ZXh0U3RyZWFtUmVhZGVyEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAIgAigJ", - "KlAKEEljZVRyYW5zcG9ydFR5cGUSEwoPVFJBTlNQT1JUX1JFTEFZEAASFAoQ", - "VFJBTlNQT1JUX05PSE9TVBABEhEKDVRSQU5TUE9SVF9BTEwQAipDChhDb250", - "aW51YWxHYXRoZXJpbmdQb2xpY3kSDwoLR0FUSEVSX09OQ0UQABIWChJHQVRI", - "RVJfQ09OVElOVUFMTFkQASpgChFDb25uZWN0aW9uUXVhbGl0eRIQCgxRVUFM", - "SVRZX1BPT1IQABIQCgxRVUFMSVRZX0dPT0QQARIVChFRVUFMSVRZX0VYQ0VM", - "TEVOVBACEhAKDFFVQUxJVFlfTE9TVBADKlMKD0Nvbm5lY3Rpb25TdGF0ZRIV", - "ChFDT05OX0RJU0NPTk5FQ1RFRBAAEhIKDkNPTk5fQ09OTkVDVEVEEAESFQoR", - "Q09OTl9SRUNPTk5FQ1RJTkcQAiozCg5EYXRhUGFja2V0S2luZBIOCgpLSU5E", - "X0xPU1NZEAASEQoNS0lORF9SRUxJQUJMRRABQhCqAg1MaXZlS2l0LlByb3Rv")); + "bxoQZGF0YV90cmFjay5wcm90byJzCg5Db25uZWN0UmVxdWVzdBILCgN1cmwY", + "ASACKAkSDQoFdG9rZW4YAiACKAkSKwoHb3B0aW9ucxgDIAIoCzIaLmxpdmVr", + "aXQucHJvdG8uUm9vbU9wdGlvbnMSGAoQcmVxdWVzdF9hc3luY19pZBgEIAEo", + "BCIjCg9Db25uZWN0UmVzcG9uc2USEAoIYXN5bmNfaWQYASACKAQivwMKD0Nv", + "bm5lY3RDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBBIPCgVlcnJvchgCIAEo", + "CUgAEjcKBnJlc3VsdBgDIAEoCzIlLmxpdmVraXQucHJvdG8uQ29ubmVjdENh", + "bGxiYWNrLlJlc3VsdEgAGokBChVQYXJ0aWNpcGFudFdpdGhUcmFja3MSNAoL", + "cGFydGljaXBhbnQYASACKAsyHy5saXZla2l0LnByb3RvLk93bmVkUGFydGlj", + "aXBhbnQSOgoMcHVibGljYXRpb25zGAIgAygLMiQubGl2ZWtpdC5wcm90by5P", + "d25lZFRyYWNrUHVibGljYXRpb24auAEKBlJlc3VsdBImCgRyb29tGAEgAigL", + "MhgubGl2ZWtpdC5wcm90by5Pd25lZFJvb20SOgoRbG9jYWxfcGFydGljaXBh", + "bnQYAiACKAsyHy5saXZla2l0LnByb3RvLk93bmVkUGFydGljaXBhbnQSSgoM", + "cGFydGljaXBhbnRzGAMgAygLMjQubGl2ZWtpdC5wcm90by5Db25uZWN0Q2Fs", + "bGJhY2suUGFydGljaXBhbnRXaXRoVHJhY2tzQgkKB21lc3NhZ2UicwoRRGlz", + "Y29ubmVjdFJlcXVlc3QSEwoLcm9vbV9oYW5kbGUYASACKAQSGAoQcmVxdWVz", + "dF9hc3luY19pZBgCIAEoBBIvCgZyZWFzb24YAyABKA4yHy5saXZla2l0LnBy", + "b3RvLkRpc2Nvbm5lY3RSZWFzb24iJgoSRGlzY29ubmVjdFJlc3BvbnNlEhAK", + "CGFzeW5jX2lkGAEgAigEIiYKEkRpc2Nvbm5lY3RDYWxsYmFjaxIQCghhc3lu", + "Y19pZBgBIAIoBCKcAQoTUHVibGlzaFRyYWNrUmVxdWVzdBIgChhsb2NhbF9w", + "YXJ0aWNpcGFudF9oYW5kbGUYASACKAQSFAoMdHJhY2tfaGFuZGxlGAIgAigE", + "EjMKB29wdGlvbnMYAyACKAsyIi5saXZla2l0LnByb3RvLlRyYWNrUHVibGlz", + "aE9wdGlvbnMSGAoQcmVxdWVzdF9hc3luY19pZBgEIAEoBCIoChRQdWJsaXNo", + "VHJhY2tSZXNwb25zZRIQCghhc3luY19pZBgBIAIoBCKBAQoUUHVibGlzaFRy", + "YWNrQ2FsbGJhY2sSEAoIYXN5bmNfaWQYASACKAQSDwoFZXJyb3IYAiABKAlI", + "ABI7CgtwdWJsaWNhdGlvbhgDIAEoCzIkLmxpdmVraXQucHJvdG8uT3duZWRU", + "cmFja1B1YmxpY2F0aW9uSABCCQoHbWVzc2FnZSKBAQoVVW5wdWJsaXNoVHJh", + "Y2tSZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hhbmRsZRgBIAIoBBIR", + "Cgl0cmFja19zaWQYAiACKAkSGQoRc3RvcF9vbl91bnB1Ymxpc2gYAyACKAgS", + "GAoQcmVxdWVzdF9hc3luY19pZBgEIAEoBCIqChZVbnB1Ymxpc2hUcmFja1Jl", + "c3BvbnNlEhAKCGFzeW5jX2lkGAEgAigEIjkKFlVucHVibGlzaFRyYWNrQ2Fs", + "bGJhY2sSEAoIYXN5bmNfaWQYASACKAQSDQoFZXJyb3IYAiABKAki0wEKElB1", + "Ymxpc2hEYXRhUmVxdWVzdBIgChhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUY", + "ASACKAQSEAoIZGF0YV9wdHIYAiACKAQSEAoIZGF0YV9sZW4YAyACKAQSEAoI", + "cmVsaWFibGUYBCACKAgSHAoQZGVzdGluYXRpb25fc2lkcxgFIAMoCUICGAES", + "DQoFdG9waWMYBiABKAkSHgoWZGVzdGluYXRpb25faWRlbnRpdGllcxgHIAMo", + "CRIYChByZXF1ZXN0X2FzeW5jX2lkGAggASgEIicKE1B1Ymxpc2hEYXRhUmVz", + "cG9uc2USEAoIYXN5bmNfaWQYASACKAQiNgoTUHVibGlzaERhdGFDYWxsYmFj", + "axIQCghhc3luY19pZBgBIAIoBBINCgVlcnJvchgCIAEoCSLAAQobUHVibGlz", + "aFRyYW5zY3JpcHRpb25SZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hh", + "bmRsZRgBIAIoBBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgCIAIoCRIQCgh0", + "cmFja19pZBgDIAIoCRI1CghzZWdtZW50cxgEIAMoCzIjLmxpdmVraXQucHJv", + "dG8uVHJhbnNjcmlwdGlvblNlZ21lbnQSGAoQcmVxdWVzdF9hc3luY19pZBgF", + "IAEoBCIwChxQdWJsaXNoVHJhbnNjcmlwdGlvblJlc3BvbnNlEhAKCGFzeW5j", + "X2lkGAEgAigEIj8KHFB1Ymxpc2hUcmFuc2NyaXB0aW9uQ2FsbGJhY2sSEAoI", + "YXN5bmNfaWQYASACKAQSDQoFZXJyb3IYAiABKAkikAEKFVB1Ymxpc2hTaXBE", + "dG1mUmVxdWVzdBIgChhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUYASACKAQS", + "DAoEY29kZRgCIAIoDRINCgVkaWdpdBgDIAIoCRIeChZkZXN0aW5hdGlvbl9p", + "ZGVudGl0aWVzGAQgAygJEhgKEHJlcXVlc3RfYXN5bmNfaWQYBSABKAQiKgoW", + "UHVibGlzaFNpcER0bWZSZXNwb25zZRIQCghhc3luY19pZBgBIAIoBCI5ChZQ", + "dWJsaXNoU2lwRHRtZkNhbGxiYWNrEhAKCGFzeW5jX2lkGAEgAigEEg0KBWVy", + "cm9yGAIgASgJImcKF1NldExvY2FsTWV0YWRhdGFSZXF1ZXN0EiAKGGxvY2Fs", + "X3BhcnRpY2lwYW50X2hhbmRsZRgBIAIoBBIQCghtZXRhZGF0YRgCIAIoCRIY", + "ChByZXF1ZXN0X2FzeW5jX2lkGAMgASgEIiwKGFNldExvY2FsTWV0YWRhdGFS", + "ZXNwb25zZRIQCghhc3luY19pZBgBIAIoBCI7ChhTZXRMb2NhbE1ldGFkYXRh", + "Q2FsbGJhY2sSEAoIYXN5bmNfaWQYASACKAQSDQoFZXJyb3IYAiABKAkingEK", + "FlNlbmRDaGF0TWVzc2FnZVJlcXVlc3QSIAoYbG9jYWxfcGFydGljaXBhbnRf", + "aGFuZGxlGAEgAigEEg8KB21lc3NhZ2UYAiACKAkSHgoWZGVzdGluYXRpb25f", + "aWRlbnRpdGllcxgDIAMoCRIXCg9zZW5kZXJfaWRlbnRpdHkYBCABKAkSGAoQ", + "cmVxdWVzdF9hc3luY19pZBgFIAEoBCLWAQoWRWRpdENoYXRNZXNzYWdlUmVx", + "dWVzdBIgChhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUYASACKAQSEQoJZWRp", + "dF90ZXh0GAIgAigJEjQKEG9yaWdpbmFsX21lc3NhZ2UYAyACKAsyGi5saXZl", + "a2l0LnByb3RvLkNoYXRNZXNzYWdlEh4KFmRlc3RpbmF0aW9uX2lkZW50aXRp", + "ZXMYBCADKAkSFwoPc2VuZGVyX2lkZW50aXR5GAUgASgJEhgKEHJlcXVlc3Rf", + "YXN5bmNfaWQYBiABKAQiKwoXU2VuZENoYXRNZXNzYWdlUmVzcG9uc2USEAoI", + "YXN5bmNfaWQYASACKAQiewoXU2VuZENoYXRNZXNzYWdlQ2FsbGJhY2sSEAoI", + "YXN5bmNfaWQYASACKAQSDwoFZXJyb3IYAiABKAlIABIyCgxjaGF0X21lc3Nh", + "Z2UYAyABKAsyGi5saXZla2l0LnByb3RvLkNoYXRNZXNzYWdlSABCCQoHbWVz", + "c2FnZSKLAQoZU2V0TG9jYWxBdHRyaWJ1dGVzUmVxdWVzdBIgChhsb2NhbF9w", + "YXJ0aWNpcGFudF9oYW5kbGUYASACKAQSMgoKYXR0cmlidXRlcxgCIAMoCzIe", + "LmxpdmVraXQucHJvdG8uQXR0cmlidXRlc0VudHJ5EhgKEHJlcXVlc3RfYXN5", + "bmNfaWQYAyABKAQiLQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAIoCRIN", + "CgV2YWx1ZRgCIAIoCSIuChpTZXRMb2NhbEF0dHJpYnV0ZXNSZXNwb25zZRIQ", + "Cghhc3luY19pZBgBIAIoBCI9ChpTZXRMb2NhbEF0dHJpYnV0ZXNDYWxsYmFj", + "axIQCghhc3luY19pZBgBIAIoBBINCgVlcnJvchgCIAEoCSJfChNTZXRMb2Nh", + "bE5hbWVSZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hhbmRsZRgBIAIo", + "BBIMCgRuYW1lGAIgAigJEhgKEHJlcXVlc3RfYXN5bmNfaWQYAyABKAQiKAoU", + "U2V0TG9jYWxOYW1lUmVzcG9uc2USEAoIYXN5bmNfaWQYASACKAQiNwoUU2V0", + "TG9jYWxOYW1lQ2FsbGJhY2sSEAoIYXN5bmNfaWQYASACKAQSDQoFZXJyb3IY", + "AiABKAkiRQoUU2V0U3Vic2NyaWJlZFJlcXVlc3QSEQoJc3Vic2NyaWJlGAEg", + "AigIEhoKEnB1YmxpY2F0aW9uX2hhbmRsZRgCIAIoBCIXChVTZXRTdWJzY3Jp", + "YmVkUmVzcG9uc2UiRwoWR2V0U2Vzc2lvblN0YXRzUmVxdWVzdBITCgtyb29t", + "X2hhbmRsZRgBIAIoBBIYChByZXF1ZXN0X2FzeW5jX2lkGAIgASgEIisKF0dl", + "dFNlc3Npb25TdGF0c1Jlc3BvbnNlEhAKCGFzeW5jX2lkGAEgAigEIvcBChdH", + "ZXRTZXNzaW9uU3RhdHNDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBBIPCgVl", + "cnJvchgCIAEoCUgAEj8KBnJlc3VsdBgDIAEoCzItLmxpdmVraXQucHJvdG8u", + "R2V0U2Vzc2lvblN0YXRzQ2FsbGJhY2suUmVzdWx0SAAabQoGUmVzdWx0EjAK", + "D3B1Ymxpc2hlcl9zdGF0cxgBIAMoCzIXLmxpdmVraXQucHJvdG8uUnRjU3Rh", + "dHMSMQoQc3Vic2NyaWJlcl9zdGF0cxgCIAMoCzIXLmxpdmVraXQucHJvdG8u", + "UnRjU3RhdHNCCQoHbWVzc2FnZSI7Cg1WaWRlb0VuY29kaW5nEhMKC21heF9i", + "aXRyYXRlGAEgAigEEhUKDW1heF9mcmFtZXJhdGUYAiACKAEiJAoNQXVkaW9F", + "bmNvZGluZxITCgttYXhfYml0cmF0ZRgBIAIoBCK1AgoTVHJhY2tQdWJsaXNo", + "T3B0aW9ucxI0Cg52aWRlb19lbmNvZGluZxgBIAEoCzIcLmxpdmVraXQucHJv", + "dG8uVmlkZW9FbmNvZGluZxI0Cg5hdWRpb19lbmNvZGluZxgCIAEoCzIcLmxp", + "dmVraXQucHJvdG8uQXVkaW9FbmNvZGluZxIuCgt2aWRlb19jb2RlYxgDIAEo", + "DjIZLmxpdmVraXQucHJvdG8uVmlkZW9Db2RlYxILCgNkdHgYBCABKAgSCwoD", + "cmVkGAUgASgIEhEKCXNpbXVsY2FzdBgGIAEoCBIqCgZzb3VyY2UYByABKA4y", + "Gi5saXZla2l0LnByb3RvLlRyYWNrU291cmNlEg4KBnN0cmVhbRgIIAEoCRIZ", + "ChFwcmVjb25uZWN0X2J1ZmZlchgJIAEoCCI9CglJY2VTZXJ2ZXISDAoEdXJs", + "cxgBIAMoCRIQCgh1c2VybmFtZRgCIAEoCRIQCghwYXNzd29yZBgDIAEoCSLE", + "AQoJUnRjQ29uZmlnEjsKEmljZV90cmFuc3BvcnRfdHlwZRgBIAEoDjIfLmxp", + "dmVraXQucHJvdG8uSWNlVHJhbnNwb3J0VHlwZRJLChpjb250aW51YWxfZ2F0", + "aGVyaW5nX3BvbGljeRgCIAEoDjInLmxpdmVraXQucHJvdG8uQ29udGludWFs", + "R2F0aGVyaW5nUG9saWN5Ei0KC2ljZV9zZXJ2ZXJzGAMgAygLMhgubGl2ZWtp", + "dC5wcm90by5JY2VTZXJ2ZXIirgIKC1Jvb21PcHRpb25zEhYKDmF1dG9fc3Vi", + "c2NyaWJlGAEgASgIEhcKD2FkYXB0aXZlX3N0cmVhbRgCIAEoCBIQCghkeW5h", + "Y2FzdBgDIAEoCBIsCgRlMmVlGAQgASgLMhoubGl2ZWtpdC5wcm90by5FMmVl", + "T3B0aW9uc0ICGAESLAoKcnRjX2NvbmZpZxgFIAEoCzIYLmxpdmVraXQucHJv", + "dG8uUnRjQ29uZmlnEhQKDGpvaW5fcmV0cmllcxgGIAEoDRIuCgplbmNyeXB0", + "aW9uGAcgASgLMhoubGl2ZWtpdC5wcm90by5FMmVlT3B0aW9ucxIeChZzaW5n", + "bGVfcGVlcl9jb25uZWN0aW9uGAggASgIEhoKEmNvbm5lY3RfdGltZW91dF9t", + "cxgJIAEoBCJ3ChRUcmFuc2NyaXB0aW9uU2VnbWVudBIKCgJpZBgBIAIoCRIM", + "CgR0ZXh0GAIgAigJEhIKCnN0YXJ0X3RpbWUYAyACKAQSEAoIZW5kX3RpbWUY", + "BCACKAQSDQoFZmluYWwYBSACKAgSEAoIbGFuZ3VhZ2UYBiACKAkiMAoKQnVm", + "ZmVySW5mbxIQCghkYXRhX3B0chgBIAIoBBIQCghkYXRhX2xlbhgCIAIoBCJl", + "CgtPd25lZEJ1ZmZlchItCgZoYW5kbGUYASACKAsyHS5saXZla2l0LnByb3Rv", + "LkZmaU93bmVkSGFuZGxlEicKBGRhdGEYAiACKAsyGS5saXZla2l0LnByb3Rv", + "LkJ1ZmZlckluZm8ixRYKCVJvb21FdmVudBITCgtyb29tX2hhbmRsZRgBIAIo", + "BBJEChVwYXJ0aWNpcGFudF9jb25uZWN0ZWQYAiABKAsyIy5saXZla2l0LnBy", + "b3RvLlBhcnRpY2lwYW50Q29ubmVjdGVkSAASSgoYcGFydGljaXBhbnRfZGlz", + "Y29ubmVjdGVkGAMgASgLMiYubGl2ZWtpdC5wcm90by5QYXJ0aWNpcGFudERp", + "c2Nvbm5lY3RlZEgAEkMKFWxvY2FsX3RyYWNrX3B1Ymxpc2hlZBgEIAEoCzIi", + "LmxpdmVraXQucHJvdG8uTG9jYWxUcmFja1B1Ymxpc2hlZEgAEkcKF2xvY2Fs", + "X3RyYWNrX3VucHVibGlzaGVkGAUgASgLMiQubGl2ZWtpdC5wcm90by5Mb2Nh", + "bFRyYWNrVW5wdWJsaXNoZWRIABJFChZsb2NhbF90cmFja19zdWJzY3JpYmVk", + "GAYgASgLMiMubGl2ZWtpdC5wcm90by5Mb2NhbFRyYWNrU3Vic2NyaWJlZEgA", + "EjgKD3RyYWNrX3B1Ymxpc2hlZBgHIAEoCzIdLmxpdmVraXQucHJvdG8uVHJh", + "Y2tQdWJsaXNoZWRIABI8ChF0cmFja191bnB1Ymxpc2hlZBgIIAEoCzIfLmxp", + "dmVraXQucHJvdG8uVHJhY2tVbnB1Ymxpc2hlZEgAEjoKEHRyYWNrX3N1YnNj", + "cmliZWQYCSABKAsyHi5saXZla2l0LnByb3RvLlRyYWNrU3Vic2NyaWJlZEgA", + "Ej4KEnRyYWNrX3Vuc3Vic2NyaWJlZBgKIAEoCzIgLmxpdmVraXQucHJvdG8u", + "VHJhY2tVbnN1YnNjcmliZWRIABJLChl0cmFja19zdWJzY3JpcHRpb25fZmFp", + "bGVkGAsgASgLMiYubGl2ZWtpdC5wcm90by5UcmFja1N1YnNjcmlwdGlvbkZh", + "aWxlZEgAEjAKC3RyYWNrX211dGVkGAwgASgLMhkubGl2ZWtpdC5wcm90by5U", + "cmFja011dGVkSAASNAoNdHJhY2tfdW5tdXRlZBgNIAEoCzIbLmxpdmVraXQu", + "cHJvdG8uVHJhY2tVbm11dGVkSAASRwoXYWN0aXZlX3NwZWFrZXJzX2NoYW5n", + "ZWQYDiABKAsyJC5saXZla2l0LnByb3RvLkFjdGl2ZVNwZWFrZXJzQ2hhbmdl", + "ZEgAEkMKFXJvb21fbWV0YWRhdGFfY2hhbmdlZBgPIAEoCzIiLmxpdmVraXQu", + "cHJvdG8uUm9vbU1ldGFkYXRhQ2hhbmdlZEgAEjkKEHJvb21fc2lkX2NoYW5n", + "ZWQYECABKAsyHS5saXZla2l0LnByb3RvLlJvb21TaWRDaGFuZ2VkSAASUQoc", + "cGFydGljaXBhbnRfbWV0YWRhdGFfY2hhbmdlZBgRIAEoCzIpLmxpdmVraXQu", + "cHJvdG8uUGFydGljaXBhbnRNZXRhZGF0YUNoYW5nZWRIABJJChhwYXJ0aWNp", + "cGFudF9uYW1lX2NoYW5nZWQYEiABKAsyJS5saXZla2l0LnByb3RvLlBhcnRp", + "Y2lwYW50TmFtZUNoYW5nZWRIABJVCh5wYXJ0aWNpcGFudF9hdHRyaWJ1dGVz", + "X2NoYW5nZWQYEyABKAsyKy5saXZla2l0LnByb3RvLlBhcnRpY2lwYW50QXR0", + "cmlidXRlc0NoYW5nZWRIABJNChpjb25uZWN0aW9uX3F1YWxpdHlfY2hhbmdl", + "ZBgUIAEoCzInLmxpdmVraXQucHJvdG8uQ29ubmVjdGlvblF1YWxpdHlDaGFu", + "Z2VkSAASSQoYY29ubmVjdGlvbl9zdGF0ZV9jaGFuZ2VkGBUgASgLMiUubGl2", + "ZWtpdC5wcm90by5Db25uZWN0aW9uU3RhdGVDaGFuZ2VkSAASMwoMZGlzY29u", + "bmVjdGVkGBYgASgLMhsubGl2ZWtpdC5wcm90by5EaXNjb25uZWN0ZWRIABIz", + "CgxyZWNvbm5lY3RpbmcYFyABKAsyGy5saXZla2l0LnByb3RvLlJlY29ubmVj", + "dGluZ0gAEjEKC3JlY29ubmVjdGVkGBggASgLMhoubGl2ZWtpdC5wcm90by5S", + "ZWNvbm5lY3RlZEgAEj0KEmUyZWVfc3RhdGVfY2hhbmdlZBgZIAEoCzIfLmxp", + "dmVraXQucHJvdG8uRTJlZVN0YXRlQ2hhbmdlZEgAEiUKA2VvcxgaIAEoCzIW", + "LmxpdmVraXQucHJvdG8uUm9vbUVPU0gAEkEKFGRhdGFfcGFja2V0X3JlY2Vp", + "dmVkGBsgASgLMiEubGl2ZWtpdC5wcm90by5EYXRhUGFja2V0UmVjZWl2ZWRI", + "ABJGChZ0cmFuc2NyaXB0aW9uX3JlY2VpdmVkGBwgASgLMiQubGl2ZWtpdC5w", + "cm90by5UcmFuc2NyaXB0aW9uUmVjZWl2ZWRIABI6CgxjaGF0X21lc3NhZ2UY", + "HSABKAsyIi5saXZla2l0LnByb3RvLkNoYXRNZXNzYWdlUmVjZWl2ZWRIABJJ", + "ChZzdHJlYW1faGVhZGVyX3JlY2VpdmVkGB4gASgLMicubGl2ZWtpdC5wcm90", + "by5EYXRhU3RyZWFtSGVhZGVyUmVjZWl2ZWRIABJHChVzdHJlYW1fY2h1bmtf", + "cmVjZWl2ZWQYHyABKAsyJi5saXZla2l0LnByb3RvLkRhdGFTdHJlYW1DaHVu", + "a1JlY2VpdmVkSAASSwoXc3RyZWFtX3RyYWlsZXJfcmVjZWl2ZWQYICABKAsy", + "KC5saXZla2l0LnByb3RvLkRhdGFTdHJlYW1UcmFpbGVyUmVjZWl2ZWRIABJp", + "CiJkYXRhX2NoYW5uZWxfbG93X3RocmVzaG9sZF9jaGFuZ2VkGCEgASgLMjsu", + "bGl2ZWtpdC5wcm90by5EYXRhQ2hhbm5lbEJ1ZmZlcmVkQW1vdW50TG93VGhy", + "ZXNob2xkQ2hhbmdlZEgAEj0KEmJ5dGVfc3RyZWFtX29wZW5lZBgiIAEoCzIf", + "LmxpdmVraXQucHJvdG8uQnl0ZVN0cmVhbU9wZW5lZEgAEj0KEnRleHRfc3Ry", + "ZWFtX29wZW5lZBgjIAEoCzIfLmxpdmVraXQucHJvdG8uVGV4dFN0cmVhbU9w", + "ZW5lZEgAEi8KDHJvb21fdXBkYXRlZBgkIAEoCzIXLmxpdmVraXQucHJvdG8u", + "Um9vbUluZm9IABIoCgVtb3ZlZBglIAEoCzIXLmxpdmVraXQucHJvdG8uUm9v", + "bUluZm9IABJCChRwYXJ0aWNpcGFudHNfdXBkYXRlZBgmIAEoCzIiLmxpdmVr", + "aXQucHJvdG8uUGFydGljaXBhbnRzVXBkYXRlZEgAEmIKJXBhcnRpY2lwYW50", + "X2VuY3J5cHRpb25fc3RhdHVzX2NoYW5nZWQYJyABKAsyMS5saXZla2l0LnBy", + "b3RvLlBhcnRpY2lwYW50RW5jcnlwdGlvblN0YXR1c0NoYW5nZWRIABJVCh5w", + "YXJ0aWNpcGFudF9wZXJtaXNzaW9uX2NoYW5nZWQYKSABKAsyKy5saXZla2l0", + "LnByb3RvLlBhcnRpY2lwYW50UGVybWlzc2lvbkNoYW5nZWRIABI4Cg90b2tl", + "bl9yZWZyZXNoZWQYKCABKAsyHS5saXZla2l0LnByb3RvLlRva2VuUmVmcmVz", + "aGVkSAASQQoUZGF0YV90cmFja19wdWJsaXNoZWQYKiABKAsyIS5saXZla2l0", + "LnByb3RvLkRhdGFUcmFja1B1Ymxpc2hlZEgAEkUKFmRhdGFfdHJhY2tfdW5w", + "dWJsaXNoZWQYKyABKAsyIy5saXZla2l0LnByb3RvLkRhdGFUcmFja1VucHVi", + "bGlzaGVkSABCCQoHbWVzc2FnZSLJAgoIUm9vbUluZm8SCwoDc2lkGAEgASgJ", + "EgwKBG5hbWUYAiACKAkSEAoIbWV0YWRhdGEYAyACKAkSLgombG9zc3lfZGNf", + "YnVmZmVyZWRfYW1vdW50X2xvd190aHJlc2hvbGQYBCACKAQSMQopcmVsaWFi", + "bGVfZGNfYnVmZmVyZWRfYW1vdW50X2xvd190aHJlc2hvbGQYBSACKAQSFQoN", + "ZW1wdHlfdGltZW91dBgGIAIoDRIZChFkZXBhcnR1cmVfdGltZW91dBgHIAIo", + "DRIYChBtYXhfcGFydGljaXBhbnRzGAggAigNEhUKDWNyZWF0aW9uX3RpbWUY", + "CSACKAMSGAoQbnVtX3BhcnRpY2lwYW50cxgKIAIoDRIWCg5udW1fcHVibGlz", + "aGVycxgLIAIoDRIYChBhY3RpdmVfcmVjb3JkaW5nGAwgAigIImEKCU93bmVk", + "Um9vbRItCgZoYW5kbGUYASACKAsyHS5saXZla2l0LnByb3RvLkZmaU93bmVk", + "SGFuZGxlEiUKBGluZm8YAiACKAsyFy5saXZla2l0LnByb3RvLlJvb21JbmZv", + "IksKE1BhcnRpY2lwYW50c1VwZGF0ZWQSNAoMcGFydGljaXBhbnRzGAEgAygL", + "Mh4ubGl2ZWtpdC5wcm90by5QYXJ0aWNpcGFudEluZm8iRQoUUGFydGljaXBh", + "bnRDb25uZWN0ZWQSLQoEaW5mbxgBIAIoCzIfLmxpdmVraXQucHJvdG8uT3du", + "ZWRQYXJ0aWNpcGFudCJzChdQYXJ0aWNpcGFudERpc2Nvbm5lY3RlZBIcChRw", + "YXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRI6ChFkaXNjb25uZWN0X3JlYXNv", + "bhgCIAIoDjIfLmxpdmVraXQucHJvdG8uRGlzY29ubmVjdFJlYXNvbiIoChNM", + "b2NhbFRyYWNrUHVibGlzaGVkEhEKCXRyYWNrX3NpZBgBIAIoCSIwChVMb2Nh", + "bFRyYWNrVW5wdWJsaXNoZWQSFwoPcHVibGljYXRpb25fc2lkGAEgAigJIikK", + "FExvY2FsVHJhY2tTdWJzY3JpYmVkEhEKCXRyYWNrX3NpZBgCIAIoCSJpCg5U", + "cmFja1B1Ymxpc2hlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRI5", + "CgtwdWJsaWNhdGlvbhgCIAIoCzIkLmxpdmVraXQucHJvdG8uT3duZWRUcmFj", + "a1B1YmxpY2F0aW9uIkkKEFRyYWNrVW5wdWJsaXNoZWQSHAoUcGFydGljaXBh", + "bnRfaWRlbnRpdHkYASACKAkSFwoPcHVibGljYXRpb25fc2lkGAIgAigJIlkK", + "D1RyYWNrU3Vic2NyaWJlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIo", + "CRIoCgV0cmFjaxgCIAIoCzIZLmxpdmVraXQucHJvdG8uT3duZWRUcmFjayJE", + "ChFUcmFja1Vuc3Vic2NyaWJlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgB", + "IAIoCRIRCgl0cmFja19zaWQYAiACKAkiWQoXVHJhY2tTdWJzY3JpcHRpb25G", + "YWlsZWQSHAoUcGFydGljaXBhbnRfaWRlbnRpdHkYASACKAkSEQoJdHJhY2tf", + "c2lkGAIgAigJEg0KBWVycm9yGAMgAigJIj0KClRyYWNrTXV0ZWQSHAoUcGFy", + "dGljaXBhbnRfaWRlbnRpdHkYASACKAkSEQoJdHJhY2tfc2lkGAIgAigJIj8K", + "DFRyYWNrVW5tdXRlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRIR", + "Cgl0cmFja19zaWQYAiACKAkiXwoQRTJlZVN0YXRlQ2hhbmdlZBIcChRwYXJ0", + "aWNpcGFudF9pZGVudGl0eRgBIAIoCRItCgVzdGF0ZRgCIAIoDjIeLmxpdmVr", + "aXQucHJvdG8uRW5jcnlwdGlvblN0YXRlIjcKFUFjdGl2ZVNwZWFrZXJzQ2hh", + "bmdlZBIeChZwYXJ0aWNpcGFudF9pZGVudGl0aWVzGAEgAygJIicKE1Jvb21N", + "ZXRhZGF0YUNoYW5nZWQSEAoIbWV0YWRhdGEYASACKAkiHQoOUm9vbVNpZENo", + "YW5nZWQSCwoDc2lkGAEgAigJIkwKGlBhcnRpY2lwYW50TWV0YWRhdGFDaGFu", + "Z2VkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAEgAigJEhAKCG1ldGFkYXRh", + "GAIgAigJIqwBChxQYXJ0aWNpcGFudEF0dHJpYnV0ZXNDaGFuZ2VkEhwKFHBh", + "cnRpY2lwYW50X2lkZW50aXR5GAEgAigJEjIKCmF0dHJpYnV0ZXMYAiADKAsy", + "Hi5saXZla2l0LnByb3RvLkF0dHJpYnV0ZXNFbnRyeRI6ChJjaGFuZ2VkX2F0", + "dHJpYnV0ZXMYAyADKAsyHi5saXZla2l0LnByb3RvLkF0dHJpYnV0ZXNFbnRy", + "eSJYCiJQYXJ0aWNpcGFudEVuY3J5cHRpb25TdGF0dXNDaGFuZ2VkEhwKFHBh", + "cnRpY2lwYW50X2lkZW50aXR5GAEgAigJEhQKDGlzX2VuY3J5cHRlZBgCIAIo", + "CCJEChZQYXJ0aWNpcGFudE5hbWVDaGFuZ2VkEhwKFHBhcnRpY2lwYW50X2lk", + "ZW50aXR5GAEgAigJEgwKBG5hbWUYAiACKAkidgocUGFydGljaXBhbnRQZXJt", + "aXNzaW9uQ2hhbmdlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRI4", + "CgpwZXJtaXNzaW9uGAIgASgLMiQubGl2ZWtpdC5wcm90by5QYXJ0aWNpcGFu", + "dFBlcm1pc3Npb24iawoYQ29ubmVjdGlvblF1YWxpdHlDaGFuZ2VkEhwKFHBh", + "cnRpY2lwYW50X2lkZW50aXR5GAEgAigJEjEKB3F1YWxpdHkYAiACKA4yIC5s", + "aXZla2l0LnByb3RvLkNvbm5lY3Rpb25RdWFsaXR5IkUKClVzZXJQYWNrZXQS", + "KAoEZGF0YRgBIAIoCzIaLmxpdmVraXQucHJvdG8uT3duZWRCdWZmZXISDQoF", + "dG9waWMYAiABKAkieQoLQ2hhdE1lc3NhZ2USCgoCaWQYASACKAkSEQoJdGlt", + "ZXN0YW1wGAIgAigDEg8KB21lc3NhZ2UYAyACKAkSFgoOZWRpdF90aW1lc3Rh", + "bXAYBCABKAMSDwoHZGVsZXRlZBgFIAEoCBIRCglnZW5lcmF0ZWQYBiABKAgi", + "YAoTQ2hhdE1lc3NhZ2VSZWNlaXZlZBIrCgdtZXNzYWdlGAEgAigLMhoubGl2", + "ZWtpdC5wcm90by5DaGF0TWVzc2FnZRIcChRwYXJ0aWNpcGFudF9pZGVudGl0", + "eRgCIAIoCSImCgdTaXBEVE1GEgwKBGNvZGUYASACKA0SDQoFZGlnaXQYAiAB", + "KAkivwEKEkRhdGFQYWNrZXRSZWNlaXZlZBIrCgRraW5kGAEgAigOMh0ubGl2", + "ZWtpdC5wcm90by5EYXRhUGFja2V0S2luZBIcChRwYXJ0aWNpcGFudF9pZGVu", + "dGl0eRgCIAIoCRIpCgR1c2VyGAQgASgLMhkubGl2ZWtpdC5wcm90by5Vc2Vy", + "UGFja2V0SAASKgoIc2lwX2R0bWYYBSABKAsyFi5saXZla2l0LnByb3RvLlNp", + "cERUTUZIAEIHCgV2YWx1ZSJ/ChVUcmFuc2NyaXB0aW9uUmVjZWl2ZWQSHAoU", + "cGFydGljaXBhbnRfaWRlbnRpdHkYASABKAkSEQoJdHJhY2tfc2lkGAIgASgJ", + "EjUKCHNlZ21lbnRzGAMgAygLMiMubGl2ZWtpdC5wcm90by5UcmFuc2NyaXB0", + "aW9uU2VnbWVudCJHChZDb25uZWN0aW9uU3RhdGVDaGFuZ2VkEi0KBXN0YXRl", + "GAEgAigOMh4ubGl2ZWtpdC5wcm90by5Db25uZWN0aW9uU3RhdGUiCwoJQ29u", + "bmVjdGVkIj8KDERpc2Nvbm5lY3RlZBIvCgZyZWFzb24YASACKA4yHy5saXZl", + "a2l0LnByb3RvLkRpc2Nvbm5lY3RSZWFzb24iDgoMUmVjb25uZWN0aW5nIg0K", + "C1JlY29ubmVjdGVkIh8KDlRva2VuUmVmcmVzaGVkEg0KBXRva2VuGAEgAigJ", + "IgkKB1Jvb21FT1MijgcKCkRhdGFTdHJlYW0aqgEKClRleHRIZWFkZXISPwoO", + "b3BlcmF0aW9uX3R5cGUYASACKA4yJy5saXZla2l0LnByb3RvLkRhdGFTdHJl", + "YW0uT3BlcmF0aW9uVHlwZRIPCgd2ZXJzaW9uGAIgASgFEhoKEnJlcGx5X3Rv", + "X3N0cmVhbV9pZBgDIAEoCRIbChNhdHRhY2hlZF9zdHJlYW1faWRzGAQgAygJ", + "EhEKCWdlbmVyYXRlZBgFIAEoCBoaCgpCeXRlSGVhZGVyEgwKBG5hbWUYASAC", + "KAka6wIKBkhlYWRlchIRCglzdHJlYW1faWQYASACKAkSEQoJdGltZXN0YW1w", + "GAIgAigDEhEKCW1pbWVfdHlwZRgDIAIoCRINCgV0b3BpYxgEIAIoCRIUCgx0", + "b3RhbF9sZW5ndGgYBSABKAQSRAoKYXR0cmlidXRlcxgGIAMoCzIwLmxpdmVr", + "aXQucHJvdG8uRGF0YVN0cmVhbS5IZWFkZXIuQXR0cmlidXRlc0VudHJ5EjsK", + "C3RleHRfaGVhZGVyGAcgASgLMiQubGl2ZWtpdC5wcm90by5EYXRhU3RyZWFt", + "LlRleHRIZWFkZXJIABI7CgtieXRlX2hlYWRlchgIIAEoCzIkLmxpdmVraXQu", + "cHJvdG8uRGF0YVN0cmVhbS5CeXRlSGVhZGVySAAaMQoPQXR0cmlidXRlc0Vu", + "dHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCEAoOY29udGVu", + "dF9oZWFkZXIaXQoFQ2h1bmsSEQoJc3RyZWFtX2lkGAEgAigJEhMKC2NodW5r", + "X2luZGV4GAIgAigEEg8KB2NvbnRlbnQYAyACKAwSDwoHdmVyc2lvbhgEIAEo", + "BRIKCgJpdhgFIAEoDBqmAQoHVHJhaWxlchIRCglzdHJlYW1faWQYASACKAkS", + "DgoGcmVhc29uGAIgAigJEkUKCmF0dHJpYnV0ZXMYAyADKAsyMS5saXZla2l0", + "LnByb3RvLkRhdGFTdHJlYW0uVHJhaWxlci5BdHRyaWJ1dGVzRW50cnkaMQoP", + "QXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToC", + "OAEiQQoNT3BlcmF0aW9uVHlwZRIKCgZDUkVBVEUQABIKCgZVUERBVEUQARIK", + "CgZERUxFVEUQAhIMCghSRUFDVElPThADImoKGERhdGFTdHJlYW1IZWFkZXJS", + "ZWNlaXZlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRIwCgZoZWFk", + "ZXIYAiACKAsyIC5saXZla2l0LnByb3RvLkRhdGFTdHJlYW0uSGVhZGVyImcK", + "F0RhdGFTdHJlYW1DaHVua1JlY2VpdmVkEhwKFHBhcnRpY2lwYW50X2lkZW50", + "aXR5GAEgAigJEi4KBWNodW5rGAIgAigLMh8ubGl2ZWtpdC5wcm90by5EYXRh", + "U3RyZWFtLkNodW5rIm0KGURhdGFTdHJlYW1UcmFpbGVyUmVjZWl2ZWQSHAoU", + "cGFydGljaXBhbnRfaWRlbnRpdHkYASACKAkSMgoHdHJhaWxlchgCIAIoCzIh", + "LmxpdmVraXQucHJvdG8uRGF0YVN0cmVhbS5UcmFpbGVyIsABChdTZW5kU3Ry", + "ZWFtSGVhZGVyUmVxdWVzdBIgChhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUY", + "ASACKAQSMAoGaGVhZGVyGAIgAigLMiAubGl2ZWtpdC5wcm90by5EYXRhU3Ry", + "ZWFtLkhlYWRlchIeChZkZXN0aW5hdGlvbl9pZGVudGl0aWVzGAMgAygJEhcK", + "D3NlbmRlcl9pZGVudGl0eRgEIAIoCRIYChByZXF1ZXN0X2FzeW5jX2lkGAUg", + "ASgEIr0BChZTZW5kU3RyZWFtQ2h1bmtSZXF1ZXN0EiAKGGxvY2FsX3BhcnRp", + "Y2lwYW50X2hhbmRsZRgBIAIoBBIuCgVjaHVuaxgCIAIoCzIfLmxpdmVraXQu", + "cHJvdG8uRGF0YVN0cmVhbS5DaHVuaxIeChZkZXN0aW5hdGlvbl9pZGVudGl0", + "aWVzGAMgAygJEhcKD3NlbmRlcl9pZGVudGl0eRgEIAIoCRIYChByZXF1ZXN0", + "X2FzeW5jX2lkGAUgASgEIsMBChhTZW5kU3RyZWFtVHJhaWxlclJlcXVlc3QS", + "IAoYbG9jYWxfcGFydGljaXBhbnRfaGFuZGxlGAEgAigEEjIKB3RyYWlsZXIY", + "AiACKAsyIS5saXZla2l0LnByb3RvLkRhdGFTdHJlYW0uVHJhaWxlchIeChZk", + "ZXN0aW5hdGlvbl9pZGVudGl0aWVzGAMgAygJEhcKD3NlbmRlcl9pZGVudGl0", + "eRgEIAIoCRIYChByZXF1ZXN0X2FzeW5jX2lkGAUgASgEIiwKGFNlbmRTdHJl", + "YW1IZWFkZXJSZXNwb25zZRIQCghhc3luY19pZBgBIAIoBCIrChdTZW5kU3Ry", + "ZWFtQ2h1bmtSZXNwb25zZRIQCghhc3luY19pZBgBIAIoBCItChlTZW5kU3Ry", + "ZWFtVHJhaWxlclJlc3BvbnNlEhAKCGFzeW5jX2lkGAEgAigEIjsKGFNlbmRT", + "dHJlYW1IZWFkZXJDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBBINCgVlcnJv", + "chgCIAEoCSI6ChdTZW5kU3RyZWFtQ2h1bmtDYWxsYmFjaxIQCghhc3luY19p", + "ZBgBIAIoBBINCgVlcnJvchgCIAEoCSI8ChlTZW5kU3RyZWFtVHJhaWxlckNh", + "bGxiYWNrEhAKCGFzeW5jX2lkGAEgAigEEg0KBWVycm9yGAIgASgJIpMBCi9T", + "ZXREYXRhQ2hhbm5lbEJ1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkUmVxdWVz", + "dBIgChhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUYASACKAQSEQoJdGhyZXNo", + "b2xkGAIgAigEEisKBGtpbmQYAyACKA4yHS5saXZla2l0LnByb3RvLkRhdGFQ", + "YWNrZXRLaW5kIjIKMFNldERhdGFDaGFubmVsQnVmZmVyZWRBbW91bnRMb3dU", + "aHJlc2hvbGRSZXNwb25zZSJuCixEYXRhQ2hhbm5lbEJ1ZmZlcmVkQW1vdW50", + "TG93VGhyZXNob2xkQ2hhbmdlZBIrCgRraW5kGAEgAigOMh0ubGl2ZWtpdC5w", + "cm90by5EYXRhUGFja2V0S2luZBIRCgl0aHJlc2hvbGQYAiACKAQiZgoQQnl0", + "ZVN0cmVhbU9wZW5lZBI0CgZyZWFkZXIYASACKAsyJC5saXZla2l0LnByb3Rv", + "Lk93bmVkQnl0ZVN0cmVhbVJlYWRlchIcChRwYXJ0aWNpcGFudF9pZGVudGl0", + "eRgCIAIoCSJmChBUZXh0U3RyZWFtT3BlbmVkEjQKBnJlYWRlchgBIAIoCzIk", + "LmxpdmVraXQucHJvdG8uT3duZWRUZXh0U3RyZWFtUmVhZGVyEhwKFHBhcnRp", + "Y2lwYW50X2lkZW50aXR5GAIgAigJIkgKEkRhdGFUcmFja1B1Ymxpc2hlZBIy", + "CgV0cmFjaxgBIAIoCzIjLmxpdmVraXQucHJvdG8uT3duZWRSZW1vdGVEYXRh", + "VHJhY2siIwoURGF0YVRyYWNrVW5wdWJsaXNoZWQSCwoDc2lkGAEgAigJKlAK", + "EEljZVRyYW5zcG9ydFR5cGUSEwoPVFJBTlNQT1JUX1JFTEFZEAASFAoQVFJB", + "TlNQT1JUX05PSE9TVBABEhEKDVRSQU5TUE9SVF9BTEwQAipDChhDb250aW51", + "YWxHYXRoZXJpbmdQb2xpY3kSDwoLR0FUSEVSX09OQ0UQABIWChJHQVRIRVJf", + "Q09OVElOVUFMTFkQASpgChFDb25uZWN0aW9uUXVhbGl0eRIQCgxRVUFMSVRZ", + "X1BPT1IQABIQCgxRVUFMSVRZX0dPT0QQARIVChFRVUFMSVRZX0VYQ0VMTEVO", + "VBACEhAKDFFVQUxJVFlfTE9TVBADKlMKD0Nvbm5lY3Rpb25TdGF0ZRIVChFD", + "T05OX0RJU0NPTk5FQ1RFRBAAEhIKDkNPTk5fQ09OTkVDVEVEEAESFQoRQ09O", + "Tl9SRUNPTk5FQ1RJTkcQAiozCg5EYXRhUGFja2V0S2luZBIOCgpLSU5EX0xP", + "U1NZEAASEQoNS0lORF9SRUxJQUJMRRABQhCqAg1MaXZlS2l0LlByb3Rv")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::LiveKit.Proto.E2EeReflection.Descriptor, global::LiveKit.Proto.HandleReflection.Descriptor, global::LiveKit.Proto.ParticipantReflection.Descriptor, global::LiveKit.Proto.TrackReflection.Descriptor, global::LiveKit.Proto.VideoFrameReflection.Descriptor, global::LiveKit.Proto.StatsReflection.Descriptor, global::LiveKit.Proto.DataStreamReflection.Descriptor, }, + new pbr::FileDescriptor[] { global::LiveKit.Proto.E2EeReflection.Descriptor, global::LiveKit.Proto.HandleReflection.Descriptor, global::LiveKit.Proto.ParticipantReflection.Descriptor, global::LiveKit.Proto.TrackReflection.Descriptor, global::LiveKit.Proto.VideoFrameReflection.Descriptor, global::LiveKit.Proto.StatsReflection.Descriptor, global::LiveKit.Proto.DataStreamReflection.Descriptor, global::LiveKit.Proto.DataTrackReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::LiveKit.Proto.IceTransportType), typeof(global::LiveKit.Proto.ContinualGatheringPolicy), typeof(global::LiveKit.Proto.ConnectionQuality), typeof(global::LiveKit.Proto.ConnectionState), typeof(global::LiveKit.Proto.DataPacketKind), }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.ConnectRequest), global::LiveKit.Proto.ConnectRequest.Parser, new[]{ "Url", "Token", "Options", "RequestAsyncId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.ConnectResponse), global::LiveKit.Proto.ConnectResponse.Parser, new[]{ "AsyncId" }, null, null, null, null), @@ -395,7 +401,7 @@ static RoomReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.TranscriptionSegment), global::LiveKit.Proto.TranscriptionSegment.Parser, new[]{ "Id", "Text", "StartTime", "EndTime", "Final", "Language" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.BufferInfo), global::LiveKit.Proto.BufferInfo.Parser, new[]{ "DataPtr", "DataLen" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedBuffer), global::LiveKit.Proto.OwnedBuffer.Parser, new[]{ "Handle", "Data" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.RoomEvent), global::LiveKit.Proto.RoomEvent.Parser, new[]{ "RoomHandle", "ParticipantConnected", "ParticipantDisconnected", "LocalTrackPublished", "LocalTrackUnpublished", "LocalTrackSubscribed", "TrackPublished", "TrackUnpublished", "TrackSubscribed", "TrackUnsubscribed", "TrackSubscriptionFailed", "TrackMuted", "TrackUnmuted", "ActiveSpeakersChanged", "RoomMetadataChanged", "RoomSidChanged", "ParticipantMetadataChanged", "ParticipantNameChanged", "ParticipantAttributesChanged", "ConnectionQualityChanged", "ConnectionStateChanged", "Disconnected", "Reconnecting", "Reconnected", "E2EeStateChanged", "Eos", "DataPacketReceived", "TranscriptionReceived", "ChatMessage", "StreamHeaderReceived", "StreamChunkReceived", "StreamTrailerReceived", "DataChannelLowThresholdChanged", "ByteStreamOpened", "TextStreamOpened", "RoomUpdated", "Moved", "ParticipantsUpdated", "ParticipantEncryptionStatusChanged", "ParticipantPermissionChanged", "TokenRefreshed" }, new[]{ "Message" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.RoomEvent), global::LiveKit.Proto.RoomEvent.Parser, new[]{ "RoomHandle", "ParticipantConnected", "ParticipantDisconnected", "LocalTrackPublished", "LocalTrackUnpublished", "LocalTrackSubscribed", "TrackPublished", "TrackUnpublished", "TrackSubscribed", "TrackUnsubscribed", "TrackSubscriptionFailed", "TrackMuted", "TrackUnmuted", "ActiveSpeakersChanged", "RoomMetadataChanged", "RoomSidChanged", "ParticipantMetadataChanged", "ParticipantNameChanged", "ParticipantAttributesChanged", "ConnectionQualityChanged", "ConnectionStateChanged", "Disconnected", "Reconnecting", "Reconnected", "E2EeStateChanged", "Eos", "DataPacketReceived", "TranscriptionReceived", "ChatMessage", "StreamHeaderReceived", "StreamChunkReceived", "StreamTrailerReceived", "DataChannelLowThresholdChanged", "ByteStreamOpened", "TextStreamOpened", "RoomUpdated", "Moved", "ParticipantsUpdated", "ParticipantEncryptionStatusChanged", "ParticipantPermissionChanged", "TokenRefreshed", "DataTrackPublished", "DataTrackUnpublished" }, new[]{ "Message" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.RoomInfo), global::LiveKit.Proto.RoomInfo.Parser, new[]{ "Sid", "Name", "Metadata", "LossyDcBufferedAmountLowThreshold", "ReliableDcBufferedAmountLowThreshold", "EmptyTimeout", "DepartureTimeout", "MaxParticipants", "CreationTime", "NumParticipants", "NumPublishers", "ActiveRecording" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedRoom), global::LiveKit.Proto.OwnedRoom.Parser, new[]{ "Handle", "Info" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.ParticipantsUpdated), global::LiveKit.Proto.ParticipantsUpdated.Parser, new[]{ "Participants" }, null, null, null, null), @@ -455,7 +461,9 @@ static RoomReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.SetDataChannelBufferedAmountLowThresholdResponse), global::LiveKit.Proto.SetDataChannelBufferedAmountLowThresholdResponse.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DataChannelBufferedAmountLowThresholdChanged), global::LiveKit.Proto.DataChannelBufferedAmountLowThresholdChanged.Parser, new[]{ "Kind", "Threshold" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.ByteStreamOpened), global::LiveKit.Proto.ByteStreamOpened.Parser, new[]{ "Reader", "ParticipantIdentity" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.TextStreamOpened), global::LiveKit.Proto.TextStreamOpened.Parser, new[]{ "Reader", "ParticipantIdentity" }, null, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.TextStreamOpened), global::LiveKit.Proto.TextStreamOpened.Parser, new[]{ "Reader", "ParticipantIdentity" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DataTrackPublished), global::LiveKit.Proto.DataTrackPublished.Parser, new[]{ "Track" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DataTrackUnpublished), global::LiveKit.Proto.DataTrackUnpublished.Parser, new[]{ "Sid" }, null, null, null, null) })); } #endregion @@ -16245,6 +16253,12 @@ public RoomEvent(RoomEvent other) : this() { case MessageOneofCase.TokenRefreshed: TokenRefreshed = other.TokenRefreshed.Clone(); break; + case MessageOneofCase.DataTrackPublished: + DataTrackPublished = other.DataTrackPublished.Clone(); + break; + case MessageOneofCase.DataTrackUnpublished: + DataTrackUnpublished = other.DataTrackUnpublished.Clone(); + break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -16784,6 +16798,30 @@ public void ClearRoomHandle() { } } + /// Field number for the "data_track_published" field. + public const int DataTrackPublishedFieldNumber = 42; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackPublished DataTrackPublished { + get { return messageCase_ == MessageOneofCase.DataTrackPublished ? (global::LiveKit.Proto.DataTrackPublished) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.DataTrackPublished; + } + } + + /// Field number for the "data_track_unpublished" field. + public const int DataTrackUnpublishedFieldNumber = 43; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DataTrackUnpublished DataTrackUnpublished { + get { return messageCase_ == MessageOneofCase.DataTrackUnpublished ? (global::LiveKit.Proto.DataTrackUnpublished) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.DataTrackUnpublished; + } + } + private object message_; /// Enum of possible cases for the "message" oneof. public enum MessageOneofCase { @@ -16828,6 +16866,8 @@ public enum MessageOneofCase { ParticipantEncryptionStatusChanged = 39, ParticipantPermissionChanged = 41, TokenRefreshed = 40, + DataTrackPublished = 42, + DataTrackUnpublished = 43, } private MessageOneofCase messageCase_ = MessageOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -16899,6 +16939,8 @@ public bool Equals(RoomEvent other) { if (!object.Equals(ParticipantEncryptionStatusChanged, other.ParticipantEncryptionStatusChanged)) return false; if (!object.Equals(ParticipantPermissionChanged, other.ParticipantPermissionChanged)) return false; if (!object.Equals(TokenRefreshed, other.TokenRefreshed)) return false; + if (!object.Equals(DataTrackPublished, other.DataTrackPublished)) return false; + if (!object.Equals(DataTrackUnpublished, other.DataTrackUnpublished)) return false; if (MessageCase != other.MessageCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -16948,6 +16990,8 @@ public override int GetHashCode() { if (messageCase_ == MessageOneofCase.ParticipantEncryptionStatusChanged) hash ^= ParticipantEncryptionStatusChanged.GetHashCode(); if (messageCase_ == MessageOneofCase.ParticipantPermissionChanged) hash ^= ParticipantPermissionChanged.GetHashCode(); if (messageCase_ == MessageOneofCase.TokenRefreshed) hash ^= TokenRefreshed.GetHashCode(); + if (messageCase_ == MessageOneofCase.DataTrackPublished) hash ^= DataTrackPublished.GetHashCode(); + if (messageCase_ == MessageOneofCase.DataTrackUnpublished) hash ^= DataTrackUnpublished.GetHashCode(); hash ^= (int) messageCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -17131,6 +17175,14 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(202, 2); output.WriteMessage(ParticipantPermissionChanged); } + if (messageCase_ == MessageOneofCase.DataTrackPublished) { + output.WriteRawTag(210, 2); + output.WriteMessage(DataTrackPublished); + } + if (messageCase_ == MessageOneofCase.DataTrackUnpublished) { + output.WriteRawTag(218, 2); + output.WriteMessage(DataTrackUnpublished); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -17305,6 +17357,14 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(202, 2); output.WriteMessage(ParticipantPermissionChanged); } + if (messageCase_ == MessageOneofCase.DataTrackPublished) { + output.WriteRawTag(210, 2); + output.WriteMessage(DataTrackPublished); + } + if (messageCase_ == MessageOneofCase.DataTrackUnpublished) { + output.WriteRawTag(218, 2); + output.WriteMessage(DataTrackUnpublished); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -17438,6 +17498,12 @@ public int CalculateSize() { if (messageCase_ == MessageOneofCase.TokenRefreshed) { size += 2 + pb::CodedOutputStream.ComputeMessageSize(TokenRefreshed); } + if (messageCase_ == MessageOneofCase.DataTrackPublished) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(DataTrackPublished); + } + if (messageCase_ == MessageOneofCase.DataTrackUnpublished) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(DataTrackUnpublished); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -17694,6 +17760,18 @@ public void MergeFrom(RoomEvent other) { } TokenRefreshed.MergeFrom(other.TokenRefreshed); break; + case MessageOneofCase.DataTrackPublished: + if (DataTrackPublished == null) { + DataTrackPublished = new global::LiveKit.Proto.DataTrackPublished(); + } + DataTrackPublished.MergeFrom(other.DataTrackPublished); + break; + case MessageOneofCase.DataTrackUnpublished: + if (DataTrackUnpublished == null) { + DataTrackUnpublished = new global::LiveKit.Proto.DataTrackUnpublished(); + } + DataTrackUnpublished.MergeFrom(other.DataTrackUnpublished); + break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); @@ -18079,6 +18157,24 @@ public void MergeFrom(pb::CodedInputStream input) { ParticipantPermissionChanged = subBuilder; break; } + case 338: { + global::LiveKit.Proto.DataTrackPublished subBuilder = new global::LiveKit.Proto.DataTrackPublished(); + if (messageCase_ == MessageOneofCase.DataTrackPublished) { + subBuilder.MergeFrom(DataTrackPublished); + } + input.ReadMessage(subBuilder); + DataTrackPublished = subBuilder; + break; + } + case 346: { + global::LiveKit.Proto.DataTrackUnpublished subBuilder = new global::LiveKit.Proto.DataTrackUnpublished(); + if (messageCase_ == MessageOneofCase.DataTrackUnpublished) { + subBuilder.MergeFrom(DataTrackUnpublished); + } + input.ReadMessage(subBuilder); + DataTrackUnpublished = subBuilder; + break; + } } } #endif @@ -18462,6 +18558,24 @@ public void MergeFrom(pb::CodedInputStream input) { ParticipantPermissionChanged = subBuilder; break; } + case 338: { + global::LiveKit.Proto.DataTrackPublished subBuilder = new global::LiveKit.Proto.DataTrackPublished(); + if (messageCase_ == MessageOneofCase.DataTrackPublished) { + subBuilder.MergeFrom(DataTrackPublished); + } + input.ReadMessage(subBuilder); + DataTrackPublished = subBuilder; + break; + } + case 346: { + global::LiveKit.Proto.DataTrackUnpublished subBuilder = new global::LiveKit.Proto.DataTrackUnpublished(); + if (messageCase_ == MessageOneofCase.DataTrackUnpublished) { + subBuilder.MergeFrom(DataTrackUnpublished); + } + input.ReadMessage(subBuilder); + DataTrackUnpublished = subBuilder; + break; + } } } } @@ -35166,6 +35280,434 @@ public void MergeFrom(pb::CodedInputStream input) { } + /// + /// A remote participant published a data track. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class DataTrackPublished : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DataTrackPublished()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[106]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackPublished() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackPublished(DataTrackPublished other) : this() { + track_ = other.track_ != null ? other.track_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackPublished Clone() { + return new DataTrackPublished(this); + } + + /// Field number for the "track" field. + public const int TrackFieldNumber = 1; + private global::LiveKit.Proto.OwnedRemoteDataTrack track_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.OwnedRemoteDataTrack Track { + get { return track_; } + set { + track_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DataTrackPublished); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DataTrackPublished other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Track, other.Track)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (track_ != null) hash ^= Track.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (track_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Track); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (track_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Track); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (track_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Track); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DataTrackPublished other) { + if (other == null) { + return; + } + if (other.track_ != null) { + if (track_ == null) { + Track = new global::LiveKit.Proto.OwnedRemoteDataTrack(); + } + Track.MergeFrom(other.Track); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + if (track_ == null) { + Track = new global::LiveKit.Proto.OwnedRemoteDataTrack(); + } + input.ReadMessage(Track); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + if (track_ == null) { + Track = new global::LiveKit.Proto.OwnedRemoteDataTrack(); + } + input.ReadMessage(Track); + break; + } + } + } + } + #endif + + } + + /// + /// A remote participant unpublished a data track. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class DataTrackUnpublished : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DataTrackUnpublished()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[107]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackUnpublished() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackUnpublished(DataTrackUnpublished other) : this() { + sid_ = other.sid_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DataTrackUnpublished Clone() { + return new DataTrackUnpublished(this); + } + + /// Field number for the "sid" field. + public const int SidFieldNumber = 1; + private readonly static string SidDefaultValue = ""; + + private string sid_; + /// + /// SID of the track that was unpublished. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Sid { + get { return sid_ ?? SidDefaultValue; } + set { + sid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "sid" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasSid { + get { return sid_ != null; } + } + /// Clears the value of the "sid" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearSid() { + sid_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DataTrackUnpublished); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DataTrackUnpublished other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Sid != other.Sid) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasSid) hash ^= Sid.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasSid) { + output.WriteRawTag(10); + output.WriteString(Sid); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasSid) { + output.WriteRawTag(10); + output.WriteString(Sid); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasSid) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Sid); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DataTrackUnpublished other) { + if (other == null) { + return; + } + if (other.HasSid) { + Sid = other.Sid; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Sid = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Sid = input.ReadString(); + break; + } + } + } + } + #endif + + } + #endregion } diff --git a/Runtime/Scripts/Room.cs b/Runtime/Scripts/Room.cs index 81038ebb..202fa600 100644 --- a/Runtime/Scripts/Room.cs +++ b/Runtime/Scripts/Room.cs @@ -126,6 +126,8 @@ public class Room public delegate void ConnectionStateChangeDelegate(ConnectionState connectionState); public delegate void ConnectionDelegate(Room room); public delegate void E2EeStateChangedDelegate(Participant participant, EncryptionState state); + public delegate void DataTrackPublishedDelegate(RemoteDataTrack track); + public delegate void DataTrackUnpublishedDelegate(string sid); public string Sid { private set; get; } public string Name { private set; get; } @@ -161,6 +163,8 @@ public class Room public event ParticipantDelegate ParticipantMetadataChanged; public event ParticipantDelegate ParticipantNameChanged; public event ParticipantDelegate ParticipantAttributesChanged; + public event DataTrackPublishedDelegate DataTrackPublished; + public event DataTrackUnpublishedDelegate DataTrackUnpublished; public ConnectInstruction Connect(string url, string token, RoomOptions options) { @@ -242,7 +246,7 @@ internal void UpdateFromInfo(RoomInfo info) Sid = info.Sid; Name = info.Name; Metadata = info.Metadata; - NumParticipants = info.NumParticipants; + NumParticipants = info.NumParticipants; } internal void OnRpcMethodInvocationReceived(RpcMethodInvocationEvent e) @@ -509,10 +513,20 @@ internal void OnEventReceived(RoomEvent e) break; case RoomEvent.MessageOneofCase.Moved: { - // Participants moved to new room. UpdateFromInfo(e.Moved); } break; + case RoomEvent.MessageOneofCase.DataTrackPublished: + { + var track = new RemoteDataTrack(e.DataTrackPublished.Track); + DataTrackPublished?.Invoke(track); + } + break; + case RoomEvent.MessageOneofCase.DataTrackUnpublished: + { + DataTrackUnpublished?.Invoke(e.DataTrackUnpublished.Sid); + } + break; } } diff --git a/Tests/PlayMode/DataTrackTests.cs b/Tests/PlayMode/DataTrackTests.cs new file mode 100644 index 00000000..1e3b6c5d --- /dev/null +++ b/Tests/PlayMode/DataTrackTests.cs @@ -0,0 +1,296 @@ +using System.Collections; +using NUnit.Framework; +using UnityEngine.TestTools; +using LiveKit.PlayModeTests.Utils; + +namespace LiveKit.PlayModeTests +{ + public class DataTrackTests + { + const string TestTrackName = "test-track"; + + [UnityTest, Category("E2E")] + public IEnumerator PublishDataTrack_Succeeds() + { + using var context = new TestRoomContext(); + yield return context.ConnectAll(); + Assert.IsNull(context.ConnectionError); + + var room = context.Rooms[0]; + var publishInstruction = room.LocalParticipant.PublishDataTrack(TestTrackName); + yield return publishInstruction; + + Assert.IsFalse(publishInstruction.IsError); + Assert.IsNotNull(publishInstruction.Track); + } + + [UnityTest, Category("E2E")] + public IEnumerator PublishDataTrack_TrackInfoMatchesOptions() + { + using var context = new TestRoomContext(); + yield return context.ConnectAll(); + Assert.IsNull(context.ConnectionError); + + var room = context.Rooms[0]; + var publishInstruction = room.LocalParticipant.PublishDataTrack(TestTrackName); + yield return publishInstruction; + + Assert.IsFalse(publishInstruction.IsError); + var track = publishInstruction.Track; + Assert.AreEqual(TestTrackName, track.Info.Name); + } + + [UnityTest, Category("E2E")] + public IEnumerator PublishDataTrack_IsPublishedReturnsTrue() + { + using var context = new TestRoomContext(); + yield return context.ConnectAll(); + Assert.IsNull(context.ConnectionError); + + var room = context.Rooms[0]; + var publishInstruction = room.LocalParticipant.PublishDataTrack(TestTrackName); + yield return publishInstruction; + + Assert.IsFalse(publishInstruction.IsError); + Assert.IsTrue(publishInstruction.Track.IsPublished()); + } + + [UnityTest, Category("E2E")] + public IEnumerator TryPush_Succeeds() + { + using var context = new TestRoomContext(); + yield return context.ConnectAll(); + Assert.IsNull(context.ConnectionError); + + var room = context.Rooms[0]; + var publishInstruction = room.LocalParticipant.PublishDataTrack(TestTrackName); + yield return publishInstruction; + + Assert.IsFalse(publishInstruction.IsError); + var track = publishInstruction.Track; + + Assert.DoesNotThrow(() => + { + track.TryPush(new DataTrackFrame(new byte[] { 0x01, 0x02, 0x03 })); + }); + } + + [UnityTest, Category("E2E")] + public IEnumerator Unpublish_IsPublishedReturnsFalse() + { + using var context = new TestRoomContext(); + yield return context.ConnectAll(); + Assert.IsNull(context.ConnectionError); + + var room = context.Rooms[0]; + var publishInstruction = room.LocalParticipant.PublishDataTrack(TestTrackName); + yield return publishInstruction; + + Assert.IsFalse(publishInstruction.IsError); + var track = publishInstruction.Track; + Assert.IsTrue(track.IsPublished()); + + track.Unpublish(); + Assert.IsFalse(track.IsPublished()); + } + + [UnityTest, Category("E2E")] + public IEnumerator PublishAndUnpublish_TriggersEvents() + { + var publisher = TestRoomContext.ConnectionOptions.Default; + publisher.Identity = "publisher"; + var subscriber = TestRoomContext.ConnectionOptions.Default; + subscriber.Identity = "subscriber"; + + using var context = new TestRoomContext(new[] { publisher, subscriber }); + yield return context.ConnectAll(); + Assert.IsNull(context.ConnectionError); + + var subscriberRoom = context.Rooms[1]; + var publishedExpectation = new Expectation(timeoutSeconds: 10f); + RemoteDataTrack receivedTrack = null; + + subscriberRoom.DataTrackPublished += (track) => + { + receivedTrack = track; + publishedExpectation.Fulfill(); + }; + + var publisherRoom = context.Rooms[0]; + var publishInstruction = publisherRoom.LocalParticipant.PublishDataTrack(TestTrackName); + yield return publishInstruction; + Assert.IsFalse(publishInstruction.IsError); + + yield return publishedExpectation.Wait(); + Assert.IsNull(publishedExpectation.Error); + Assert.AreEqual(TestTrackName, receivedTrack.Info.Name); + Assert.AreEqual(publisher.Identity, receivedTrack.PublisherIdentity); + + var unpublishedExpectation = new Expectation(timeoutSeconds: 10f); + string unpublishedSid = null; + + subscriberRoom.DataTrackUnpublished += (sid) => + { + unpublishedSid = sid; + unpublishedExpectation.Fulfill(); + }; + + publishInstruction.Track.Unpublish(); + + yield return unpublishedExpectation.Wait(); + Assert.IsNull(unpublishedExpectation.Error); + Assert.AreEqual(receivedTrack.Info.Sid, unpublishedSid); + } + + [UnityTest, Category("E2E")] + public IEnumerator Subscribe_Succeeds() + { + var publisher = TestRoomContext.ConnectionOptions.Default; + publisher.Identity = "publisher"; + var subscriber = TestRoomContext.ConnectionOptions.Default; + subscriber.Identity = "subscriber"; + + using var context = new TestRoomContext(new[] { publisher, subscriber }); + yield return context.ConnectAll(); + Assert.IsNull(context.ConnectionError); + + var subscriberRoom = context.Rooms[1]; + var trackExpectation = new Expectation(timeoutSeconds: 10f); + RemoteDataTrack remoteTrack = null; + + subscriberRoom.DataTrackPublished += (track) => + { + remoteTrack = track; + trackExpectation.Fulfill(); + }; + + var publisherRoom = context.Rooms[0]; + var publishInstruction = publisherRoom.LocalParticipant.PublishDataTrack(TestTrackName); + yield return publishInstruction; + Assert.IsFalse(publishInstruction.IsError); + + yield return trackExpectation.Wait(); + Assert.IsNull(trackExpectation.Error); + + var subscription = remoteTrack.Subscribe(); + Assert.IsNotNull(subscription); + } + + [UnityTest, Category("E2E")] + public IEnumerator PushAndReceive_FramePayloadMatches() + { + var publisher = TestRoomContext.ConnectionOptions.Default; + publisher.Identity = "publisher"; + var subscriber = TestRoomContext.ConnectionOptions.Default; + subscriber.Identity = "subscriber"; + + using var context = new TestRoomContext(new[] { publisher, subscriber }); + yield return context.ConnectAll(); + Assert.IsNull(context.ConnectionError); + + var subscriberRoom = context.Rooms[1]; + var trackExpectation = new Expectation(timeoutSeconds: 10f); + RemoteDataTrack remoteTrack = null; + + subscriberRoom.DataTrackPublished += (track) => + { + remoteTrack = track; + trackExpectation.Fulfill(); + }; + + var publisherRoom = context.Rooms[0]; + var publishInstruction = publisherRoom.LocalParticipant.PublishDataTrack(TestTrackName); + yield return publishInstruction; + Assert.IsFalse(publishInstruction.IsError); + + yield return trackExpectation.Wait(); + Assert.IsNull(trackExpectation.Error); + + var subscription = remoteTrack.Subscribe(); + + var sentPayload = new byte[] { 0xDE, 0xAD, 0xBE, 0xEF }; + publishInstruction.Track.TryPush(new DataTrackFrame(sentPayload)); + + var frameInstruction = subscription.ReadFrame(); + yield return frameInstruction; + + Assert.IsNull(frameInstruction.Error); + Assert.IsTrue(frameInstruction.IsCurrentReadDone, "Should have received a frame"); + Assert.AreEqual(sentPayload, frameInstruction.Frame.Payload); + } + + [UnityTest, Category("E2E")] + public IEnumerator PushAndReceive_TimestampIsPreserved() + { + var publisher = TestRoomContext.ConnectionOptions.Default; + publisher.Identity = "publisher"; + var subscriber = TestRoomContext.ConnectionOptions.Default; + subscriber.Identity = "subscriber"; + + using var context = new TestRoomContext(new[] { publisher, subscriber }); + yield return context.ConnectAll(); + Assert.IsNull(context.ConnectionError); + + var subscriberRoom = context.Rooms[1]; + var trackExpectation = new Expectation(timeoutSeconds: 10f); + RemoteDataTrack remoteTrack = null; + + subscriberRoom.DataTrackPublished += (track) => + { + remoteTrack = track; + trackExpectation.Fulfill(); + }; + + var publisherRoom = context.Rooms[0]; + var publishInstruction = publisherRoom.LocalParticipant.PublishDataTrack(TestTrackName); + yield return publishInstruction; + Assert.IsFalse(publishInstruction.IsError); + + yield return trackExpectation.Wait(); + Assert.IsNull(trackExpectation.Error); + + var subscription = remoteTrack.Subscribe(); + + var frame = new DataTrackFrame(new byte[] { 0x01 }).WithUserTimestampNow(); + publishInstruction.Track.TryPush(frame); + + var frameInstruction = subscription.ReadFrame(); + yield return frameInstruction; + + Assert.IsNull(frameInstruction.Error); + Assert.IsTrue(frameInstruction.IsCurrentReadDone, "Should have received a frame"); + Assert.IsNotNull(frameInstruction.Frame.UserTimestamp, "Timestamp should be preserved"); + + var latency = frameInstruction.Frame.DurationSinceTimestamp(); + Assert.IsNotNull(latency); + Assert.Less(latency.Value, 5.0, "Latency should be reasonable"); + } + + [Test] + public void DataTrackFrame_WithUserTimestampNow_SetsTimestamp() + { + var frame = new DataTrackFrame(new byte[] { 0x01, 0x02 }); + Assert.IsNull(frame.UserTimestamp); + + var stamped = frame.WithUserTimestampNow(); + Assert.IsNotNull(stamped.UserTimestamp); + Assert.AreEqual(frame.Payload, stamped.Payload); + } + + [Test] + public void DataTrackFrame_DurationSinceTimestamp_NullWithoutTimestamp() + { + var frame = new DataTrackFrame(new byte[] { 0x01 }); + Assert.IsNull(frame.DurationSinceTimestamp()); + } + + [Test] + public void DataTrackFrame_DurationSinceTimestamp_ReturnsValue() + { + var frame = new DataTrackFrame(new byte[] { 0x01 }).WithUserTimestampNow(); + var duration = frame.DurationSinceTimestamp(); + Assert.IsNotNull(duration); + Assert.GreaterOrEqual(duration.Value, 0.0); + } + } +} diff --git a/Tests/PlayMode/DataTrackTests.cs.meta b/Tests/PlayMode/DataTrackTests.cs.meta new file mode 100644 index 00000000..61e8b16f --- /dev/null +++ b/Tests/PlayMode/DataTrackTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8774d5b919bdc49f4b50e9365781b7e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client-sdk-rust~ b/client-sdk-rust~ index 20e442ed..5150309f 160000 --- a/client-sdk-rust~ +++ b/client-sdk-rust~ @@ -1 +1 @@ -Subproject commit 20e442edab8e91f399ca62e0f5d811ed0002a4b2 +Subproject commit 5150309fd69f660d61c0b858921ae446ba6c2530