// Code generated by gotdgen, DO NOT EDIT.

package tg

import (
	
	
	
	
	

	

	
	
	
	
)

// No-op definition for keeping imports.
var (
	_ = bin.Buffer{}
	_ = context.Background()
	_ = fmt.Stringer(nil)
	_ = strings.Builder{}
	_ = errors.Is
	_ = multierr.AppendInto
	_ = sort.Ints
	_ = tdp.Format
	_ = tgerr.Error{}
	_ = tdjson.Encoder{}
)

// UserFull represents TL type `userFull#b9b12c6c`.
// Extended user info
//
// See https://core.telegram.org/constructor/userFull for reference.
type UserFull struct {
	// Flags, see TL conditional fields¹
	//
	// Links:
	//  1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
	Flags bin.Fields
	// Whether you have blocked this user
	Blocked bool
	// Whether this user can make VoIP calls
	PhoneCallsAvailable bool
	// Whether this user's privacy settings allow you to call them
	PhoneCallsPrivate bool
	// Whether you can pin messages in the chat with this user, you can do this only for a
	// chat with yourself
	CanPinMessage bool
	// Whether scheduled messages¹ are available
	//
	// Links:
	//  1) https://core.telegram.org/api/scheduled-messages
	HasScheduled bool
	// Whether the user can receive video calls
	VideoCallsAvailable bool
	// Whether this user doesn't allow sending voice messages in a private chat with them
	VoiceMessagesForbidden bool
	// Whether the real-time chat translation popup¹ should be hidden.
	//
	// Links:
	//  1) https://core.telegram.org/api/translation
	TranslationsDisabled bool
	// Whether this user has some pinned stories¹.
	//
	// Links:
	//  1) https://core.telegram.org/api/stories#pinned-or-archived-stories
	StoriesPinnedAvailable bool
	// Whether we've blocked this user, preventing them from seeing our stories »¹.
	//
	// Links:
	//  1) https://core.telegram.org/api/block
	BlockedMyStoriesFrom bool
	// Whether the other user has chosen a custom wallpaper for us using messages
	// setChatWallPaper¹ and the for_both flag, see here »² for more info.
	//
	// Links:
	//  1) https://core.telegram.org/method/messages.setChatWallPaper
	//  2) https://core.telegram.org/api/wallpapers#installing-wallpapers-in-a-specific-chat
	WallpaperOverridden bool
	// User ID
	ID int64
	// Bio of the user
	//
	// Use SetAbout and GetAbout helpers.
	About string
	// Peer settings
	Settings PeerSettings
	// Personal profile photo, to be shown instead of profile_photo.
	//
	// Use SetPersonalPhoto and GetPersonalPhoto helpers.
	PersonalPhoto PhotoClass
	// Profile photo
	//
	// Use SetProfilePhoto and GetProfilePhoto helpers.
	ProfilePhoto PhotoClass
	// Fallback profile photo, displayed if no photo is present in profile_photo or
	// personal_photo, due to privacy settings.
	//
	// Use SetFallbackPhoto and GetFallbackPhoto helpers.
	FallbackPhoto PhotoClass
	// Notification settings
	NotifySettings PeerNotifySettings
	// For bots, info about the bot (bot commands, etc)
	//
	// Use SetBotInfo and GetBotInfo helpers.
	BotInfo BotInfo
	// Message ID of the last pinned message¹
	//
	// Links:
	//  1) https://core.telegram.org/api/pin
	//
	// Use SetPinnedMsgID and GetPinnedMsgID helpers.
	PinnedMsgID int
	// Chats in common with this user
	CommonChatsCount int
	// Peer folder ID, for more info click here¹
	//
	// Links:
	//  1) https://core.telegram.org/api/folders#peer-folders
	//
	// Use SetFolderID and GetFolderID helpers.
	FolderID int
	// Time To Live of all messages in this chat; once a message is this many seconds old, it
	// must be deleted.
	//
	// Use SetTTLPeriod and GetTTLPeriod helpers.
	TTLPeriod int
	// Emoji associated with chat theme
	//
	// Use SetThemeEmoticon and GetThemeEmoticon helpers.
	ThemeEmoticon string
	// Anonymized text to be shown instead of the user's name on forwarded messages
	//
	// Use SetPrivateForwardName and GetPrivateForwardName helpers.
	PrivateForwardName string
	// A suggested set of administrator rights¹ for the bot, to be shown when adding the bot
	// as admin to a group, see here for more info on how to handle them »².
	//
	// Links:
	//  1) https://core.telegram.org/api/rights#suggested-bot-rights
	//  2) https://core.telegram.org/api/rights#suggested-bot-rights
	//
	// Use SetBotGroupAdminRights and GetBotGroupAdminRights helpers.
	BotGroupAdminRights ChatAdminRights
	// A suggested set of administrator rights¹ for the bot, to be shown when adding the bot
	// as admin to a channel, see here for more info on how to handle them »².
	//
	// Links:
	//  1) https://core.telegram.org/api/rights#suggested-bot-rights
	//  2) https://core.telegram.org/api/rights#suggested-bot-rights
	//
	// Use SetBotBroadcastAdminRights and GetBotBroadcastAdminRights helpers.
	BotBroadcastAdminRights ChatAdminRights
	// Telegram Premium subscriptions gift options
	//
	// Use SetPremiumGifts and GetPremiumGifts helpers.
	PremiumGifts []PremiumGiftOption
	// Wallpaper¹ to use in the private chat with the user.
	//
	// Links:
	//  1) https://core.telegram.org/api/wallpapers
	//
	// Use SetWallpaper and GetWallpaper helpers.
	Wallpaper WallPaperClass
	// Active stories »¹
	//
	// Links:
	//  1) https://core.telegram.org/api/stories
	//
	// Use SetStories and GetStories helpers.
	Stories PeerStories
}

// UserFullTypeID is TL type id of UserFull.
const UserFullTypeID = 0xb9b12c6c

// Ensuring interfaces in compile-time for UserFull.
var (
	_ bin.Encoder     = &UserFull{}
	_ bin.Decoder     = &UserFull{}
	_ bin.BareEncoder = &UserFull{}
	_ bin.BareDecoder = &UserFull{}
)

func ( *UserFull) () bool {
	if  == nil {
		return true
	}
	if !(.Flags.Zero()) {
		return false
	}
	if !(.Blocked == false) {
		return false
	}
	if !(.PhoneCallsAvailable == false) {
		return false
	}
	if !(.PhoneCallsPrivate == false) {
		return false
	}
	if !(.CanPinMessage == false) {
		return false
	}
	if !(.HasScheduled == false) {
		return false
	}
	if !(.VideoCallsAvailable == false) {
		return false
	}
	if !(.VoiceMessagesForbidden == false) {
		return false
	}
	if !(.TranslationsDisabled == false) {
		return false
	}
	if !(.StoriesPinnedAvailable == false) {
		return false
	}
	if !(.BlockedMyStoriesFrom == false) {
		return false
	}
	if !(.WallpaperOverridden == false) {
		return false
	}
	if !(.ID == 0) {
		return false
	}
	if !(.About == "") {
		return false
	}
	if !(.Settings.Zero()) {
		return false
	}
	if !(.PersonalPhoto == nil) {
		return false
	}
	if !(.ProfilePhoto == nil) {
		return false
	}
	if !(.FallbackPhoto == nil) {
		return false
	}
	if !(.NotifySettings.Zero()) {
		return false
	}
	if !(.BotInfo.Zero()) {
		return false
	}
	if !(.PinnedMsgID == 0) {
		return false
	}
	if !(.CommonChatsCount == 0) {
		return false
	}
	if !(.FolderID == 0) {
		return false
	}
	if !(.TTLPeriod == 0) {
		return false
	}
	if !(.ThemeEmoticon == "") {
		return false
	}
	if !(.PrivateForwardName == "") {
		return false
	}
	if !(.BotGroupAdminRights.Zero()) {
		return false
	}
	if !(.BotBroadcastAdminRights.Zero()) {
		return false
	}
	if !(.PremiumGifts == nil) {
		return false
	}
	if !(.Wallpaper == nil) {
		return false
	}
	if !(.Stories.Zero()) {
		return false
	}

	return true
}

// String implements fmt.Stringer.
func ( *UserFull) () string {
	if  == nil {
		return "UserFull(nil)"
	}
	type  UserFull
	return fmt.Sprintf("UserFull%+v", (*))
}

// FillFrom fills UserFull from given interface.
func ( *UserFull) ( interface {
	() ( bool)
	() ( bool)
	() ( bool)
	() ( bool)
	() ( bool)
	() ( bool)
	() ( bool)
	() ( bool)
	() ( bool)
	() ( bool)
	() ( bool)
	() ( int64)
	() ( string,  bool)
	() ( PeerSettings)
	() ( PhotoClass,  bool)
	() ( PhotoClass,  bool)
	() ( PhotoClass,  bool)
	() ( PeerNotifySettings)
	() ( BotInfo,  bool)
	() ( int,  bool)
	() ( int)
	() ( int,  bool)
	() ( int,  bool)
	() ( string,  bool)
	() ( string,  bool)
	() ( ChatAdminRights,  bool)
	() ( ChatAdminRights,  bool)
	() ( []PremiumGiftOption,  bool)
	() ( WallPaperClass,  bool)
	() ( PeerStories,  bool)
}) {
	.Blocked = .()
	.PhoneCallsAvailable = .()
	.PhoneCallsPrivate = .()
	.CanPinMessage = .()
	.HasScheduled = .()
	.VideoCallsAvailable = .()
	.VoiceMessagesForbidden = .()
	.TranslationsDisabled = .()
	.StoriesPinnedAvailable = .()
	.BlockedMyStoriesFrom = .()
	.WallpaperOverridden = .()
	.ID = .()
	if ,  := .();  {
		.About = 
	}

	.Settings = .()
	if ,  := .();  {
		.PersonalPhoto = 
	}

	if ,  := .();  {
		.ProfilePhoto = 
	}

	if ,  := .();  {
		.FallbackPhoto = 
	}

	.NotifySettings = .()
	if ,  := .();  {
		.BotInfo = 
	}

	if ,  := .();  {
		.PinnedMsgID = 
	}

	.CommonChatsCount = .()
	if ,  := .();  {
		.FolderID = 
	}

	if ,  := .();  {
		.TTLPeriod = 
	}

	if ,  := .();  {
		.ThemeEmoticon = 
	}

	if ,  := .();  {
		.PrivateForwardName = 
	}

	if ,  := .();  {
		.BotGroupAdminRights = 
	}

	if ,  := .();  {
		.BotBroadcastAdminRights = 
	}

	if ,  := .();  {
		.PremiumGifts = 
	}

	if ,  := .();  {
		.Wallpaper = 
	}

	if ,  := .();  {
		.Stories = 
	}

}

// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*UserFull) () uint32 {
	return UserFullTypeID
}

// TypeName returns name of type in TL schema.
func (*UserFull) () string {
	return "userFull"
}

// TypeInfo returns info about TL type.
func ( *UserFull) () tdp.Type {
	 := tdp.Type{
		Name: "userFull",
		ID:   UserFullTypeID,
	}
	if  == nil {
		.Null = true
		return 
	}
	.Fields = []tdp.Field{
		{
			Name:       "Blocked",
			SchemaName: "blocked",
			Null:       !.Flags.Has(0),
		},
		{
			Name:       "PhoneCallsAvailable",
			SchemaName: "phone_calls_available",
			Null:       !.Flags.Has(4),
		},
		{
			Name:       "PhoneCallsPrivate",
			SchemaName: "phone_calls_private",
			Null:       !.Flags.Has(5),
		},
		{
			Name:       "CanPinMessage",
			SchemaName: "can_pin_message",
			Null:       !.Flags.Has(7),
		},
		{
			Name:       "HasScheduled",
			SchemaName: "has_scheduled",
			Null:       !.Flags.Has(12),
		},
		{
			Name:       "VideoCallsAvailable",
			SchemaName: "video_calls_available",
			Null:       !.Flags.Has(13),
		},
		{
			Name:       "VoiceMessagesForbidden",
			SchemaName: "voice_messages_forbidden",
			Null:       !.Flags.Has(20),
		},
		{
			Name:       "TranslationsDisabled",
			SchemaName: "translations_disabled",
			Null:       !.Flags.Has(23),
		},
		{
			Name:       "StoriesPinnedAvailable",
			SchemaName: "stories_pinned_available",
			Null:       !.Flags.Has(26),
		},
		{
			Name:       "BlockedMyStoriesFrom",
			SchemaName: "blocked_my_stories_from",
			Null:       !.Flags.Has(27),
		},
		{
			Name:       "WallpaperOverridden",
			SchemaName: "wallpaper_overridden",
			Null:       !.Flags.Has(28),
		},
		{
			Name:       "ID",
			SchemaName: "id",
		},
		{
			Name:       "About",
			SchemaName: "about",
			Null:       !.Flags.Has(1),
		},
		{
			Name:       "Settings",
			SchemaName: "settings",
		},
		{
			Name:       "PersonalPhoto",
			SchemaName: "personal_photo",
			Null:       !.Flags.Has(21),
		},
		{
			Name:       "ProfilePhoto",
			SchemaName: "profile_photo",
			Null:       !.Flags.Has(2),
		},
		{
			Name:       "FallbackPhoto",
			SchemaName: "fallback_photo",
			Null:       !.Flags.Has(22),
		},
		{
			Name:       "NotifySettings",
			SchemaName: "notify_settings",
		},
		{
			Name:       "BotInfo",
			SchemaName: "bot_info",
			Null:       !.Flags.Has(3),
		},
		{
			Name:       "PinnedMsgID",
			SchemaName: "pinned_msg_id",
			Null:       !.Flags.Has(6),
		},
		{
			Name:       "CommonChatsCount",
			SchemaName: "common_chats_count",
		},
		{
			Name:       "FolderID",
			SchemaName: "folder_id",
			Null:       !.Flags.Has(11),
		},
		{
			Name:       "TTLPeriod",
			SchemaName: "ttl_period",
			Null:       !.Flags.Has(14),
		},
		{
			Name:       "ThemeEmoticon",
			SchemaName: "theme_emoticon",
			Null:       !.Flags.Has(15),
		},
		{
			Name:       "PrivateForwardName",
			SchemaName: "private_forward_name",
			Null:       !.Flags.Has(16),
		},
		{
			Name:       "BotGroupAdminRights",
			SchemaName: "bot_group_admin_rights",
			Null:       !.Flags.Has(17),
		},
		{
			Name:       "BotBroadcastAdminRights",
			SchemaName: "bot_broadcast_admin_rights",
			Null:       !.Flags.Has(18),
		},
		{
			Name:       "PremiumGifts",
			SchemaName: "premium_gifts",
			Null:       !.Flags.Has(19),
		},
		{
			Name:       "Wallpaper",
			SchemaName: "wallpaper",
			Null:       !.Flags.Has(24),
		},
		{
			Name:       "Stories",
			SchemaName: "stories",
			Null:       !.Flags.Has(25),
		},
	}
	return 
}

// SetFlags sets flags for non-zero fields.
func ( *UserFull) () {
	if !(.Blocked == false) {
		.Flags.Set(0)
	}
	if !(.PhoneCallsAvailable == false) {
		.Flags.Set(4)
	}
	if !(.PhoneCallsPrivate == false) {
		.Flags.Set(5)
	}
	if !(.CanPinMessage == false) {
		.Flags.Set(7)
	}
	if !(.HasScheduled == false) {
		.Flags.Set(12)
	}
	if !(.VideoCallsAvailable == false) {
		.Flags.Set(13)
	}
	if !(.VoiceMessagesForbidden == false) {
		.Flags.Set(20)
	}
	if !(.TranslationsDisabled == false) {
		.Flags.Set(23)
	}
	if !(.StoriesPinnedAvailable == false) {
		.Flags.Set(26)
	}
	if !(.BlockedMyStoriesFrom == false) {
		.Flags.Set(27)
	}
	if !(.WallpaperOverridden == false) {
		.Flags.Set(28)
	}
	if !(.About == "") {
		.Flags.Set(1)
	}
	if !(.PersonalPhoto == nil) {
		.Flags.Set(21)
	}
	if !(.ProfilePhoto == nil) {
		.Flags.Set(2)
	}
	if !(.FallbackPhoto == nil) {
		.Flags.Set(22)
	}
	if !(.BotInfo.Zero()) {
		.Flags.Set(3)
	}
	if !(.PinnedMsgID == 0) {
		.Flags.Set(6)
	}
	if !(.FolderID == 0) {
		.Flags.Set(11)
	}
	if !(.TTLPeriod == 0) {
		.Flags.Set(14)
	}
	if !(.ThemeEmoticon == "") {
		.Flags.Set(15)
	}
	if !(.PrivateForwardName == "") {
		.Flags.Set(16)
	}
	if !(.BotGroupAdminRights.Zero()) {
		.Flags.Set(17)
	}
	if !(.BotBroadcastAdminRights.Zero()) {
		.Flags.Set(18)
	}
	if !(.PremiumGifts == nil) {
		.Flags.Set(19)
	}
	if !(.Wallpaper == nil) {
		.Flags.Set(24)
	}
	if !(.Stories.Zero()) {
		.Flags.Set(25)
	}
}

// Encode implements bin.Encoder.
func ( *UserFull) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't encode userFull#b9b12c6c as nil")
	}
	.PutID(UserFullTypeID)
	return .EncodeBare()
}

// EncodeBare implements bin.BareEncoder.
func ( *UserFull) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't encode userFull#b9b12c6c as nil")
	}
	.SetFlags()
	if  := .Flags.Encode();  != nil {
		return fmt.Errorf("unable to encode userFull#b9b12c6c: field flags: %w", )
	}
	.PutLong(.ID)
	if .Flags.Has(1) {
		.PutString(.About)
	}
	if  := .Settings.Encode();  != nil {
		return fmt.Errorf("unable to encode userFull#b9b12c6c: field settings: %w", )
	}
	if .Flags.Has(21) {
		if .PersonalPhoto == nil {
			return fmt.Errorf("unable to encode userFull#b9b12c6c: field personal_photo is nil")
		}
		if  := .PersonalPhoto.Encode();  != nil {
			return fmt.Errorf("unable to encode userFull#b9b12c6c: field personal_photo: %w", )
		}
	}
	if .Flags.Has(2) {
		if .ProfilePhoto == nil {
			return fmt.Errorf("unable to encode userFull#b9b12c6c: field profile_photo is nil")
		}
		if  := .ProfilePhoto.Encode();  != nil {
			return fmt.Errorf("unable to encode userFull#b9b12c6c: field profile_photo: %w", )
		}
	}
	if .Flags.Has(22) {
		if .FallbackPhoto == nil {
			return fmt.Errorf("unable to encode userFull#b9b12c6c: field fallback_photo is nil")
		}
		if  := .FallbackPhoto.Encode();  != nil {
			return fmt.Errorf("unable to encode userFull#b9b12c6c: field fallback_photo: %w", )
		}
	}
	if  := .NotifySettings.Encode();  != nil {
		return fmt.Errorf("unable to encode userFull#b9b12c6c: field notify_settings: %w", )
	}
	if .Flags.Has(3) {
		if  := .BotInfo.Encode();  != nil {
			return fmt.Errorf("unable to encode userFull#b9b12c6c: field bot_info: %w", )
		}
	}
	if .Flags.Has(6) {
		.PutInt(.PinnedMsgID)
	}
	.PutInt(.CommonChatsCount)
	if .Flags.Has(11) {
		.PutInt(.FolderID)
	}
	if .Flags.Has(14) {
		.PutInt(.TTLPeriod)
	}
	if .Flags.Has(15) {
		.PutString(.ThemeEmoticon)
	}
	if .Flags.Has(16) {
		.PutString(.PrivateForwardName)
	}
	if .Flags.Has(17) {
		if  := .BotGroupAdminRights.Encode();  != nil {
			return fmt.Errorf("unable to encode userFull#b9b12c6c: field bot_group_admin_rights: %w", )
		}
	}
	if .Flags.Has(18) {
		if  := .BotBroadcastAdminRights.Encode();  != nil {
			return fmt.Errorf("unable to encode userFull#b9b12c6c: field bot_broadcast_admin_rights: %w", )
		}
	}
	if .Flags.Has(19) {
		.PutVectorHeader(len(.PremiumGifts))
		for ,  := range .PremiumGifts {
			if  := .Encode();  != nil {
				return fmt.Errorf("unable to encode userFull#b9b12c6c: field premium_gifts element with index %d: %w", , )
			}
		}
	}
	if .Flags.Has(24) {
		if .Wallpaper == nil {
			return fmt.Errorf("unable to encode userFull#b9b12c6c: field wallpaper is nil")
		}
		if  := .Wallpaper.Encode();  != nil {
			return fmt.Errorf("unable to encode userFull#b9b12c6c: field wallpaper: %w", )
		}
	}
	if .Flags.Has(25) {
		if  := .Stories.Encode();  != nil {
			return fmt.Errorf("unable to encode userFull#b9b12c6c: field stories: %w", )
		}
	}
	return nil
}

// Decode implements bin.Decoder.
func ( *UserFull) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't decode userFull#b9b12c6c to nil")
	}
	if  := .ConsumeID(UserFullTypeID);  != nil {
		return fmt.Errorf("unable to decode userFull#b9b12c6c: %w", )
	}
	return .DecodeBare()
}

// DecodeBare implements bin.BareDecoder.
func ( *UserFull) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't decode userFull#b9b12c6c to nil")
	}
	{
		if  := .Flags.Decode();  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field flags: %w", )
		}
	}
	.Blocked = .Flags.Has(0)
	.PhoneCallsAvailable = .Flags.Has(4)
	.PhoneCallsPrivate = .Flags.Has(5)
	.CanPinMessage = .Flags.Has(7)
	.HasScheduled = .Flags.Has(12)
	.VideoCallsAvailable = .Flags.Has(13)
	.VoiceMessagesForbidden = .Flags.Has(20)
	.TranslationsDisabled = .Flags.Has(23)
	.StoriesPinnedAvailable = .Flags.Has(26)
	.BlockedMyStoriesFrom = .Flags.Has(27)
	.WallpaperOverridden = .Flags.Has(28)
	{
		,  := .Long()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field id: %w", )
		}
		.ID = 
	}
	if .Flags.Has(1) {
		,  := .String()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field about: %w", )
		}
		.About = 
	}
	{
		if  := .Settings.Decode();  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field settings: %w", )
		}
	}
	if .Flags.Has(21) {
		,  := DecodePhoto()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field personal_photo: %w", )
		}
		.PersonalPhoto = 
	}
	if .Flags.Has(2) {
		,  := DecodePhoto()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field profile_photo: %w", )
		}
		.ProfilePhoto = 
	}
	if .Flags.Has(22) {
		,  := DecodePhoto()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field fallback_photo: %w", )
		}
		.FallbackPhoto = 
	}
	{
		if  := .NotifySettings.Decode();  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field notify_settings: %w", )
		}
	}
	if .Flags.Has(3) {
		if  := .BotInfo.Decode();  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field bot_info: %w", )
		}
	}
	if .Flags.Has(6) {
		,  := .Int()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field pinned_msg_id: %w", )
		}
		.PinnedMsgID = 
	}
	{
		,  := .Int()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field common_chats_count: %w", )
		}
		.CommonChatsCount = 
	}
	if .Flags.Has(11) {
		,  := .Int()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field folder_id: %w", )
		}
		.FolderID = 
	}
	if .Flags.Has(14) {
		,  := .Int()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field ttl_period: %w", )
		}
		.TTLPeriod = 
	}
	if .Flags.Has(15) {
		,  := .String()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field theme_emoticon: %w", )
		}
		.ThemeEmoticon = 
	}
	if .Flags.Has(16) {
		,  := .String()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field private_forward_name: %w", )
		}
		.PrivateForwardName = 
	}
	if .Flags.Has(17) {
		if  := .BotGroupAdminRights.Decode();  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field bot_group_admin_rights: %w", )
		}
	}
	if .Flags.Has(18) {
		if  := .BotBroadcastAdminRights.Decode();  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field bot_broadcast_admin_rights: %w", )
		}
	}
	if .Flags.Has(19) {
		,  := .VectorHeader()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field premium_gifts: %w", )
		}

		if  > 0 {
			.PremiumGifts = make([]PremiumGiftOption, 0, %bin.PreallocateLimit)
		}
		for  := 0;  < ; ++ {
			var  PremiumGiftOption
			if  := .Decode();  != nil {
				return fmt.Errorf("unable to decode userFull#b9b12c6c: field premium_gifts: %w", )
			}
			.PremiumGifts = append(.PremiumGifts, )
		}
	}
	if .Flags.Has(24) {
		,  := DecodeWallPaper()
		if  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field wallpaper: %w", )
		}
		.Wallpaper = 
	}
	if .Flags.Has(25) {
		if  := .Stories.Decode();  != nil {
			return fmt.Errorf("unable to decode userFull#b9b12c6c: field stories: %w", )
		}
	}
	return nil
}

// SetBlocked sets value of Blocked conditional field.
func ( *UserFull) ( bool) {
	if  {
		.Flags.Set(0)
		.Blocked = true
	} else {
		.Flags.Unset(0)
		.Blocked = false
	}
}

// GetBlocked returns value of Blocked conditional field.
func ( *UserFull) () ( bool) {
	if  == nil {
		return
	}
	return .Flags.Has(0)
}

// SetPhoneCallsAvailable sets value of PhoneCallsAvailable conditional field.
func ( *UserFull) ( bool) {
	if  {
		.Flags.Set(4)
		.PhoneCallsAvailable = true
	} else {
		.Flags.Unset(4)
		.PhoneCallsAvailable = false
	}
}

// GetPhoneCallsAvailable returns value of PhoneCallsAvailable conditional field.
func ( *UserFull) () ( bool) {
	if  == nil {
		return
	}
	return .Flags.Has(4)
}

// SetPhoneCallsPrivate sets value of PhoneCallsPrivate conditional field.
func ( *UserFull) ( bool) {
	if  {
		.Flags.Set(5)
		.PhoneCallsPrivate = true
	} else {
		.Flags.Unset(5)
		.PhoneCallsPrivate = false
	}
}

// GetPhoneCallsPrivate returns value of PhoneCallsPrivate conditional field.
func ( *UserFull) () ( bool) {
	if  == nil {
		return
	}
	return .Flags.Has(5)
}

// SetCanPinMessage sets value of CanPinMessage conditional field.
func ( *UserFull) ( bool) {
	if  {
		.Flags.Set(7)
		.CanPinMessage = true
	} else {
		.Flags.Unset(7)
		.CanPinMessage = false
	}
}

// GetCanPinMessage returns value of CanPinMessage conditional field.
func ( *UserFull) () ( bool) {
	if  == nil {
		return
	}
	return .Flags.Has(7)
}

// SetHasScheduled sets value of HasScheduled conditional field.
func ( *UserFull) ( bool) {
	if  {
		.Flags.Set(12)
		.HasScheduled = true
	} else {
		.Flags.Unset(12)
		.HasScheduled = false
	}
}

// GetHasScheduled returns value of HasScheduled conditional field.
func ( *UserFull) () ( bool) {
	if  == nil {
		return
	}
	return .Flags.Has(12)
}

// SetVideoCallsAvailable sets value of VideoCallsAvailable conditional field.
func ( *UserFull) ( bool) {
	if  {
		.Flags.Set(13)
		.VideoCallsAvailable = true
	} else {
		.Flags.Unset(13)
		.VideoCallsAvailable = false
	}
}

// GetVideoCallsAvailable returns value of VideoCallsAvailable conditional field.
func ( *UserFull) () ( bool) {
	if  == nil {
		return
	}
	return .Flags.Has(13)
}

// SetVoiceMessagesForbidden sets value of VoiceMessagesForbidden conditional field.
func ( *UserFull) ( bool) {
	if  {
		.Flags.Set(20)
		.VoiceMessagesForbidden = true
	} else {
		.Flags.Unset(20)
		.VoiceMessagesForbidden = false
	}
}

// GetVoiceMessagesForbidden returns value of VoiceMessagesForbidden conditional field.
func ( *UserFull) () ( bool) {
	if  == nil {
		return
	}
	return .Flags.Has(20)
}

// SetTranslationsDisabled sets value of TranslationsDisabled conditional field.
func ( *UserFull) ( bool) {
	if  {
		.Flags.Set(23)
		.TranslationsDisabled = true
	} else {
		.Flags.Unset(23)
		.TranslationsDisabled = false
	}
}

// GetTranslationsDisabled returns value of TranslationsDisabled conditional field.
func ( *UserFull) () ( bool) {
	if  == nil {
		return
	}
	return .Flags.Has(23)
}

// SetStoriesPinnedAvailable sets value of StoriesPinnedAvailable conditional field.
func ( *UserFull) ( bool) {
	if  {
		.Flags.Set(26)
		.StoriesPinnedAvailable = true
	} else {
		.Flags.Unset(26)
		.StoriesPinnedAvailable = false
	}
}

// GetStoriesPinnedAvailable returns value of StoriesPinnedAvailable conditional field.
func ( *UserFull) () ( bool) {
	if  == nil {
		return
	}
	return .Flags.Has(26)
}

// SetBlockedMyStoriesFrom sets value of BlockedMyStoriesFrom conditional field.
func ( *UserFull) ( bool) {
	if  {
		.Flags.Set(27)
		.BlockedMyStoriesFrom = true
	} else {
		.Flags.Unset(27)
		.BlockedMyStoriesFrom = false
	}
}

// GetBlockedMyStoriesFrom returns value of BlockedMyStoriesFrom conditional field.
func ( *UserFull) () ( bool) {
	if  == nil {
		return
	}
	return .Flags.Has(27)
}

// SetWallpaperOverridden sets value of WallpaperOverridden conditional field.
func ( *UserFull) ( bool) {
	if  {
		.Flags.Set(28)
		.WallpaperOverridden = true
	} else {
		.Flags.Unset(28)
		.WallpaperOverridden = false
	}
}

// GetWallpaperOverridden returns value of WallpaperOverridden conditional field.
func ( *UserFull) () ( bool) {
	if  == nil {
		return
	}
	return .Flags.Has(28)
}

// GetID returns value of ID field.
func ( *UserFull) () ( int64) {
	if  == nil {
		return
	}
	return .ID
}

// SetAbout sets value of About conditional field.
func ( *UserFull) ( string) {
	.Flags.Set(1)
	.About = 
}

// GetAbout returns value of About conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( string,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(1) {
		return , false
	}
	return .About, true
}

// GetSettings returns value of Settings field.
func ( *UserFull) () ( PeerSettings) {
	if  == nil {
		return
	}
	return .Settings
}

// SetPersonalPhoto sets value of PersonalPhoto conditional field.
func ( *UserFull) ( PhotoClass) {
	.Flags.Set(21)
	.PersonalPhoto = 
}

// GetPersonalPhoto returns value of PersonalPhoto conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( PhotoClass,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(21) {
		return , false
	}
	return .PersonalPhoto, true
}

// SetProfilePhoto sets value of ProfilePhoto conditional field.
func ( *UserFull) ( PhotoClass) {
	.Flags.Set(2)
	.ProfilePhoto = 
}

// GetProfilePhoto returns value of ProfilePhoto conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( PhotoClass,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(2) {
		return , false
	}
	return .ProfilePhoto, true
}

// SetFallbackPhoto sets value of FallbackPhoto conditional field.
func ( *UserFull) ( PhotoClass) {
	.Flags.Set(22)
	.FallbackPhoto = 
}

// GetFallbackPhoto returns value of FallbackPhoto conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( PhotoClass,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(22) {
		return , false
	}
	return .FallbackPhoto, true
}

// GetNotifySettings returns value of NotifySettings field.
func ( *UserFull) () ( PeerNotifySettings) {
	if  == nil {
		return
	}
	return .NotifySettings
}

// SetBotInfo sets value of BotInfo conditional field.
func ( *UserFull) ( BotInfo) {
	.Flags.Set(3)
	.BotInfo = 
}

// GetBotInfo returns value of BotInfo conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( BotInfo,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(3) {
		return , false
	}
	return .BotInfo, true
}

// SetPinnedMsgID sets value of PinnedMsgID conditional field.
func ( *UserFull) ( int) {
	.Flags.Set(6)
	.PinnedMsgID = 
}

// GetPinnedMsgID returns value of PinnedMsgID conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( int,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(6) {
		return , false
	}
	return .PinnedMsgID, true
}

// GetCommonChatsCount returns value of CommonChatsCount field.
func ( *UserFull) () ( int) {
	if  == nil {
		return
	}
	return .CommonChatsCount
}

// SetFolderID sets value of FolderID conditional field.
func ( *UserFull) ( int) {
	.Flags.Set(11)
	.FolderID = 
}

// GetFolderID returns value of FolderID conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( int,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(11) {
		return , false
	}
	return .FolderID, true
}

// SetTTLPeriod sets value of TTLPeriod conditional field.
func ( *UserFull) ( int) {
	.Flags.Set(14)
	.TTLPeriod = 
}

// GetTTLPeriod returns value of TTLPeriod conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( int,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(14) {
		return , false
	}
	return .TTLPeriod, true
}

// SetThemeEmoticon sets value of ThemeEmoticon conditional field.
func ( *UserFull) ( string) {
	.Flags.Set(15)
	.ThemeEmoticon = 
}

// GetThemeEmoticon returns value of ThemeEmoticon conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( string,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(15) {
		return , false
	}
	return .ThemeEmoticon, true
}

// SetPrivateForwardName sets value of PrivateForwardName conditional field.
func ( *UserFull) ( string) {
	.Flags.Set(16)
	.PrivateForwardName = 
}

// GetPrivateForwardName returns value of PrivateForwardName conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( string,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(16) {
		return , false
	}
	return .PrivateForwardName, true
}

// SetBotGroupAdminRights sets value of BotGroupAdminRights conditional field.
func ( *UserFull) ( ChatAdminRights) {
	.Flags.Set(17)
	.BotGroupAdminRights = 
}

// GetBotGroupAdminRights returns value of BotGroupAdminRights conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( ChatAdminRights,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(17) {
		return , false
	}
	return .BotGroupAdminRights, true
}

// SetBotBroadcastAdminRights sets value of BotBroadcastAdminRights conditional field.
func ( *UserFull) ( ChatAdminRights) {
	.Flags.Set(18)
	.BotBroadcastAdminRights = 
}

// GetBotBroadcastAdminRights returns value of BotBroadcastAdminRights conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( ChatAdminRights,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(18) {
		return , false
	}
	return .BotBroadcastAdminRights, true
}

// SetPremiumGifts sets value of PremiumGifts conditional field.
func ( *UserFull) ( []PremiumGiftOption) {
	.Flags.Set(19)
	.PremiumGifts = 
}

// GetPremiumGifts returns value of PremiumGifts conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( []PremiumGiftOption,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(19) {
		return , false
	}
	return .PremiumGifts, true
}

// SetWallpaper sets value of Wallpaper conditional field.
func ( *UserFull) ( WallPaperClass) {
	.Flags.Set(24)
	.Wallpaper = 
}

// GetWallpaper returns value of Wallpaper conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( WallPaperClass,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(24) {
		return , false
	}
	return .Wallpaper, true
}

// SetStories sets value of Stories conditional field.
func ( *UserFull) ( PeerStories) {
	.Flags.Set(25)
	.Stories = 
}

// GetStories returns value of Stories conditional field and
// boolean which is true if field was set.
func ( *UserFull) () ( PeerStories,  bool) {
	if  == nil {
		return
	}
	if !.Flags.Has(25) {
		return , false
	}
	return .Stories, true
}

// GetPersonalPhotoAsNotEmpty returns mapped value of PersonalPhoto conditional field and
// boolean which is true if field was set.
func ( *UserFull) () (*Photo, bool) {
	if ,  := .GetPersonalPhoto();  {
		return .AsNotEmpty()
	}
	return nil, false
}

// GetProfilePhotoAsNotEmpty returns mapped value of ProfilePhoto conditional field and
// boolean which is true if field was set.
func ( *UserFull) () (*Photo, bool) {
	if ,  := .GetProfilePhoto();  {
		return .AsNotEmpty()
	}
	return nil, false
}

// GetFallbackPhotoAsNotEmpty returns mapped value of FallbackPhoto conditional field and
// boolean which is true if field was set.
func ( *UserFull) () (*Photo, bool) {
	if ,  := .GetFallbackPhoto();  {
		return .AsNotEmpty()
	}
	return nil, false
}