diff --git a/lib/src/proto/livekit_models.pbenum.dart b/lib/src/proto/livekit_models.pbenum.dart index e985269..3ef1b5f 100644 --- a/lib/src/proto/livekit_models.pbenum.dart +++ b/lib/src/proto/livekit_models.pbenum.dart @@ -6,9 +6,7 @@ // ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name // ignore_for_file: UNDEFINED_SHOWN_NAME - import 'dart:core' as $core; - import 'package:protobuf/protobuf.dart' as $pb; class TrackType extends $pb.ProtobufEnum { diff --git a/lib/src/proto/livekit_models.pbjson.dart b/lib/src/proto/livekit_models.pbjson.dart index f2b28b0..e8f88fd 100644 --- a/lib/src/proto/livekit_models.pbjson.dart +++ b/lib/src/proto/livekit_models.pbjson.dart @@ -5,8 +5,8 @@ // @dart = 2.12 // ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name -import 'dart:convert' as $convert; import 'dart:core' as $core; +import 'dart:convert' as $convert; import 'dart:typed_data' as $typed_data; @$core.Deprecated('Use trackTypeDescriptor instead') diff --git a/lib/src/proto/livekit_rtc.pb.dart b/lib/src/proto/livekit_rtc.pb.dart index fca5a14..64d9c6c 100644 --- a/lib/src/proto/livekit_rtc.pb.dart +++ b/lib/src/proto/livekit_rtc.pb.dart @@ -10,6 +10,7 @@ import 'dart:core' as $core; import 'package:protobuf/protobuf.dart' as $pb; import 'livekit_models.pb.dart' as $0; + import 'livekit_models.pbenum.dart' as $0; import 'livekit_rtc.pbenum.dart'; @@ -321,6 +322,7 @@ enum SignalResponse_Message { roomUpdate, connectionQuality, streamStateUpdate, + subscribedQualityUpdate, notSet } @@ -339,6 +341,7 @@ class SignalResponse extends $pb.GeneratedMessage { 11: SignalResponse_Message.roomUpdate, 12: SignalResponse_Message.connectionQuality, 13: SignalResponse_Message.streamStateUpdate, + 14: SignalResponse_Message.subscribedQualityUpdate, 0: SignalResponse_Message.notSet }; static final $pb.BuilderInfo _i = $pb.BuilderInfo( @@ -350,7 +353,7 @@ class SignalResponse extends $pb.GeneratedMessage { ? '' : 'livekit'), createEmptyInstance: create) - ..oo(0, [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13]) + ..oo(0, [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14]) ..aOM( 1, const $core.bool.fromEnvironment('protobuf.omit_field_names') @@ -423,6 +426,12 @@ class SignalResponse extends $pb.GeneratedMessage { ? '' : 'streamStateUpdate', subBuilder: StreamStateUpdate.create) + ..aOM( + 14, + const $core.bool.fromEnvironment('protobuf.omit_field_names') + ? '' + : 'subscribedQualityUpdate', + subBuilder: SubscribedQualityUpdate.create) ..hasRequiredFields = false; SignalResponse._() : super(); @@ -439,6 +448,7 @@ class SignalResponse extends $pb.GeneratedMessage { RoomUpdate? roomUpdate, ConnectionQualityUpdate? connectionQuality, StreamStateUpdate? streamStateUpdate, + SubscribedQualityUpdate? subscribedQualityUpdate, }) { final _result = create(); if (join != null) { @@ -477,6 +487,9 @@ class SignalResponse extends $pb.GeneratedMessage { if (streamStateUpdate != null) { _result.streamStateUpdate = streamStateUpdate; } + if (subscribedQualityUpdate != null) { + _result.subscribedQualityUpdate = subscribedQualityUpdate; + } return _result; } factory SignalResponse.fromBuffer($core.List<$core.int> i, @@ -677,6 +690,20 @@ class SignalResponse extends $pb.GeneratedMessage { void clearStreamStateUpdate() => clearField(13); @$pb.TagNumber(13) StreamStateUpdate ensureStreamStateUpdate() => $_ensure(11); + + @$pb.TagNumber(14) + SubscribedQualityUpdate get subscribedQualityUpdate => $_getN(12); + @$pb.TagNumber(14) + set subscribedQualityUpdate(SubscribedQualityUpdate v) { + setField(14, v); + } + + @$pb.TagNumber(14) + $core.bool hasSubscribedQualityUpdate() => $_has(12); + @$pb.TagNumber(14) + void clearSubscribedQualityUpdate() => clearField(14); + @$pb.TagNumber(14) + SubscribedQualityUpdate ensureSubscribedQualityUpdate() => $_ensure(12); } class AddTrackRequest extends $pb.GeneratedMessage { @@ -2151,12 +2178,19 @@ class ConnectionQualityInfo extends $pb.GeneratedMessage { defaultOrMaker: $0.ConnectionQuality.POOR, valueOf: $0.ConnectionQuality.valueOf, enumValues: $0.ConnectionQuality.values) + ..a<$core.double>( + 3, + const $core.bool.fromEnvironment('protobuf.omit_field_names') + ? '' + : 'score', + $pb.PbFieldType.OF) ..hasRequiredFields = false; ConnectionQualityInfo._() : super(); factory ConnectionQualityInfo({ $core.String? participantSid, $0.ConnectionQuality? quality, + $core.double? score, }) { final _result = create(); if (participantSid != null) { @@ -2165,6 +2199,9 @@ class ConnectionQualityInfo extends $pb.GeneratedMessage { if (quality != null) { _result.quality = quality; } + if (score != null) { + _result.score = score; + } return _result; } factory ConnectionQualityInfo.fromBuffer($core.List<$core.int> i, @@ -2219,6 +2256,18 @@ class ConnectionQualityInfo extends $pb.GeneratedMessage { $core.bool hasQuality() => $_has(1); @$pb.TagNumber(2) void clearQuality() => clearField(2); + + @$pb.TagNumber(3) + $core.double get score => $_getN(2); + @$pb.TagNumber(3) + set score($core.double v) { + $_setFloat(2, v); + } + + @$pb.TagNumber(3) + $core.bool hasScore() => $_has(2); + @$pb.TagNumber(3) + void clearScore() => clearField(3); } class ConnectionQualityUpdate extends $pb.GeneratedMessage { @@ -2455,3 +2504,178 @@ class StreamStateUpdate extends $pb.GeneratedMessage { @$pb.TagNumber(1) $core.List get streamStates => $_getList(0); } + +class SubscribedQuality extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + const $core.bool.fromEnvironment('protobuf.omit_message_names') + ? '' + : 'SubscribedQuality', + package: const $pb.PackageName( + const $core.bool.fromEnvironment('protobuf.omit_message_names') + ? '' + : 'livekit'), + createEmptyInstance: create) + ..e<$0.VideoQuality>( + 1, + const $core.bool.fromEnvironment('protobuf.omit_field_names') + ? '' + : 'quality', + $pb.PbFieldType.OE, + defaultOrMaker: $0.VideoQuality.LOW, + valueOf: $0.VideoQuality.valueOf, + enumValues: $0.VideoQuality.values) + ..aOB( + 2, + const $core.bool.fromEnvironment('protobuf.omit_field_names') + ? '' + : 'enabled') + ..hasRequiredFields = false; + + SubscribedQuality._() : super(); + factory SubscribedQuality({ + $0.VideoQuality? quality, + $core.bool? enabled, + }) { + final _result = create(); + if (quality != null) { + _result.quality = quality; + } + if (enabled != null) { + _result.enabled = enabled; + } + return _result; + } + factory SubscribedQuality.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory SubscribedQuality.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + SubscribedQuality clone() => SubscribedQuality()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + SubscribedQuality copyWith(void Function(SubscribedQuality) updates) => + super.copyWith((message) => updates(message as SubscribedQuality)) + as SubscribedQuality; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static SubscribedQuality create() => SubscribedQuality._(); + SubscribedQuality createEmptyInstance() => create(); + static $pb.PbList createRepeated() => + $pb.PbList(); + @$core.pragma('dart2js:noInline') + static SubscribedQuality getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static SubscribedQuality? _defaultInstance; + + @$pb.TagNumber(1) + $0.VideoQuality get quality => $_getN(0); + @$pb.TagNumber(1) + set quality($0.VideoQuality v) { + setField(1, v); + } + + @$pb.TagNumber(1) + $core.bool hasQuality() => $_has(0); + @$pb.TagNumber(1) + void clearQuality() => clearField(1); + + @$pb.TagNumber(2) + $core.bool get enabled => $_getBF(1); + @$pb.TagNumber(2) + set enabled($core.bool v) { + $_setBool(1, v); + } + + @$pb.TagNumber(2) + $core.bool hasEnabled() => $_has(1); + @$pb.TagNumber(2) + void clearEnabled() => clearField(2); +} + +class SubscribedQualityUpdate extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + const $core.bool.fromEnvironment('protobuf.omit_message_names') + ? '' + : 'SubscribedQualityUpdate', + package: const $pb.PackageName( + const $core.bool.fromEnvironment('protobuf.omit_message_names') + ? '' + : 'livekit'), + createEmptyInstance: create) + ..aOS( + 1, + const $core.bool.fromEnvironment('protobuf.omit_field_names') + ? '' + : 'trackSid') + ..pc( + 2, + const $core.bool.fromEnvironment('protobuf.omit_field_names') + ? '' + : 'subscribedQualities', + $pb.PbFieldType.PM, + subBuilder: SubscribedQuality.create) + ..hasRequiredFields = false; + + SubscribedQualityUpdate._() : super(); + factory SubscribedQualityUpdate({ + $core.String? trackSid, + $core.Iterable? subscribedQualities, + }) { + final _result = create(); + if (trackSid != null) { + _result.trackSid = trackSid; + } + if (subscribedQualities != null) { + _result.subscribedQualities.addAll(subscribedQualities); + } + return _result; + } + factory SubscribedQualityUpdate.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory SubscribedQualityUpdate.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + SubscribedQualityUpdate clone() => + SubscribedQualityUpdate()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + SubscribedQualityUpdate copyWith( + void Function(SubscribedQualityUpdate) updates) => + super.copyWith((message) => updates(message as SubscribedQualityUpdate)) + as SubscribedQualityUpdate; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static SubscribedQualityUpdate create() => SubscribedQualityUpdate._(); + SubscribedQualityUpdate createEmptyInstance() => create(); + static $pb.PbList createRepeated() => + $pb.PbList(); + @$core.pragma('dart2js:noInline') + static SubscribedQualityUpdate getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static SubscribedQualityUpdate? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get trackSid => $_getSZ(0); + @$pb.TagNumber(1) + set trackSid($core.String v) { + $_setString(0, v); + } + + @$pb.TagNumber(1) + $core.bool hasTrackSid() => $_has(0); + @$pb.TagNumber(1) + void clearTrackSid() => clearField(1); + + @$pb.TagNumber(2) + $core.List get subscribedQualities => $_getList(1); +} diff --git a/lib/src/proto/livekit_rtc.pbenum.dart b/lib/src/proto/livekit_rtc.pbenum.dart index 8e893a6..3414912 100644 --- a/lib/src/proto/livekit_rtc.pbenum.dart +++ b/lib/src/proto/livekit_rtc.pbenum.dart @@ -6,9 +6,7 @@ // ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name // ignore_for_file: UNDEFINED_SHOWN_NAME - import 'dart:core' as $core; - import 'package:protobuf/protobuf.dart' as $pb; class SignalTarget extends $pb.ProtobufEnum { diff --git a/lib/src/proto/livekit_rtc.pbjson.dart b/lib/src/proto/livekit_rtc.pbjson.dart index d948722..5b5e4be 100644 --- a/lib/src/proto/livekit_rtc.pbjson.dart +++ b/lib/src/proto/livekit_rtc.pbjson.dart @@ -5,8 +5,8 @@ // @dart = 2.12 // ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name -import 'dart:convert' as $convert; import 'dart:core' as $core; +import 'dart:convert' as $convert; import 'dart:typed_data' as $typed_data; @$core.Deprecated('Use signalTargetDescriptor instead') @@ -239,6 +239,15 @@ const SignalResponse$json = const { '9': 0, '10': 'streamStateUpdate' }, + const { + '1': 'subscribed_quality_update', + '3': 14, + '4': 1, + '5': 11, + '6': '.livekit.SubscribedQualityUpdate', + '9': 0, + '10': 'subscribedQualityUpdate' + }, ], '8': const [ const {'1': 'message'}, @@ -247,7 +256,7 @@ const SignalResponse$json = const { /// Descriptor for `SignalResponse`. Decode as a `google.protobuf.DescriptorProto`. final $typed_data.Uint8List signalResponseDescriptor = $convert.base64Decode( - 'Cg5TaWduYWxSZXNwb25zZRIrCgRqb2luGAEgASgLMhUubGl2ZWtpdC5Kb2luUmVzcG9uc2VIAFIEam9pbhI1CgZhbnN3ZXIYAiABKAsyGy5saXZla2l0LlNlc3Npb25EZXNjcmlwdGlvbkgAUgZhbnN3ZXISMwoFb2ZmZXIYAyABKAsyGy5saXZla2l0LlNlc3Npb25EZXNjcmlwdGlvbkgAUgVvZmZlchIzCgd0cmlja2xlGAQgASgLMhcubGl2ZWtpdC5Ucmlja2xlUmVxdWVzdEgAUgd0cmlja2xlEjQKBnVwZGF0ZRgFIAEoCzIaLmxpdmVraXQuUGFydGljaXBhbnRVcGRhdGVIAFIGdXBkYXRlEkoKD3RyYWNrX3B1Ymxpc2hlZBgGIAEoCzIfLmxpdmVraXQuVHJhY2tQdWJsaXNoZWRSZXNwb25zZUgAUg50cmFja1B1Ymxpc2hlZBItCgVsZWF2ZRgIIAEoCzIVLmxpdmVraXQuTGVhdmVSZXF1ZXN0SABSBWxlYXZlEi8KBG11dGUYCSABKAsyGS5saXZla2l0Lk11dGVUcmFja1JlcXVlc3RIAFIEbXV0ZRJFChBzcGVha2Vyc19jaGFuZ2VkGAogASgLMhgubGl2ZWtpdC5TcGVha2Vyc0NoYW5nZWRIAFIPc3BlYWtlcnNDaGFuZ2VkEjYKC3Jvb21fdXBkYXRlGAsgASgLMhMubGl2ZWtpdC5Sb29tVXBkYXRlSABSCnJvb21VcGRhdGUSUQoSY29ubmVjdGlvbl9xdWFsaXR5GAwgASgLMiAubGl2ZWtpdC5Db25uZWN0aW9uUXVhbGl0eVVwZGF0ZUgAUhFjb25uZWN0aW9uUXVhbGl0eRJMChNzdHJlYW1fc3RhdGVfdXBkYXRlGA0gASgLMhoubGl2ZWtpdC5TdHJlYW1TdGF0ZVVwZGF0ZUgAUhFzdHJlYW1TdGF0ZVVwZGF0ZUIJCgdtZXNzYWdl'); + 'Cg5TaWduYWxSZXNwb25zZRIrCgRqb2luGAEgASgLMhUubGl2ZWtpdC5Kb2luUmVzcG9uc2VIAFIEam9pbhI1CgZhbnN3ZXIYAiABKAsyGy5saXZla2l0LlNlc3Npb25EZXNjcmlwdGlvbkgAUgZhbnN3ZXISMwoFb2ZmZXIYAyABKAsyGy5saXZla2l0LlNlc3Npb25EZXNjcmlwdGlvbkgAUgVvZmZlchIzCgd0cmlja2xlGAQgASgLMhcubGl2ZWtpdC5Ucmlja2xlUmVxdWVzdEgAUgd0cmlja2xlEjQKBnVwZGF0ZRgFIAEoCzIaLmxpdmVraXQuUGFydGljaXBhbnRVcGRhdGVIAFIGdXBkYXRlEkoKD3RyYWNrX3B1Ymxpc2hlZBgGIAEoCzIfLmxpdmVraXQuVHJhY2tQdWJsaXNoZWRSZXNwb25zZUgAUg50cmFja1B1Ymxpc2hlZBItCgVsZWF2ZRgIIAEoCzIVLmxpdmVraXQuTGVhdmVSZXF1ZXN0SABSBWxlYXZlEi8KBG11dGUYCSABKAsyGS5saXZla2l0Lk11dGVUcmFja1JlcXVlc3RIAFIEbXV0ZRJFChBzcGVha2Vyc19jaGFuZ2VkGAogASgLMhgubGl2ZWtpdC5TcGVha2Vyc0NoYW5nZWRIAFIPc3BlYWtlcnNDaGFuZ2VkEjYKC3Jvb21fdXBkYXRlGAsgASgLMhMubGl2ZWtpdC5Sb29tVXBkYXRlSABSCnJvb21VcGRhdGUSUQoSY29ubmVjdGlvbl9xdWFsaXR5GAwgASgLMiAubGl2ZWtpdC5Db25uZWN0aW9uUXVhbGl0eVVwZGF0ZUgAUhFjb25uZWN0aW9uUXVhbGl0eRJMChNzdHJlYW1fc3RhdGVfdXBkYXRlGA0gASgLMhoubGl2ZWtpdC5TdHJlYW1TdGF0ZVVwZGF0ZUgAUhFzdHJlYW1TdGF0ZVVwZGF0ZRJeChlzdWJzY3JpYmVkX3F1YWxpdHlfdXBkYXRlGA4gASgLMiAubGl2ZWtpdC5TdWJzY3JpYmVkUXVhbGl0eVVwZGF0ZUgAUhdzdWJzY3JpYmVkUXVhbGl0eVVwZGF0ZUIJCgdtZXNzYWdl'); @$core.Deprecated('Use addTrackRequestDescriptor instead') const AddTrackRequest$json = const { '1': 'AddTrackRequest', @@ -564,12 +573,13 @@ const ConnectionQualityInfo$json = const { '6': '.livekit.ConnectionQuality', '10': 'quality' }, + const {'1': 'score', '3': 3, '4': 1, '5': 2, '10': 'score'}, ], }; /// Descriptor for `ConnectionQualityInfo`. Decode as a `google.protobuf.DescriptorProto`. final $typed_data.Uint8List connectionQualityInfoDescriptor = $convert.base64Decode( - 'ChVDb25uZWN0aW9uUXVhbGl0eUluZm8SJwoPcGFydGljaXBhbnRfc2lkGAEgASgJUg5wYXJ0aWNpcGFudFNpZBI0CgdxdWFsaXR5GAIgASgOMhoubGl2ZWtpdC5Db25uZWN0aW9uUXVhbGl0eVIHcXVhbGl0eQ=='); + 'ChVDb25uZWN0aW9uUXVhbGl0eUluZm8SJwoPcGFydGljaXBhbnRfc2lkGAEgASgJUg5wYXJ0aWNpcGFudFNpZBI0CgdxdWFsaXR5GAIgASgOMhoubGl2ZWtpdC5Db25uZWN0aW9uUXVhbGl0eVIHcXVhbGl0eRIUCgVzY29yZRgDIAEoAlIFc2NvcmU='); @$core.Deprecated('Use connectionQualityUpdateDescriptor instead') const ConnectionQualityUpdate$json = const { '1': 'ConnectionQualityUpdate', @@ -633,3 +643,42 @@ const StreamStateUpdate$json = const { /// Descriptor for `StreamStateUpdate`. Decode as a `google.protobuf.DescriptorProto`. final $typed_data.Uint8List streamStateUpdateDescriptor = $convert.base64Decode( 'ChFTdHJlYW1TdGF0ZVVwZGF0ZRI9Cg1zdHJlYW1fc3RhdGVzGAEgAygLMhgubGl2ZWtpdC5TdHJlYW1TdGF0ZUluZm9SDHN0cmVhbVN0YXRlcw=='); +@$core.Deprecated('Use subscribedQualityDescriptor instead') +const SubscribedQuality$json = const { + '1': 'SubscribedQuality', + '2': const [ + const { + '1': 'quality', + '3': 1, + '4': 1, + '5': 14, + '6': '.livekit.VideoQuality', + '10': 'quality' + }, + const {'1': 'enabled', '3': 2, '4': 1, '5': 8, '10': 'enabled'}, + ], +}; + +/// Descriptor for `SubscribedQuality`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List subscribedQualityDescriptor = $convert.base64Decode( + 'ChFTdWJzY3JpYmVkUXVhbGl0eRIvCgdxdWFsaXR5GAEgASgOMhUubGl2ZWtpdC5WaWRlb1F1YWxpdHlSB3F1YWxpdHkSGAoHZW5hYmxlZBgCIAEoCFIHZW5hYmxlZA=='); +@$core.Deprecated('Use subscribedQualityUpdateDescriptor instead') +const SubscribedQualityUpdate$json = const { + '1': 'SubscribedQualityUpdate', + '2': const [ + const {'1': 'track_sid', '3': 1, '4': 1, '5': 9, '10': 'trackSid'}, + const { + '1': 'subscribed_qualities', + '3': 2, + '4': 3, + '5': 11, + '6': '.livekit.SubscribedQuality', + '10': 'subscribedQualities' + }, + ], +}; + +/// Descriptor for `SubscribedQualityUpdate`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List subscribedQualityUpdateDescriptor = + $convert.base64Decode( + 'ChdTdWJzY3JpYmVkUXVhbGl0eVVwZGF0ZRIbCgl0cmFja19zaWQYASABKAlSCHRyYWNrU2lkEk0KFHN1YnNjcmliZWRfcXVhbGl0aWVzGAIgAygLMhoubGl2ZWtpdC5TdWJzY3JpYmVkUXVhbGl0eVITc3Vic2NyaWJlZFF1YWxpdGllcw==');