steam-vent-proto 0.1.0

Protobuf structs used by the Steam client protocol
Documentation
// This file is generated by rust-protobuf 2.24.1. Do not edit
// @generated

// https://github.com/rust-lang/rust-clippy/issues/702
#![allow(unknown_lints)]
#![allow(clippy::all)]

#![allow(unused_attributes)]
#![cfg_attr(rustfmt, rustfmt::skip)]

#![allow(box_pointers)]
#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unused_imports)]
#![allow(unused_results)]
//! Generated file from `steammessages_video.steamclient.proto`

/// Generated files are compatible only with the same version
/// of protobuf runtime.
// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_24_1;

#[derive(PartialEq,Clone,Default)]
pub struct CVideo_ClientGetVideoURL_Request {
    // message fields
    video_id: ::std::option::Option<u64>,
    client_cellid: ::std::option::Option<u32>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CVideo_ClientGetVideoURL_Request {
    fn default() -> &'a CVideo_ClientGetVideoURL_Request {
        <CVideo_ClientGetVideoURL_Request as ::protobuf::Message>::default_instance()
    }
}

impl CVideo_ClientGetVideoURL_Request {
    pub fn new() -> CVideo_ClientGetVideoURL_Request {
        ::std::default::Default::default()
    }

    // optional uint64 video_id = 1;


    pub fn get_video_id(&self) -> u64 {
        self.video_id.unwrap_or(0)
    }
    pub fn clear_video_id(&mut self) {
        self.video_id = ::std::option::Option::None;
    }

    pub fn has_video_id(&self) -> bool {
        self.video_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_video_id(&mut self, v: u64) {
        self.video_id = ::std::option::Option::Some(v);
    }

    // optional uint32 client_cellid = 2;


    pub fn get_client_cellid(&self) -> u32 {
        self.client_cellid.unwrap_or(0)
    }
    pub fn clear_client_cellid(&mut self) {
        self.client_cellid = ::std::option::Option::None;
    }

    pub fn has_client_cellid(&self) -> bool {
        self.client_cellid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_client_cellid(&mut self, v: u32) {
        self.client_cellid = ::std::option::Option::Some(v);
    }
}

impl ::protobuf::Message for CVideo_ClientGetVideoURL_Request {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.video_id = ::std::option::Option::Some(tmp);
                },
                2 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.client_cellid = ::std::option::Option::Some(tmp);
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(v) = self.video_id {
            my_size += ::protobuf::rt::value_size(1, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.client_cellid {
            my_size += ::protobuf::rt::value_size(2, v, ::protobuf::wire_format::WireTypeVarint);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(v) = self.video_id {
            os.write_uint64(1, v)?;
        }
        if let Some(v) = self.client_cellid {
            os.write_uint32(2, v)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CVideo_ClientGetVideoURL_Request {
        CVideo_ClientGetVideoURL_Request::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                "video_id",
                |m: &CVideo_ClientGetVideoURL_Request| { &m.video_id },
                |m: &mut CVideo_ClientGetVideoURL_Request| { &mut m.video_id },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "client_cellid",
                |m: &CVideo_ClientGetVideoURL_Request| { &m.client_cellid },
                |m: &mut CVideo_ClientGetVideoURL_Request| { &mut m.client_cellid },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CVideo_ClientGetVideoURL_Request>(
                "CVideo_ClientGetVideoURL_Request",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CVideo_ClientGetVideoURL_Request {
        static instance: ::protobuf::rt::LazyV2<CVideo_ClientGetVideoURL_Request> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CVideo_ClientGetVideoURL_Request::new)
    }
}

impl ::protobuf::Clear for CVideo_ClientGetVideoURL_Request {
    fn clear(&mut self) {
        self.video_id = ::std::option::Option::None;
        self.client_cellid = ::std::option::Option::None;
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CVideo_ClientGetVideoURL_Request {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CVideo_ClientGetVideoURL_Request {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct CVideo_ClientGetVideoURL_Response {
    // message fields
    video_id: ::std::option::Option<u64>,
    video_url: ::protobuf::SingularField<::std::string::String>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CVideo_ClientGetVideoURL_Response {
    fn default() -> &'a CVideo_ClientGetVideoURL_Response {
        <CVideo_ClientGetVideoURL_Response as ::protobuf::Message>::default_instance()
    }
}

impl CVideo_ClientGetVideoURL_Response {
    pub fn new() -> CVideo_ClientGetVideoURL_Response {
        ::std::default::Default::default()
    }

    // optional uint64 video_id = 1;


    pub fn get_video_id(&self) -> u64 {
        self.video_id.unwrap_or(0)
    }
    pub fn clear_video_id(&mut self) {
        self.video_id = ::std::option::Option::None;
    }

    pub fn has_video_id(&self) -> bool {
        self.video_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_video_id(&mut self, v: u64) {
        self.video_id = ::std::option::Option::Some(v);
    }

    // optional string video_url = 2;


    pub fn get_video_url(&self) -> &str {
        match self.video_url.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_video_url(&mut self) {
        self.video_url.clear();
    }

    pub fn has_video_url(&self) -> bool {
        self.video_url.is_some()
    }

    // Param is passed by value, moved
    pub fn set_video_url(&mut self, v: ::std::string::String) {
        self.video_url = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_video_url(&mut self) -> &mut ::std::string::String {
        if self.video_url.is_none() {
            self.video_url.set_default();
        }
        self.video_url.as_mut().unwrap()
    }

    // Take field
    pub fn take_video_url(&mut self) -> ::std::string::String {
        self.video_url.take().unwrap_or_else(|| ::std::string::String::new())
    }
}

impl ::protobuf::Message for CVideo_ClientGetVideoURL_Response {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.video_id = ::std::option::Option::Some(tmp);
                },
                2 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.video_url)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(v) = self.video_id {
            my_size += ::protobuf::rt::value_size(1, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(ref v) = self.video_url.as_ref() {
            my_size += ::protobuf::rt::string_size(2, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(v) = self.video_id {
            os.write_uint64(1, v)?;
        }
        if let Some(ref v) = self.video_url.as_ref() {
            os.write_string(2, &v)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CVideo_ClientGetVideoURL_Response {
        CVideo_ClientGetVideoURL_Response::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                "video_id",
                |m: &CVideo_ClientGetVideoURL_Response| { &m.video_id },
                |m: &mut CVideo_ClientGetVideoURL_Response| { &mut m.video_id },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "video_url",
                |m: &CVideo_ClientGetVideoURL_Response| { &m.video_url },
                |m: &mut CVideo_ClientGetVideoURL_Response| { &mut m.video_url },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CVideo_ClientGetVideoURL_Response>(
                "CVideo_ClientGetVideoURL_Response",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CVideo_ClientGetVideoURL_Response {
        static instance: ::protobuf::rt::LazyV2<CVideo_ClientGetVideoURL_Response> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CVideo_ClientGetVideoURL_Response::new)
    }
}

impl ::protobuf::Clear for CVideo_ClientGetVideoURL_Response {
    fn clear(&mut self) {
        self.video_id = ::std::option::Option::None;
        self.video_url.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CVideo_ClientGetVideoURL_Response {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CVideo_ClientGetVideoURL_Response {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct VideoBookmark {
    // message fields
    app_id: ::std::option::Option<u32>,
    playback_position_in_seconds: ::std::option::Option<u32>,
    video_track_id: ::std::option::Option<u64>,
    audio_track_id: ::std::option::Option<u64>,
    timedtext_track_id: ::std::option::Option<u64>,
    last_modified: ::std::option::Option<u32>,
    hide_from_watch_history: ::std::option::Option<bool>,
    hide_from_library: ::std::option::Option<bool>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a VideoBookmark {
    fn default() -> &'a VideoBookmark {
        <VideoBookmark as ::protobuf::Message>::default_instance()
    }
}

impl VideoBookmark {
    pub fn new() -> VideoBookmark {
        ::std::default::Default::default()
    }

    // optional uint32 app_id = 1;


    pub fn get_app_id(&self) -> u32 {
        self.app_id.unwrap_or(0)
    }
    pub fn clear_app_id(&mut self) {
        self.app_id = ::std::option::Option::None;
    }

    pub fn has_app_id(&self) -> bool {
        self.app_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_app_id(&mut self, v: u32) {
        self.app_id = ::std::option::Option::Some(v);
    }

    // optional uint32 playback_position_in_seconds = 2;


    pub fn get_playback_position_in_seconds(&self) -> u32 {
        self.playback_position_in_seconds.unwrap_or(0)
    }
    pub fn clear_playback_position_in_seconds(&mut self) {
        self.playback_position_in_seconds = ::std::option::Option::None;
    }

    pub fn has_playback_position_in_seconds(&self) -> bool {
        self.playback_position_in_seconds.is_some()
    }

    // Param is passed by value, moved
    pub fn set_playback_position_in_seconds(&mut self, v: u32) {
        self.playback_position_in_seconds = ::std::option::Option::Some(v);
    }

    // optional uint64 video_track_id = 3;


    pub fn get_video_track_id(&self) -> u64 {
        self.video_track_id.unwrap_or(0)
    }
    pub fn clear_video_track_id(&mut self) {
        self.video_track_id = ::std::option::Option::None;
    }

    pub fn has_video_track_id(&self) -> bool {
        self.video_track_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_video_track_id(&mut self, v: u64) {
        self.video_track_id = ::std::option::Option::Some(v);
    }

    // optional uint64 audio_track_id = 4;


    pub fn get_audio_track_id(&self) -> u64 {
        self.audio_track_id.unwrap_or(0)
    }
    pub fn clear_audio_track_id(&mut self) {
        self.audio_track_id = ::std::option::Option::None;
    }

    pub fn has_audio_track_id(&self) -> bool {
        self.audio_track_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_audio_track_id(&mut self, v: u64) {
        self.audio_track_id = ::std::option::Option::Some(v);
    }

    // optional uint64 timedtext_track_id = 5;


    pub fn get_timedtext_track_id(&self) -> u64 {
        self.timedtext_track_id.unwrap_or(0)
    }
    pub fn clear_timedtext_track_id(&mut self) {
        self.timedtext_track_id = ::std::option::Option::None;
    }

    pub fn has_timedtext_track_id(&self) -> bool {
        self.timedtext_track_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_timedtext_track_id(&mut self, v: u64) {
        self.timedtext_track_id = ::std::option::Option::Some(v);
    }

    // optional uint32 last_modified = 6;


    pub fn get_last_modified(&self) -> u32 {
        self.last_modified.unwrap_or(0)
    }
    pub fn clear_last_modified(&mut self) {
        self.last_modified = ::std::option::Option::None;
    }

    pub fn has_last_modified(&self) -> bool {
        self.last_modified.is_some()
    }

    // Param is passed by value, moved
    pub fn set_last_modified(&mut self, v: u32) {
        self.last_modified = ::std::option::Option::Some(v);
    }

    // optional bool hide_from_watch_history = 7;


    pub fn get_hide_from_watch_history(&self) -> bool {
        self.hide_from_watch_history.unwrap_or(false)
    }
    pub fn clear_hide_from_watch_history(&mut self) {
        self.hide_from_watch_history = ::std::option::Option::None;
    }

    pub fn has_hide_from_watch_history(&self) -> bool {
        self.hide_from_watch_history.is_some()
    }

    // Param is passed by value, moved
    pub fn set_hide_from_watch_history(&mut self, v: bool) {
        self.hide_from_watch_history = ::std::option::Option::Some(v);
    }

    // optional bool hide_from_library = 8;


    pub fn get_hide_from_library(&self) -> bool {
        self.hide_from_library.unwrap_or(false)
    }
    pub fn clear_hide_from_library(&mut self) {
        self.hide_from_library = ::std::option::Option::None;
    }

    pub fn has_hide_from_library(&self) -> bool {
        self.hide_from_library.is_some()
    }

    // Param is passed by value, moved
    pub fn set_hide_from_library(&mut self, v: bool) {
        self.hide_from_library = ::std::option::Option::Some(v);
    }
}

impl ::protobuf::Message for VideoBookmark {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.app_id = ::std::option::Option::Some(tmp);
                },
                2 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.playback_position_in_seconds = ::std::option::Option::Some(tmp);
                },
                3 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.video_track_id = ::std::option::Option::Some(tmp);
                },
                4 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.audio_track_id = ::std::option::Option::Some(tmp);
                },
                5 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint64()?;
                    self.timedtext_track_id = ::std::option::Option::Some(tmp);
                },
                6 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.last_modified = ::std::option::Option::Some(tmp);
                },
                7 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.hide_from_watch_history = ::std::option::Option::Some(tmp);
                },
                8 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.hide_from_library = ::std::option::Option::Some(tmp);
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(v) = self.app_id {
            my_size += ::protobuf::rt::value_size(1, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.playback_position_in_seconds {
            my_size += ::protobuf::rt::value_size(2, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.video_track_id {
            my_size += ::protobuf::rt::value_size(3, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.audio_track_id {
            my_size += ::protobuf::rt::value_size(4, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.timedtext_track_id {
            my_size += ::protobuf::rt::value_size(5, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.last_modified {
            my_size += ::protobuf::rt::value_size(6, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.hide_from_watch_history {
            my_size += 2;
        }
        if let Some(v) = self.hide_from_library {
            my_size += 2;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(v) = self.app_id {
            os.write_uint32(1, v)?;
        }
        if let Some(v) = self.playback_position_in_seconds {
            os.write_uint32(2, v)?;
        }
        if let Some(v) = self.video_track_id {
            os.write_uint64(3, v)?;
        }
        if let Some(v) = self.audio_track_id {
            os.write_uint64(4, v)?;
        }
        if let Some(v) = self.timedtext_track_id {
            os.write_uint64(5, v)?;
        }
        if let Some(v) = self.last_modified {
            os.write_uint32(6, v)?;
        }
        if let Some(v) = self.hide_from_watch_history {
            os.write_bool(7, v)?;
        }
        if let Some(v) = self.hide_from_library {
            os.write_bool(8, v)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> VideoBookmark {
        VideoBookmark::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "app_id",
                |m: &VideoBookmark| { &m.app_id },
                |m: &mut VideoBookmark| { &mut m.app_id },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "playback_position_in_seconds",
                |m: &VideoBookmark| { &m.playback_position_in_seconds },
                |m: &mut VideoBookmark| { &mut m.playback_position_in_seconds },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                "video_track_id",
                |m: &VideoBookmark| { &m.video_track_id },
                |m: &mut VideoBookmark| { &mut m.video_track_id },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                "audio_track_id",
                |m: &VideoBookmark| { &m.audio_track_id },
                |m: &mut VideoBookmark| { &mut m.audio_track_id },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint64>(
                "timedtext_track_id",
                |m: &VideoBookmark| { &m.timedtext_track_id },
                |m: &mut VideoBookmark| { &mut m.timedtext_track_id },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "last_modified",
                |m: &VideoBookmark| { &m.last_modified },
                |m: &mut VideoBookmark| { &mut m.last_modified },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                "hide_from_watch_history",
                |m: &VideoBookmark| { &m.hide_from_watch_history },
                |m: &mut VideoBookmark| { &mut m.hide_from_watch_history },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                "hide_from_library",
                |m: &VideoBookmark| { &m.hide_from_library },
                |m: &mut VideoBookmark| { &mut m.hide_from_library },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<VideoBookmark>(
                "VideoBookmark",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static VideoBookmark {
        static instance: ::protobuf::rt::LazyV2<VideoBookmark> = ::protobuf::rt::LazyV2::INIT;
        instance.get(VideoBookmark::new)
    }
}

impl ::protobuf::Clear for VideoBookmark {
    fn clear(&mut self) {
        self.app_id = ::std::option::Option::None;
        self.playback_position_in_seconds = ::std::option::Option::None;
        self.video_track_id = ::std::option::Option::None;
        self.audio_track_id = ::std::option::Option::None;
        self.timedtext_track_id = ::std::option::Option::None;
        self.last_modified = ::std::option::Option::None;
        self.hide_from_watch_history = ::std::option::Option::None;
        self.hide_from_library = ::std::option::Option::None;
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for VideoBookmark {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for VideoBookmark {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct CVideo_SetVideoBookmark_Notification {
    // message fields
    pub bookmarks: ::protobuf::RepeatedField<VideoBookmark>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CVideo_SetVideoBookmark_Notification {
    fn default() -> &'a CVideo_SetVideoBookmark_Notification {
        <CVideo_SetVideoBookmark_Notification as ::protobuf::Message>::default_instance()
    }
}

impl CVideo_SetVideoBookmark_Notification {
    pub fn new() -> CVideo_SetVideoBookmark_Notification {
        ::std::default::Default::default()
    }

    // repeated .VideoBookmark bookmarks = 1;


    pub fn get_bookmarks(&self) -> &[VideoBookmark] {
        &self.bookmarks
    }
    pub fn clear_bookmarks(&mut self) {
        self.bookmarks.clear();
    }

    // Param is passed by value, moved
    pub fn set_bookmarks(&mut self, v: ::protobuf::RepeatedField<VideoBookmark>) {
        self.bookmarks = v;
    }

    // Mutable pointer to the field.
    pub fn mut_bookmarks(&mut self) -> &mut ::protobuf::RepeatedField<VideoBookmark> {
        &mut self.bookmarks
    }

    // Take field
    pub fn take_bookmarks(&mut self) -> ::protobuf::RepeatedField<VideoBookmark> {
        ::std::mem::replace(&mut self.bookmarks, ::protobuf::RepeatedField::new())
    }
}

impl ::protobuf::Message for CVideo_SetVideoBookmark_Notification {
    fn is_initialized(&self) -> bool {
        for v in &self.bookmarks {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.bookmarks)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        for value in &self.bookmarks {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        for v in &self.bookmarks {
            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CVideo_SetVideoBookmark_Notification {
        CVideo_SetVideoBookmark_Notification::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<VideoBookmark>>(
                "bookmarks",
                |m: &CVideo_SetVideoBookmark_Notification| { &m.bookmarks },
                |m: &mut CVideo_SetVideoBookmark_Notification| { &mut m.bookmarks },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CVideo_SetVideoBookmark_Notification>(
                "CVideo_SetVideoBookmark_Notification",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CVideo_SetVideoBookmark_Notification {
        static instance: ::protobuf::rt::LazyV2<CVideo_SetVideoBookmark_Notification> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CVideo_SetVideoBookmark_Notification::new)
    }
}

impl ::protobuf::Clear for CVideo_SetVideoBookmark_Notification {
    fn clear(&mut self) {
        self.bookmarks.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CVideo_SetVideoBookmark_Notification {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CVideo_SetVideoBookmark_Notification {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct CVideo_GetVideoBookmarks_Request {
    // message fields
    pub appids: ::std::vec::Vec<u32>,
    updated_since: ::std::option::Option<u32>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CVideo_GetVideoBookmarks_Request {
    fn default() -> &'a CVideo_GetVideoBookmarks_Request {
        <CVideo_GetVideoBookmarks_Request as ::protobuf::Message>::default_instance()
    }
}

impl CVideo_GetVideoBookmarks_Request {
    pub fn new() -> CVideo_GetVideoBookmarks_Request {
        ::std::default::Default::default()
    }

    // repeated uint32 appids = 1;


    pub fn get_appids(&self) -> &[u32] {
        &self.appids
    }
    pub fn clear_appids(&mut self) {
        self.appids.clear();
    }

    // Param is passed by value, moved
    pub fn set_appids(&mut self, v: ::std::vec::Vec<u32>) {
        self.appids = v;
    }

    // Mutable pointer to the field.
    pub fn mut_appids(&mut self) -> &mut ::std::vec::Vec<u32> {
        &mut self.appids
    }

    // Take field
    pub fn take_appids(&mut self) -> ::std::vec::Vec<u32> {
        ::std::mem::replace(&mut self.appids, ::std::vec::Vec::new())
    }

    // optional uint32 updated_since = 2;


    pub fn get_updated_since(&self) -> u32 {
        self.updated_since.unwrap_or(0)
    }
    pub fn clear_updated_since(&mut self) {
        self.updated_since = ::std::option::Option::None;
    }

    pub fn has_updated_since(&self) -> bool {
        self.updated_since.is_some()
    }

    // Param is passed by value, moved
    pub fn set_updated_since(&mut self, v: u32) {
        self.updated_since = ::std::option::Option::Some(v);
    }
}

impl ::protobuf::Message for CVideo_GetVideoBookmarks_Request {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_repeated_uint32_into(wire_type, is, &mut self.appids)?;
                },
                2 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.updated_since = ::std::option::Option::Some(tmp);
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        for value in &self.appids {
            my_size += ::protobuf::rt::value_size(1, *value, ::protobuf::wire_format::WireTypeVarint);
        };
        if let Some(v) = self.updated_since {
            my_size += ::protobuf::rt::value_size(2, v, ::protobuf::wire_format::WireTypeVarint);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        for v in &self.appids {
            os.write_uint32(1, *v)?;
        };
        if let Some(v) = self.updated_since {
            os.write_uint32(2, v)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CVideo_GetVideoBookmarks_Request {
        CVideo_GetVideoBookmarks_Request::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "appids",
                |m: &CVideo_GetVideoBookmarks_Request| { &m.appids },
                |m: &mut CVideo_GetVideoBookmarks_Request| { &mut m.appids },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "updated_since",
                |m: &CVideo_GetVideoBookmarks_Request| { &m.updated_since },
                |m: &mut CVideo_GetVideoBookmarks_Request| { &mut m.updated_since },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CVideo_GetVideoBookmarks_Request>(
                "CVideo_GetVideoBookmarks_Request",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CVideo_GetVideoBookmarks_Request {
        static instance: ::protobuf::rt::LazyV2<CVideo_GetVideoBookmarks_Request> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CVideo_GetVideoBookmarks_Request::new)
    }
}

impl ::protobuf::Clear for CVideo_GetVideoBookmarks_Request {
    fn clear(&mut self) {
        self.appids.clear();
        self.updated_since = ::std::option::Option::None;
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CVideo_GetVideoBookmarks_Request {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CVideo_GetVideoBookmarks_Request {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct CVideo_GetVideoBookmarks_Response {
    // message fields
    pub bookmarks: ::protobuf::RepeatedField<VideoBookmark>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CVideo_GetVideoBookmarks_Response {
    fn default() -> &'a CVideo_GetVideoBookmarks_Response {
        <CVideo_GetVideoBookmarks_Response as ::protobuf::Message>::default_instance()
    }
}

impl CVideo_GetVideoBookmarks_Response {
    pub fn new() -> CVideo_GetVideoBookmarks_Response {
        ::std::default::Default::default()
    }

    // repeated .VideoBookmark bookmarks = 1;


    pub fn get_bookmarks(&self) -> &[VideoBookmark] {
        &self.bookmarks
    }
    pub fn clear_bookmarks(&mut self) {
        self.bookmarks.clear();
    }

    // Param is passed by value, moved
    pub fn set_bookmarks(&mut self, v: ::protobuf::RepeatedField<VideoBookmark>) {
        self.bookmarks = v;
    }

    // Mutable pointer to the field.
    pub fn mut_bookmarks(&mut self) -> &mut ::protobuf::RepeatedField<VideoBookmark> {
        &mut self.bookmarks
    }

    // Take field
    pub fn take_bookmarks(&mut self) -> ::protobuf::RepeatedField<VideoBookmark> {
        ::std::mem::replace(&mut self.bookmarks, ::protobuf::RepeatedField::new())
    }
}

impl ::protobuf::Message for CVideo_GetVideoBookmarks_Response {
    fn is_initialized(&self) -> bool {
        for v in &self.bookmarks {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.bookmarks)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        for value in &self.bookmarks {
            let len = value.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        for v in &self.bookmarks {
            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CVideo_GetVideoBookmarks_Response {
        CVideo_GetVideoBookmarks_Response::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<VideoBookmark>>(
                "bookmarks",
                |m: &CVideo_GetVideoBookmarks_Response| { &m.bookmarks },
                |m: &mut CVideo_GetVideoBookmarks_Response| { &mut m.bookmarks },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CVideo_GetVideoBookmarks_Response>(
                "CVideo_GetVideoBookmarks_Response",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CVideo_GetVideoBookmarks_Response {
        static instance: ::protobuf::rt::LazyV2<CVideo_GetVideoBookmarks_Response> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CVideo_GetVideoBookmarks_Response::new)
    }
}

impl ::protobuf::Clear for CVideo_GetVideoBookmarks_Response {
    fn clear(&mut self) {
        self.bookmarks.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CVideo_GetVideoBookmarks_Response {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CVideo_GetVideoBookmarks_Response {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct CVideo_UnlockedH264_Notification {
    // message fields
    encryption_key: ::protobuf::SingularField<::std::vec::Vec<u8>>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CVideo_UnlockedH264_Notification {
    fn default() -> &'a CVideo_UnlockedH264_Notification {
        <CVideo_UnlockedH264_Notification as ::protobuf::Message>::default_instance()
    }
}

impl CVideo_UnlockedH264_Notification {
    pub fn new() -> CVideo_UnlockedH264_Notification {
        ::std::default::Default::default()
    }

    // optional bytes encryption_key = 1;


    pub fn get_encryption_key(&self) -> &[u8] {
        match self.encryption_key.as_ref() {
            Some(v) => &v,
            None => &[],
        }
    }
    pub fn clear_encryption_key(&mut self) {
        self.encryption_key.clear();
    }

    pub fn has_encryption_key(&self) -> bool {
        self.encryption_key.is_some()
    }

    // Param is passed by value, moved
    pub fn set_encryption_key(&mut self, v: ::std::vec::Vec<u8>) {
        self.encryption_key = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_encryption_key(&mut self) -> &mut ::std::vec::Vec<u8> {
        if self.encryption_key.is_none() {
            self.encryption_key.set_default();
        }
        self.encryption_key.as_mut().unwrap()
    }

    // Take field
    pub fn take_encryption_key(&mut self) -> ::std::vec::Vec<u8> {
        self.encryption_key.take().unwrap_or_else(|| ::std::vec::Vec::new())
    }
}

impl ::protobuf::Message for CVideo_UnlockedH264_Notification {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_singular_bytes_into(wire_type, is, &mut self.encryption_key)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(ref v) = self.encryption_key.as_ref() {
            my_size += ::protobuf::rt::bytes_size(1, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(ref v) = self.encryption_key.as_ref() {
            os.write_bytes(1, &v)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CVideo_UnlockedH264_Notification {
        CVideo_UnlockedH264_Notification::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
                "encryption_key",
                |m: &CVideo_UnlockedH264_Notification| { &m.encryption_key },
                |m: &mut CVideo_UnlockedH264_Notification| { &mut m.encryption_key },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CVideo_UnlockedH264_Notification>(
                "CVideo_UnlockedH264_Notification",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CVideo_UnlockedH264_Notification {
        static instance: ::protobuf::rt::LazyV2<CVideo_UnlockedH264_Notification> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CVideo_UnlockedH264_Notification::new)
    }
}

impl ::protobuf::Clear for CVideo_UnlockedH264_Notification {
    fn clear(&mut self) {
        self.encryption_key.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CVideo_UnlockedH264_Notification {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CVideo_UnlockedH264_Notification {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct CFovasVideo_ClientGetOPFSettings_Request {
    // message fields
    app_id: ::std::option::Option<u32>,
    client_cellid: ::std::option::Option<u32>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CFovasVideo_ClientGetOPFSettings_Request {
    fn default() -> &'a CFovasVideo_ClientGetOPFSettings_Request {
        <CFovasVideo_ClientGetOPFSettings_Request as ::protobuf::Message>::default_instance()
    }
}

impl CFovasVideo_ClientGetOPFSettings_Request {
    pub fn new() -> CFovasVideo_ClientGetOPFSettings_Request {
        ::std::default::Default::default()
    }

    // optional uint32 app_id = 1;


    pub fn get_app_id(&self) -> u32 {
        self.app_id.unwrap_or(0)
    }
    pub fn clear_app_id(&mut self) {
        self.app_id = ::std::option::Option::None;
    }

    pub fn has_app_id(&self) -> bool {
        self.app_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_app_id(&mut self, v: u32) {
        self.app_id = ::std::option::Option::Some(v);
    }

    // optional uint32 client_cellid = 2;


    pub fn get_client_cellid(&self) -> u32 {
        self.client_cellid.unwrap_or(0)
    }
    pub fn clear_client_cellid(&mut self) {
        self.client_cellid = ::std::option::Option::None;
    }

    pub fn has_client_cellid(&self) -> bool {
        self.client_cellid.is_some()
    }

    // Param is passed by value, moved
    pub fn set_client_cellid(&mut self, v: u32) {
        self.client_cellid = ::std::option::Option::Some(v);
    }
}

impl ::protobuf::Message for CFovasVideo_ClientGetOPFSettings_Request {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.app_id = ::std::option::Option::Some(tmp);
                },
                2 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.client_cellid = ::std::option::Option::Some(tmp);
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(v) = self.app_id {
            my_size += ::protobuf::rt::value_size(1, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(v) = self.client_cellid {
            my_size += ::protobuf::rt::value_size(2, v, ::protobuf::wire_format::WireTypeVarint);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(v) = self.app_id {
            os.write_uint32(1, v)?;
        }
        if let Some(v) = self.client_cellid {
            os.write_uint32(2, v)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CFovasVideo_ClientGetOPFSettings_Request {
        CFovasVideo_ClientGetOPFSettings_Request::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "app_id",
                |m: &CFovasVideo_ClientGetOPFSettings_Request| { &m.app_id },
                |m: &mut CFovasVideo_ClientGetOPFSettings_Request| { &mut m.app_id },
            ));
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "client_cellid",
                |m: &CFovasVideo_ClientGetOPFSettings_Request| { &m.client_cellid },
                |m: &mut CFovasVideo_ClientGetOPFSettings_Request| { &mut m.client_cellid },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CFovasVideo_ClientGetOPFSettings_Request>(
                "CFovasVideo_ClientGetOPFSettings_Request",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CFovasVideo_ClientGetOPFSettings_Request {
        static instance: ::protobuf::rt::LazyV2<CFovasVideo_ClientGetOPFSettings_Request> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CFovasVideo_ClientGetOPFSettings_Request::new)
    }
}

impl ::protobuf::Clear for CFovasVideo_ClientGetOPFSettings_Request {
    fn clear(&mut self) {
        self.app_id = ::std::option::Option::None;
        self.client_cellid = ::std::option::Option::None;
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CFovasVideo_ClientGetOPFSettings_Request {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CFovasVideo_ClientGetOPFSettings_Request {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct CFovasVideo_ClientGetOPFSettings_Response {
    // message fields
    app_id: ::std::option::Option<u32>,
    opf_settings: ::protobuf::SingularField<::std::string::String>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a CFovasVideo_ClientGetOPFSettings_Response {
    fn default() -> &'a CFovasVideo_ClientGetOPFSettings_Response {
        <CFovasVideo_ClientGetOPFSettings_Response as ::protobuf::Message>::default_instance()
    }
}

impl CFovasVideo_ClientGetOPFSettings_Response {
    pub fn new() -> CFovasVideo_ClientGetOPFSettings_Response {
        ::std::default::Default::default()
    }

    // optional uint32 app_id = 1;


    pub fn get_app_id(&self) -> u32 {
        self.app_id.unwrap_or(0)
    }
    pub fn clear_app_id(&mut self) {
        self.app_id = ::std::option::Option::None;
    }

    pub fn has_app_id(&self) -> bool {
        self.app_id.is_some()
    }

    // Param is passed by value, moved
    pub fn set_app_id(&mut self, v: u32) {
        self.app_id = ::std::option::Option::Some(v);
    }

    // optional string opf_settings = 2;


    pub fn get_opf_settings(&self) -> &str {
        match self.opf_settings.as_ref() {
            Some(v) => &v,
            None => "",
        }
    }
    pub fn clear_opf_settings(&mut self) {
        self.opf_settings.clear();
    }

    pub fn has_opf_settings(&self) -> bool {
        self.opf_settings.is_some()
    }

    // Param is passed by value, moved
    pub fn set_opf_settings(&mut self, v: ::std::string::String) {
        self.opf_settings = ::protobuf::SingularField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_opf_settings(&mut self) -> &mut ::std::string::String {
        if self.opf_settings.is_none() {
            self.opf_settings.set_default();
        }
        self.opf_settings.as_mut().unwrap()
    }

    // Take field
    pub fn take_opf_settings(&mut self) -> ::std::string::String {
        self.opf_settings.take().unwrap_or_else(|| ::std::string::String::new())
    }
}

impl ::protobuf::Message for CFovasVideo_ClientGetOPFSettings_Response {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_uint32()?;
                    self.app_id = ::std::option::Option::Some(tmp);
                },
                2 => {
                    ::protobuf::rt::read_singular_string_into(wire_type, is, &mut self.opf_settings)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if let Some(v) = self.app_id {
            my_size += ::protobuf::rt::value_size(1, v, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(ref v) = self.opf_settings.as_ref() {
            my_size += ::protobuf::rt::string_size(2, &v);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
        if let Some(v) = self.app_id {
            os.write_uint32(1, v)?;
        }
        if let Some(ref v) = self.opf_settings.as_ref() {
            os.write_string(2, &v)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> CFovasVideo_ClientGetOPFSettings_Response {
        CFovasVideo_ClientGetOPFSettings_Response::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
        descriptor.get(|| {
            let mut fields = ::std::vec::Vec::new();
            fields.push(::protobuf::reflect::accessor::make_option_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
                "app_id",
                |m: &CFovasVideo_ClientGetOPFSettings_Response| { &m.app_id },
                |m: &mut CFovasVideo_ClientGetOPFSettings_Response| { &mut m.app_id },
            ));
            fields.push(::protobuf::reflect::accessor::make_singular_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                "opf_settings",
                |m: &CFovasVideo_ClientGetOPFSettings_Response| { &m.opf_settings },
                |m: &mut CFovasVideo_ClientGetOPFSettings_Response| { &mut m.opf_settings },
            ));
            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CFovasVideo_ClientGetOPFSettings_Response>(
                "CFovasVideo_ClientGetOPFSettings_Response",
                fields,
                file_descriptor_proto()
            )
        })
    }

    fn default_instance() -> &'static CFovasVideo_ClientGetOPFSettings_Response {
        static instance: ::protobuf::rt::LazyV2<CFovasVideo_ClientGetOPFSettings_Response> = ::protobuf::rt::LazyV2::INIT;
        instance.get(CFovasVideo_ClientGetOPFSettings_Response::new)
    }
}

impl ::protobuf::Clear for CFovasVideo_ClientGetOPFSettings_Response {
    fn clear(&mut self) {
        self.app_id = ::std::option::Option::None;
        self.opf_settings.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for CFovasVideo_ClientGetOPFSettings_Response {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for CFovasVideo_ClientGetOPFSettings_Response {
    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
        ::protobuf::reflect::ReflectValueRef::Message(self)
    }
}

static file_descriptor_proto_data: &'static [u8] = b"\
    \n%steammessages_video.steamclient.proto\x1a,steammessages_unified_base.\
    steamclient.proto\"\x98\x01\n\x20CVideo_ClientGetVideoURL_Request\x12'\n\
    \x08video_id\x18\x01\x20\x01(\x04R\x07videoIdB\x0c\x82\xb5\x18\x08Video\
    \x20ID\x12K\n\rclient_cellid\x18\x02\x20\x01(\rR\x0cclientCellidB&\x82\
    \xb5\x18\"Cell\x20ID\x20of\x20client,\x20zero\x20if\x20unknown\"\x85\x01\
    \n!CVideo_ClientGetVideoURL_Response\x12'\n\x08video_id\x18\x01\x20\x01(\
    \x04R\x07videoIdB\x0c\x82\xb5\x18\x08Video\x20ID\x127\n\tvideo_url\x18\
    \x02\x20\x01(\tR\x08videoUrlB\x1a\x82\xb5\x18\x16URL\x20for\x20video\x20\
    manifest\"\xaf\x05\n\rVideoBookmark\x12!\n\x06app_id\x18\x01\x20\x01(\rR\
    \x05appIdB\n\x82\xb5\x18\x06App\x20ID\x12x\n\x1cplayback_position_in_sec\
    onds\x18\x02\x20\x01(\rR\x19playbackPositionInSecondsB7\x82\xb5\x183How\
    \x20many\x20seconds\x20into\x20the\x20video\x20the\x20bookmark\x20is\x20\
    for\x12=\n\x0evideo_track_id\x18\x03\x20\x01(\x04R\x0cvideoTrackIdB\x17\
    \x82\xb5\x18\x13video\x20track\x20choice.\x12=\n\x0eaudio_track_id\x18\
    \x04\x20\x01(\x04R\x0caudioTrackIdB\x17\x82\xb5\x18\x13audio\x20track\
    \x20choice.\x12U\n\x12timedtext_track_id\x18\x05\x20\x01(\x04R\x10timedt\
    extTrackIdB'\x82\xb5\x18#timedtimed\x20or\x20subtitle\x20track\x20choice\
    \x12]\n\rlast_modified\x18\x06\x20\x01(\rR\x0clastModifiedB8\x82\xb5\x18\
    4when\x20we\x20recorded\x20it\x20was\x20last\x20modified.\x20Not\x20sett\
    able.\x12k\n\x17hide_from_watch_history\x18\x07\x20\x01(\x08:\x05falseR\
    \x14hideFromWatchHistoryB-\x82\xb5\x18)Whether\x20I\x20want\x20to\x20sho\
    w\x20this\x20in\x20my\x20history\x12`\n\x11hide_from_library\x18\x08\x20\
    \x01(\x08:\x05falseR\x0fhideFromLibraryB-\x82\xb5\x18)Whether\x20I\x20wa\
    nt\x20to\x20show\x20this\x20in\x20my\x20library\"}\n$CVideo_SetVideoBook\
    mark_Notification\x12U\n\tbookmarks\x18\x01\x20\x03(\x0b2\x0e.VideoBookm\
    arkR\tbookmarksB'\x82\xb5\x18#list\x20of\x20bookmarks\x20we\x20want\x20t\
    o\x20store.\"\x98\x02\n\x20CVideo_GetVideoBookmarks_Request\x12g\n\x06ap\
    pids\x18\x01\x20\x03(\rR\x06appidsBO\x82\xb5\x18KList\x20of\x20App\x20ID\
    s\x20to\x20grab\x20bookmarks\x20for.\x20Can\x20be\x20empty\x20if\x20usin\
    g\x20updated_since.\x12\x8a\x01\n\rupdated_since\x18\x02\x20\x01(\rR\x0c\
    updatedSinceBe\x82\xb5\x18aOnly\x20return\x20results\x20after\x20time.\
    \x20Min\x20value\x20is\x201.\x20(seconds\x20since\x20epoch\x20January\
    \x201st,\x201970\x20Unix\x20Time)\"\x80\x01\n!CVideo_GetVideoBookmarks_R\
    esponse\x12[\n\tbookmarks\x18\x01\x20\x03(\x0b2\x0e.VideoBookmarkR\tbook\
    marksB-\x82\xb5\x18)List\x20of\x20bookmarks\x20we\x20found.\x20Can\x20be\
    \x20empty.\"I\n\x20CVideo_UnlockedH264_Notification\x12%\n\x0eencryption\
    _key\x18\x01\x20\x01(\x0cR\rencryptionKey\"\x9a\x01\n(CFovasVideo_Client\
    GetOPFSettings_Request\x12!\n\x06app_id\x18\x01\x20\x01(\rR\x05appIdB\n\
    \x82\xb5\x18\x06App\x20ID\x12K\n\rclient_cellid\x18\x02\x20\x01(\rR\x0cc\
    lientCellidB&\x82\xb5\x18\"Cell\x20ID\x20of\x20client,\x20zero\x20if\x20\
    unknown\"\x90\x01\n)CFovasVideo_ClientGetOPFSettings_Response\x12!\n\x06\
    app_id\x18\x01\x20\x01(\rR\x05appIdB\n\x82\xb5\x18\x06App\x20ID\x12@\n\
    \x0copf_settings\x18\x02\x20\x01(\tR\x0bopfSettingsB\x1d\x82\xb5\x18\x19\
    JSON\x20blob\x20of\x20OPF\x20Settings2\xb5\x04\n\x05Video\x12\x8e\x01\n\
    \x11ClientGetVideoURL\x12!.CVideo_ClientGetVideoURL_Request\x1a\".CVideo\
    _ClientGetVideoURL_Response\"2\x82\xb5\x18.Get\x20the\x20initial\x20URL\
    \x20to\x20begin\x20streaming\x20a\x20video\x12\xc1\x01\n\x10SetVideoBook\
    mark\x12%.CVideo_SetVideoBookmark_Notification\x1a\x0b.NoResponse\"y\x82\
    \xb5\x18uBookmarks\x20the\x20locations\x20in\x20the\x20video\x20the\x20u\
    ser\x20has\x20reached.\x20As\x20as\x20record\x20playback\x20settings\x20\
    per\x20video.\x20Fire\x20and\x20forget.\x12\xc3\x01\n\x11GetVideoBookmar\
    ks\x12!.CVideo_GetVideoBookmarks_Request\x1a\".CVideo_GetVideoBookmarks_\
    Response\"g\x82\xb5\x18cReturns\x20the\x20video\x20bookmarks\x20location\
    s\x20for\x20the\x20specific\x20videos.\x20Includes\x20playback\x20settin\
    gs\x20per\x20video\x1a\x11\x82\xb5\x18\rVideo\x20methods2\x9e\x01\n\x0bV\
    ideoClient\x12\x88\x01\n\x12NotifyUnlockedH264\x12!.CVideo_UnlockedH264_\
    Notification\x1a\x0b.NoResponse\"B\x82\xb5\x18>Notification\x20from\x20s\
    erver\x20to\x20client\x20that\x20h264\x20has\x20been\x20unlocked\x1a\x04\
    \xc0\xb5\x18\x022\xf3\x01\n\nFovasVideo\x12\xc3\x01\n\x14ClientGetOPFSet\
    tings\x12).CFovasVideo_ClientGetOPFSettings_Request\x1a*.CFovasVideo_Cli\
    entGetOPFSettings_Response\"T\x82\xb5\x18PRetrieve\x20the\x20OPF\x20sett\
    ings\x20JSON\x20blob.\x20Available\x20via\x20the\x20Client\x20for\x20360\
    \x20Player\x20App\x1a\x1f\x82\xb5\x18\x1bFovas\x20Video\x20Service\x20Me\
    thodsB\x03\x80\x01\x01J\x8e\x17\n\x06\x12\x04\0\0R\x01\n\t\n\x02\x03\0\
    \x12\x03\0\06\n\x08\n\x01\x08\x12\x03\x02\0\"\n\t\n\x02\x08\x10\x12\x03\
    \x02\0\"\n\n\n\x02\x04\0\x12\x04\x04\0\x07\x01\n\n\n\x03\x04\0\x01\x12\
    \x03\x04\x08(\n\x0b\n\x04\x04\0\x02\0\x12\x03\x05\x08B\n\x0c\n\x05\x04\0\
    \x02\0\x04\x12\x03\x05\x08\x10\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03\x05\
    \x11\x17\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x05\x18\x20\n\x0c\n\x05\x04\
    \0\x02\0\x03\x12\x03\x05#$\n\x0c\n\x05\x04\0\x02\0\x08\x12\x03\x05%A\n\
    \x0f\n\x08\x04\0\x02\0\x08\xd0\x86\x03\x12\x03\x05&@\n\x0b\n\x04\x04\0\
    \x02\x01\x12\x03\x06\x08a\n\x0c\n\x05\x04\0\x02\x01\x04\x12\x03\x06\x08\
    \x10\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03\x06\x11\x17\n\x0c\n\x05\x04\0\
    \x02\x01\x01\x12\x03\x06\x18%\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\x06(\
    )\n\x0c\n\x05\x04\0\x02\x01\x08\x12\x03\x06*`\n\x0f\n\x08\x04\0\x02\x01\
    \x08\xd0\x86\x03\x12\x03\x06+_\n\n\n\x02\x04\x01\x12\x04\t\0\x0c\x01\n\n\
    \n\x03\x04\x01\x01\x12\x03\t\x08)\n\x0b\n\x04\x04\x01\x02\0\x12\x03\n\
    \x08B\n\x0c\n\x05\x04\x01\x02\0\x04\x12\x03\n\x08\x10\n\x0c\n\x05\x04\
    \x01\x02\0\x05\x12\x03\n\x11\x17\n\x0c\n\x05\x04\x01\x02\0\x01\x12\x03\n\
    \x18\x20\n\x0c\n\x05\x04\x01\x02\0\x03\x12\x03\n#$\n\x0c\n\x05\x04\x01\
    \x02\0\x08\x12\x03\n%A\n\x0f\n\x08\x04\x01\x02\0\x08\xd0\x86\x03\x12\x03\
    \n&@\n\x0b\n\x04\x04\x01\x02\x01\x12\x03\x0b\x08Q\n\x0c\n\x05\x04\x01\
    \x02\x01\x04\x12\x03\x0b\x08\x10\n\x0c\n\x05\x04\x01\x02\x01\x05\x12\x03\
    \x0b\x11\x17\n\x0c\n\x05\x04\x01\x02\x01\x01\x12\x03\x0b\x18!\n\x0c\n\
    \x05\x04\x01\x02\x01\x03\x12\x03\x0b$%\n\x0c\n\x05\x04\x01\x02\x01\x08\
    \x12\x03\x0b&P\n\x0f\n\x08\x04\x01\x02\x01\x08\xd0\x86\x03\x12\x03\x0b'O\
    \n\n\n\x02\x04\x02\x12\x04\x0e\0\x17\x01\n\n\n\x03\x04\x02\x01\x12\x03\
    \x0e\x08\x15\n\x0b\n\x04\x04\x02\x02\0\x12\x03\x0f\x08>\n\x0c\n\x05\x04\
    \x02\x02\0\x04\x12\x03\x0f\x08\x10\n\x0c\n\x05\x04\x02\x02\0\x05\x12\x03\
    \x0f\x11\x17\n\x0c\n\x05\x04\x02\x02\0\x01\x12\x03\x0f\x18\x1e\n\x0c\n\
    \x05\x04\x02\x02\0\x03\x12\x03\x0f!\"\n\x0c\n\x05\x04\x02\x02\0\x08\x12\
    \x03\x0f#=\n\x0f\n\x08\x04\x02\x02\0\x08\xd0\x86\x03\x12\x03\x0f$<\n\x0c\
    \n\x04\x04\x02\x02\x01\x12\x04\x10\x08\x81\x01\n\x0c\n\x05\x04\x02\x02\
    \x01\x04\x12\x03\x10\x08\x10\n\x0c\n\x05\x04\x02\x02\x01\x05\x12\x03\x10\
    \x11\x17\n\x0c\n\x05\x04\x02\x02\x01\x01\x12\x03\x10\x184\n\x0c\n\x05\
    \x04\x02\x02\x01\x03\x12\x03\x1078\n\r\n\x05\x04\x02\x02\x01\x08\x12\x04\
    \x109\x80\x01\n\x0f\n\x08\x04\x02\x02\x01\x08\xd0\x86\x03\x12\x03\x10:\
    \x7f\n\x0b\n\x04\x04\x02\x02\x02\x12\x03\x11\x08S\n\x0c\n\x05\x04\x02\
    \x02\x02\x04\x12\x03\x11\x08\x10\n\x0c\n\x05\x04\x02\x02\x02\x05\x12\x03\
    \x11\x11\x17\n\x0c\n\x05\x04\x02\x02\x02\x01\x12\x03\x11\x18&\n\x0c\n\
    \x05\x04\x02\x02\x02\x03\x12\x03\x11)*\n\x0c\n\x05\x04\x02\x02\x02\x08\
    \x12\x03\x11+R\n\x0f\n\x08\x04\x02\x02\x02\x08\xd0\x86\x03\x12\x03\x11,Q\
    \n\x0b\n\x04\x04\x02\x02\x03\x12\x03\x12\x08S\n\x0c\n\x05\x04\x02\x02\
    \x03\x04\x12\x03\x12\x08\x10\n\x0c\n\x05\x04\x02\x02\x03\x05\x12\x03\x12\
    \x11\x17\n\x0c\n\x05\x04\x02\x02\x03\x01\x12\x03\x12\x18&\n\x0c\n\x05\
    \x04\x02\x02\x03\x03\x12\x03\x12)*\n\x0c\n\x05\x04\x02\x02\x03\x08\x12\
    \x03\x12+R\n\x0f\n\x08\x04\x02\x02\x03\x08\xd0\x86\x03\x12\x03\x12,Q\n\
    \x0b\n\x04\x04\x02\x02\x04\x12\x03\x13\x08g\n\x0c\n\x05\x04\x02\x02\x04\
    \x04\x12\x03\x13\x08\x10\n\x0c\n\x05\x04\x02\x02\x04\x05\x12\x03\x13\x11\
    \x17\n\x0c\n\x05\x04\x02\x02\x04\x01\x12\x03\x13\x18*\n\x0c\n\x05\x04\
    \x02\x02\x04\x03\x12\x03\x13-.\n\x0c\n\x05\x04\x02\x02\x04\x08\x12\x03\
    \x13/f\n\x0f\n\x08\x04\x02\x02\x04\x08\xd0\x86\x03\x12\x03\x130e\n\x0b\n\
    \x04\x04\x02\x02\x05\x12\x03\x14\x08s\n\x0c\n\x05\x04\x02\x02\x05\x04\
    \x12\x03\x14\x08\x10\n\x0c\n\x05\x04\x02\x02\x05\x05\x12\x03\x14\x11\x17\
    \n\x0c\n\x05\x04\x02\x02\x05\x01\x12\x03\x14\x18%\n\x0c\n\x05\x04\x02\
    \x02\x05\x03\x12\x03\x14()\n\x0c\n\x05\x04\x02\x02\x05\x08\x12\x03\x14*r\
    \n\x0f\n\x08\x04\x02\x02\x05\x08\xd0\x86\x03\x12\x03\x14+q\n\x0c\n\x04\
    \x04\x02\x02\x06\x12\x04\x15\x08\x81\x01\n\x0c\n\x05\x04\x02\x02\x06\x04\
    \x12\x03\x15\x08\x10\n\x0c\n\x05\x04\x02\x02\x06\x05\x12\x03\x15\x11\x15\
    \n\x0c\n\x05\x04\x02\x02\x06\x01\x12\x03\x15\x16-\n\x0c\n\x05\x04\x02\
    \x02\x06\x03\x12\x03\x1501\n\r\n\x05\x04\x02\x02\x06\x08\x12\x04\x152\
    \x80\x01\n\x0c\n\x05\x04\x02\x02\x06\x07\x12\x03\x15=B\n\x0f\n\x08\x04\
    \x02\x02\x06\x08\xd0\x86\x03\x12\x03\x15D\x7f\n\x0b\n\x04\x04\x02\x02\
    \x07\x12\x03\x16\x08{\n\x0c\n\x05\x04\x02\x02\x07\x04\x12\x03\x16\x08\
    \x10\n\x0c\n\x05\x04\x02\x02\x07\x05\x12\x03\x16\x11\x15\n\x0c\n\x05\x04\
    \x02\x02\x07\x01\x12\x03\x16\x16'\n\x0c\n\x05\x04\x02\x02\x07\x03\x12\
    \x03\x16*+\n\x0c\n\x05\x04\x02\x02\x07\x08\x12\x03\x16,z\n\x0c\n\x05\x04\
    \x02\x02\x07\x07\x12\x03\x167<\n\x0f\n\x08\x04\x02\x02\x07\x08\xd0\x86\
    \x03\x12\x03\x16>y\n\n\n\x02\x04\x03\x12\x04\x19\0\x1b\x01\n\n\n\x03\x04\
    \x03\x01\x12\x03\x19\x08,\n\x0b\n\x04\x04\x03\x02\0\x12\x03\x1a\x08f\n\
    \x0c\n\x05\x04\x03\x02\0\x04\x12\x03\x1a\x08\x10\n\x0c\n\x05\x04\x03\x02\
    \0\x06\x12\x03\x1a\x11\x1f\n\x0c\n\x05\x04\x03\x02\0\x01\x12\x03\x1a\x20\
    )\n\x0c\n\x05\x04\x03\x02\0\x03\x12\x03\x1a,-\n\x0c\n\x05\x04\x03\x02\0\
    \x08\x12\x03\x1a.e\n\x0f\n\x08\x04\x03\x02\0\x08\xd0\x86\x03\x12\x03\x1a\
    /d\n\n\n\x02\x04\x04\x12\x04\x1d\0\x20\x01\n\n\n\x03\x04\x04\x01\x12\x03\
    \x1d\x08(\n\x0c\n\x04\x04\x04\x02\0\x12\x04\x1e\x08\x83\x01\n\x0c\n\x05\
    \x04\x04\x02\0\x04\x12\x03\x1e\x08\x10\n\x0c\n\x05\x04\x04\x02\0\x05\x12\
    \x03\x1e\x11\x17\n\x0c\n\x05\x04\x04\x02\0\x01\x12\x03\x1e\x18\x1e\n\x0c\
    \n\x05\x04\x04\x02\0\x03\x12\x03\x1e!\"\n\r\n\x05\x04\x04\x02\0\x08\x12\
    \x04\x1e#\x82\x01\n\x10\n\x08\x04\x04\x02\0\x08\xd0\x86\x03\x12\x04\x1e$\
    \x81\x01\n\x0c\n\x04\x04\x04\x02\x01\x12\x04\x1f\x08\xa0\x01\n\x0c\n\x05\
    \x04\x04\x02\x01\x04\x12\x03\x1f\x08\x10\n\x0c\n\x05\x04\x04\x02\x01\x05\
    \x12\x03\x1f\x11\x17\n\x0c\n\x05\x04\x04\x02\x01\x01\x12\x03\x1f\x18%\n\
    \x0c\n\x05\x04\x04\x02\x01\x03\x12\x03\x1f()\n\r\n\x05\x04\x04\x02\x01\
    \x08\x12\x04\x1f*\x9f\x01\n\x10\n\x08\x04\x04\x02\x01\x08\xd0\x86\x03\
    \x12\x04\x1f+\x9e\x01\n\n\n\x02\x04\x05\x12\x04\"\0$\x01\n\n\n\x03\x04\
    \x05\x01\x12\x03\"\x08)\n\x0b\n\x04\x04\x05\x02\0\x12\x03#\x08l\n\x0c\n\
    \x05\x04\x05\x02\0\x04\x12\x03#\x08\x10\n\x0c\n\x05\x04\x05\x02\0\x06\
    \x12\x03#\x11\x1f\n\x0c\n\x05\x04\x05\x02\0\x01\x12\x03#\x20)\n\x0c\n\
    \x05\x04\x05\x02\0\x03\x12\x03#,-\n\x0c\n\x05\x04\x05\x02\0\x08\x12\x03#\
    .k\n\x0f\n\x08\x04\x05\x02\0\x08\xd0\x86\x03\x12\x03#/j\n\n\n\x02\x04\
    \x06\x12\x04&\0(\x01\n\n\n\x03\x04\x06\x01\x12\x03&\x08(\n\x0b\n\x04\x04\
    \x06\x02\0\x12\x03'\x08*\n\x0c\n\x05\x04\x06\x02\0\x04\x12\x03'\x08\x10\
    \n\x0c\n\x05\x04\x06\x02\0\x05\x12\x03'\x11\x16\n\x0c\n\x05\x04\x06\x02\
    \0\x01\x12\x03'\x17%\n\x0c\n\x05\x04\x06\x02\0\x03\x12\x03'()\n\n\n\x02\
    \x04\x07\x12\x04*\0-\x01\n\n\n\x03\x04\x07\x01\x12\x03*\x080\n\x0b\n\x04\
    \x04\x07\x02\0\x12\x03+\x08>\n\x0c\n\x05\x04\x07\x02\0\x04\x12\x03+\x08\
    \x10\n\x0c\n\x05\x04\x07\x02\0\x05\x12\x03+\x11\x17\n\x0c\n\x05\x04\x07\
    \x02\0\x01\x12\x03+\x18\x1e\n\x0c\n\x05\x04\x07\x02\0\x03\x12\x03+!\"\n\
    \x0c\n\x05\x04\x07\x02\0\x08\x12\x03+#=\n\x0f\n\x08\x04\x07\x02\0\x08\
    \xd0\x86\x03\x12\x03+$<\n\x0b\n\x04\x04\x07\x02\x01\x12\x03,\x08a\n\x0c\
    \n\x05\x04\x07\x02\x01\x04\x12\x03,\x08\x10\n\x0c\n\x05\x04\x07\x02\x01\
    \x05\x12\x03,\x11\x17\n\x0c\n\x05\x04\x07\x02\x01\x01\x12\x03,\x18%\n\
    \x0c\n\x05\x04\x07\x02\x01\x03\x12\x03,()\n\x0c\n\x05\x04\x07\x02\x01\
    \x08\x12\x03,*`\n\x0f\n\x08\x04\x07\x02\x01\x08\xd0\x86\x03\x12\x03,+_\n\
    \n\n\x02\x04\x08\x12\x04/\02\x01\n\n\n\x03\x04\x08\x01\x12\x03/\x081\n\
    \x0b\n\x04\x04\x08\x02\0\x12\x030\x08>\n\x0c\n\x05\x04\x08\x02\0\x04\x12\
    \x030\x08\x10\n\x0c\n\x05\x04\x08\x02\0\x05\x12\x030\x11\x17\n\x0c\n\x05\
    \x04\x08\x02\0\x01\x12\x030\x18\x1e\n\x0c\n\x05\x04\x08\x02\0\x03\x12\
    \x030!\"\n\x0c\n\x05\x04\x08\x02\0\x08\x12\x030#=\n\x0f\n\x08\x04\x08\
    \x02\0\x08\xd0\x86\x03\x12\x030$<\n\x0b\n\x04\x04\x08\x02\x01\x12\x031\
    \x08W\n\x0c\n\x05\x04\x08\x02\x01\x04\x12\x031\x08\x10\n\x0c\n\x05\x04\
    \x08\x02\x01\x05\x12\x031\x11\x17\n\x0c\n\x05\x04\x08\x02\x01\x01\x12\
    \x031\x18$\n\x0c\n\x05\x04\x08\x02\x01\x03\x12\x031'(\n\x0c\n\x05\x04\
    \x08\x02\x01\x08\x12\x031)V\n\x0f\n\x08\x04\x08\x02\x01\x08\xd0\x86\x03\
    \x12\x031*U\n\n\n\x02\x06\0\x12\x044\0B\x01\n\n\n\x03\x06\0\x01\x12\x034\
    \x08\r\n\n\n\x03\x06\0\x03\x12\x035\x087\n\r\n\x06\x06\0\x03\xd0\x86\x03\
    \x12\x035\x087\n\x0c\n\x04\x06\0\x02\0\x12\x047\x089\t\n\x0c\n\x05\x06\0\
    \x02\0\x01\x12\x037\x0c\x1d\n\x0c\n\x05\x06\0\x02\0\x02\x12\x037\x1f@\n\
    \x0c\n\x05\x06\0\x02\0\x03\x12\x037Km\n\x0c\n\x05\x06\0\x02\0\x04\x12\
    \x038\x10_\n\x0f\n\x08\x06\0\x02\0\x04\xd0\x86\x03\x12\x038\x10_\n\x0c\n\
    \x04\x06\0\x02\x01\x12\x04;\x08=\t\n\x0c\n\x05\x06\0\x02\x01\x01\x12\x03\
    ;\x0c\x1c\n\x0c\n\x05\x06\0\x02\x01\x02\x12\x03;\x1eC\n\x0c\n\x05\x06\0\
    \x02\x01\x03\x12\x03;NY\n\r\n\x05\x06\0\x02\x01\x04\x12\x04<\x10\xa6\x01\
    \n\x10\n\x08\x06\0\x02\x01\x04\xd0\x86\x03\x12\x04<\x10\xa6\x01\n\x0c\n\
    \x04\x06\0\x02\x02\x12\x04?\x08A\t\n\x0c\n\x05\x06\0\x02\x02\x01\x12\x03\
    ?\x0c\x1d\n\x0c\n\x05\x06\0\x02\x02\x02\x12\x03?\x1f@\n\x0c\n\x05\x06\0\
    \x02\x02\x03\x12\x03?Km\n\r\n\x05\x06\0\x02\x02\x04\x12\x04@\x10\x94\x01\
    \n\x10\n\x08\x06\0\x02\x02\x04\xd0\x86\x03\x12\x04@\x10\x94\x01\n\n\n\
    \x02\x06\x01\x12\x04D\0J\x01\n\n\n\x03\x06\x01\x01\x12\x03D\x08\x13\n\n\
    \n\x03\x06\x01\x03\x12\x03E\x08K\n\r\n\x06\x06\x01\x03\xd8\x86\x03\x12\
    \x03E\x08K\n\x0c\n\x04\x06\x01\x02\0\x12\x04G\x08I\t\n\x0c\n\x05\x06\x01\
    \x02\0\x01\x12\x03G\x0c\x1e\n\x0c\n\x05\x06\x01\x02\0\x02\x12\x03G\x20A\
    \n\x0c\n\x05\x06\x01\x02\0\x03\x12\x03GLW\n\x0c\n\x05\x06\x01\x02\0\x04\
    \x12\x03H\x10o\n\x0f\n\x08\x06\x01\x02\0\x04\xd0\x86\x03\x12\x03H\x10o\n\
    \n\n\x02\x06\x02\x12\x04L\0R\x01\n\n\n\x03\x06\x02\x01\x12\x03L\x08\x12\
    \n\n\n\x03\x06\x02\x03\x12\x03M\x08E\n\r\n\x06\x06\x02\x03\xd0\x86\x03\
    \x12\x03M\x08E\n\x0c\n\x04\x06\x02\x02\0\x12\x04O\x08Q\t\n\x0c\n\x05\x06\
    \x02\x02\0\x01\x12\x03O\x0c\x20\n\x0c\n\x05\x06\x02\x02\0\x02\x12\x03O\"\
    K\n\r\n\x05\x06\x02\x02\0\x03\x12\x04OV\x80\x01\n\r\n\x05\x06\x02\x02\0\
    \x04\x12\x04P\x10\x81\x01\n\x10\n\x08\x06\x02\x02\0\x04\xd0\x86\x03\x12\
    \x04P\x10\x81\x01\
";

static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;

fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
}

pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
    file_descriptor_proto_lazy.get(|| {
        parse_descriptor_proto()
    })
}