Kaynağa Gözat

Add ts support
Fix browsers issues
Add node support
Various bug fixes
Add webpack config

painor 4 yıl önce
ebeveyn
işleme
8ba3946a51

+ 16 - 3
.bablerc

@@ -1,5 +1,18 @@
- {
- "presets": [
+{
+  "presets": [
+    [
+      "@babel/typescript"
+    ],
+    [
       "@babel/preset-env"
+    ],
+    [
+      "@babel/preset-react"
     ]
- }
+  ],
+  "plugins": [
+    [
+      "@babel/plugin-proposal-class-properties"
+    ]
+  ]
+}

+ 1 - 1
examples/simpleLogin.html

@@ -44,4 +44,4 @@
 
 <script src="simpleLogin.js"></script>
 
-</html>
+</html>

+ 2 - 1
gramjs/Helpers.js

@@ -1,6 +1,7 @@
+const { isBrowser, isNode } = require("browser-or-node" );
 
 const BigInt = require('big-integer')
-const IS_NODE = !(this.window === this)
+const IS_NODE = isNode
 const crypto = require(IS_NODE ? 'crypto' : './crypto/crypto')
 
 /**

+ 20 - 3
gramjs/client/auth.ts

@@ -1,4 +1,4 @@
-import  * as Api  from '../tl/api';
+import  { default as Api }  from '../tl/api';
 import TelegramClient from './TelegramClient';
 import * as utils from '../Utils';
 import { sleep } from '../Helpers';
@@ -13,9 +13,12 @@ export interface UserAuthParams {
     onError: (err: Error) => void;
     forceSMS?: boolean;
 }
+interface ReturnString {
+    (): string
+}
 
 export interface BotAuthParams {
-    botAuthToken: string;
+    botAuthToken: string | ReturnString;
 }
 
 interface ApiCredentials {
@@ -301,8 +304,22 @@ async function signInWithPassword(
 
 async function signInBot(client: TelegramClient, apiCredentials: ApiCredentials, authParams: BotAuthParams) {
     const { apiId, apiHash } = apiCredentials;
-    const { botAuthToken } = authParams;
+    let { botAuthToken } = authParams;
+    if (!botAuthToken){
+        throw new Error('a valid BotToken is required');
+    }
+    if (typeof botAuthToken === "function") {
+        let token;
+        while (true){
+            token = await botAuthToken();
+            if (token){
+                botAuthToken = token;
+                break;
+            }
+        }
+    }
 
+    console.dir(botAuthToken)
     const { user } = await client.invoke(new Api.auth.ImportBotAuthorization({
         apiId,
         apiHash,

+ 1 - 2
gramjs/network/MTProtoSender.js

@@ -170,10 +170,9 @@ class MTProtoSender {
                 if (attempt===0 && eventDispatch!==null){
                     eventDispatch({ update: new UpdateConnectionState(-1) })
                 }
-                console.log(e);
+                console.dir(e);
 
                 this._log.error("WebSocket connection failed attempt : "+(attempt+1))
-                process.exit(0)
                 await Helpers.sleep(this._delay)
             }
         }

+ 2 - 1
gramjs/network/connection/Connection.js

@@ -1,6 +1,7 @@
 const PromisedWebSockets = require('../../extensions/PromisedWebSockets')
 const PromisedNetSockets = require('../../extensions/PromisedNetSockets')
 const AsyncQueue = require('../../extensions/AsyncQueue')
+const {IS_NODE} = require("../../Helpers");
 
 /**
  * The `Connection` class is a wrapper around ``asyncio.open_connection``.
@@ -28,7 +29,7 @@ class Connection {
         this._obfuscation = null // TcpObfuscated and MTProxy
         this._sendArray = new AsyncQueue()
         this._recvArray = new AsyncQueue()
-        this.socket = new PromisedNetSockets()
+        this.socket = IS_NODE ? new PromisedNetSockets() : new PromisedWebSockets()
 
         //this.socket = new PromisedWebSockets()
     }

Dosya farkı çok büyük olduğundan ihmal edildi
+ 10113 - 0
gramjs/tl/api.d.ts


+ 5 - 4
gramjs/tl/api.js

@@ -7,11 +7,12 @@ const { IS_NODE,toSignedLittleBuffer } = require('../Helpers')
 let tlContent,schemeContent;
 if (IS_NODE){
     const fs = require("fs");
-    tlContent = fs.readFileSync('./static/api.tl',"utf-8");
-    schemeContent = fs.readFileSync('./static/schema.tl',"utf-8");
+
+    tlContent = fs.readFileSync(__dirname+'/static/api.tl',"utf-8");
+    schemeContent = fs.readFileSync(__dirname+'/static/schema.tl',"utf-8");
 }else{
-     tlContent = require('./static/api.reduced.tl').default;
-     schemeContent = require('./static/schema.reduced.tl').default;
+     tlContent = require('./static/api.tl').default;
+     schemeContent = require('./static/schema.tl').default;
 
 }
 

+ 0 - 928
gramjs/tl/static/api.reduced.tl

@@ -1,928 +0,0 @@
-boolFalse#bc799737 = Bool;
-boolTrue#997275b5 = Bool;
-true#3fedd339 = True;
-vector#1cb5c415 {t:Type} # [ t ] = Vector t;
-error#c4b9f9bb code:int text:string = Error;
-null#56730bcc = Null;
-inputPeerEmpty#7f3b18ea = InputPeer;
-inputPeerSelf#7da07ec9 = InputPeer;
-inputPeerChat#179be863 chat_id:int = InputPeer;
-inputPeerUser#7b8e7de6 user_id:int access_hash:long = InputPeer;
-inputPeerChannel#20adaef8 channel_id:int access_hash:long = InputPeer;
-inputPeerUserFromMessage#17bae2e6 peer:InputPeer msg_id:int user_id:int = InputPeer;
-inputPeerChannelFromMessage#9c95f7bb peer:InputPeer msg_id:int channel_id:int = InputPeer;
-inputUserEmpty#b98886cf = InputUser;
-inputUserSelf#f7c1b13f = InputUser;
-inputUser#d8292816 user_id:int access_hash:long = InputUser;
-inputUserFromMessage#2d117597 peer:InputPeer msg_id:int user_id:int = InputUser;
-inputPhoneContact#f392b7f4 client_id:long phone:string first_name:string last_name:string = InputContact;
-inputFile#f52ff27f id:long parts:int name:string md5_checksum:string = InputFile;
-inputFileBig#fa4f0bb5 id:long parts:int name:string = InputFile;
-inputMediaEmpty#9664f57f = InputMedia;
-inputMediaUploadedPhoto#1e287d04 flags:# file:InputFile stickers:flags.0?Vector<InputDocument> ttl_seconds:flags.1?int = InputMedia;
-inputMediaPhoto#b3ba0635 flags:# id:InputPhoto ttl_seconds:flags.0?int = InputMedia;
-inputMediaGeoPoint#f9c44144 geo_point:InputGeoPoint = InputMedia;
-inputMediaContact#f8ab7dfb phone_number:string first_name:string last_name:string vcard:string = InputMedia;
-inputMediaUploadedDocument#5b38c6c1 flags:# nosound_video:flags.3?true file:InputFile thumb:flags.2?InputFile mime_type:string attributes:Vector<DocumentAttribute> stickers:flags.0?Vector<InputDocument> ttl_seconds:flags.1?int = InputMedia;
-inputMediaDocument#23ab23d2 flags:# id:InputDocument ttl_seconds:flags.0?int = InputMedia;
-inputMediaVenue#c13d1c11 geo_point:InputGeoPoint title:string address:string provider:string venue_id:string venue_type:string = InputMedia;
-inputMediaGifExternal#4843b0fd url:string q:string = InputMedia;
-inputMediaPhotoExternal#e5bbfe1a flags:# url:string ttl_seconds:flags.0?int = InputMedia;
-inputMediaDocumentExternal#fb52dc99 flags:# url:string ttl_seconds:flags.0?int = InputMedia;
-inputMediaGame#d33f43f3 id:InputGame = InputMedia;
-inputMediaInvoice#f4e096c3 flags:# title:string description:string photo:flags.0?InputWebDocument invoice:Invoice payload:bytes provider:string provider_data:DataJSON start_param:string = InputMedia;
-inputMediaGeoLive#ce4e82fd flags:# stopped:flags.0?true geo_point:InputGeoPoint period:flags.1?int = InputMedia;
-inputMediaPoll#f94e5f1 flags:# poll:Poll correct_answers:flags.0?Vector<bytes> solution:flags.1?string solution_entities:flags.1?Vector<MessageEntity> = InputMedia;
-inputMediaDice#e66fbf7b emoticon:string = InputMedia;
-inputChatPhotoEmpty#1ca48f57 = InputChatPhoto;
-inputChatUploadedPhoto#927c55b4 file:InputFile = InputChatPhoto;
-inputChatPhoto#8953ad37 id:InputPhoto = InputChatPhoto;
-inputGeoPointEmpty#e4c123d6 = InputGeoPoint;
-inputGeoPoint#f3b7acc9 lat:double long:double = InputGeoPoint;
-inputPhotoEmpty#1cd7bf0d = InputPhoto;
-inputPhoto#3bb3b94a id:long access_hash:long file_reference:bytes = InputPhoto;
-inputFileLocation#dfdaabe1 volume_id:long local_id:int secret:long file_reference:bytes = InputFileLocation;
-inputEncryptedFileLocation#f5235d55 id:long access_hash:long = InputFileLocation;
-inputDocumentFileLocation#bad07584 id:long access_hash:long file_reference:bytes thumb_size:string = InputFileLocation;
-inputSecureFileLocation#cbc7ee28 id:long access_hash:long = InputFileLocation;
-inputTakeoutFileLocation#29be5899 = InputFileLocation;
-inputPhotoFileLocation#40181ffe id:long access_hash:long file_reference:bytes thumb_size:string = InputFileLocation;
-inputPhotoLegacyFileLocation#d83466f3 id:long access_hash:long file_reference:bytes volume_id:long local_id:int secret:long = InputFileLocation;
-inputPeerPhotoFileLocation#27d69997 flags:# big:flags.0?true peer:InputPeer volume_id:long local_id:int = InputFileLocation;
-inputStickerSetThumb#dbaeae9 stickerset:InputStickerSet volume_id:long local_id:int = InputFileLocation;
-peerUser#9db1bc6d user_id:int = Peer;
-peerChat#bad0e5bb chat_id:int = Peer;
-peerChannel#bddde532 channel_id:int = Peer;
-storage.fileUnknown#aa963b05 = storage.FileType;
-storage.filePartial#40bc6f52 = storage.FileType;
-storage.fileJpeg#7efe0e = storage.FileType;
-storage.fileGif#cae1aadf = storage.FileType;
-storage.filePng#a4f63c0 = storage.FileType;
-storage.filePdf#ae1e508d = storage.FileType;
-storage.fileMp3#528a0677 = storage.FileType;
-storage.fileMov#4b09ebbc = storage.FileType;
-storage.fileMp4#b3cea0e4 = storage.FileType;
-storage.fileWebp#1081464c = storage.FileType;
-userEmpty#200250ba id:int = User;
-user#938458c1 flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true id:int access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string = User;
-userProfilePhotoEmpty#4f11bae1 = UserProfilePhoto;
-userProfilePhoto#ecd75d8c photo_id:long photo_small:FileLocation photo_big:FileLocation dc_id:int = UserProfilePhoto;
-userStatusEmpty#9d05049 = UserStatus;
-userStatusOnline#edb93949 expires:int = UserStatus;
-userStatusOffline#8c703f was_online:int = UserStatus;
-userStatusRecently#e26f42f1 = UserStatus;
-userStatusLastWeek#7bf09fc = UserStatus;
-userStatusLastMonth#77ebc742 = UserStatus;
-chatEmpty#9ba2d800 id:int = Chat;
-chat#3bda1bde flags:# creator:flags.0?true kicked:flags.1?true left:flags.2?true deactivated:flags.5?true id:int title:string photo:ChatPhoto participants_count:int date:int version:int migrated_to:flags.6?InputChannel admin_rights:flags.14?ChatAdminRights default_banned_rights:flags.18?ChatBannedRights = Chat;
-chatForbidden#7328bdb id:int title:string = Chat;
-channel#d31a961e flags:# creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true id:int access_hash:flags.13?long title:string username:flags.6?string photo:ChatPhoto date:int version:int restriction_reason:flags.9?Vector<RestrictionReason> admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int = Chat;
-channelForbidden#289da732 flags:# broadcast:flags.5?true megagroup:flags.8?true id:int access_hash:long title:string until_date:flags.16?int = Chat;
-chatFull#1b7c9db3 flags:# can_set_username:flags.7?true has_scheduled:flags.8?true id:int about:string participants:ChatParticipants chat_photo:flags.2?Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:flags.3?Vector<BotInfo> pinned_msg_id:flags.6?int folder_id:flags.11?int = ChatFull;
-channelFull#f0e6672a flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_view_stats:flags.12?true can_set_location:flags.16?true has_scheduled:flags.19?true id:int about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?int migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?int location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int = ChatFull;
-chatParticipant#c8d7493e user_id:int inviter_id:int date:int = ChatParticipant;
-chatParticipantCreator#da13538a user_id:int = ChatParticipant;
-chatParticipantAdmin#e2d6e436 user_id:int inviter_id:int date:int = ChatParticipant;
-chatParticipantsForbidden#fc900c2b flags:# chat_id:int self_participant:flags.0?ChatParticipant = ChatParticipants;
-chatParticipants#3f460fed chat_id:int participants:Vector<ChatParticipant> version:int = ChatParticipants;
-chatPhotoEmpty#37c1011c = ChatPhoto;
-chatPhoto#475cdbd5 photo_small:FileLocation photo_big:FileLocation dc_id:int = ChatPhoto;
-messageEmpty#83e5de54 id:int = Message;
-message#452c0e65 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true id:int from_id:flags.8?int to_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to_msg_id:flags.3?int date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long restriction_reason:flags.22?Vector<RestrictionReason> = Message;
-messageService#9e19a1f6 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:int from_id:flags.8?int to_id:Peer reply_to_msg_id:flags.3?int date:int action:MessageAction = Message;
-messageMediaEmpty#3ded6320 = MessageMedia;
-messageMediaPhoto#695150d7 flags:# photo:flags.0?Photo ttl_seconds:flags.2?int = MessageMedia;
-messageMediaGeo#56e0d474 geo:GeoPoint = MessageMedia;
-messageMediaContact#cbf24940 phone_number:string first_name:string last_name:string vcard:string user_id:int = MessageMedia;
-messageMediaUnsupported#9f84f49e = MessageMedia;
-messageMediaDocument#9cb070d7 flags:# document:flags.0?Document ttl_seconds:flags.2?int = MessageMedia;
-messageMediaWebPage#a32dd600 webpage:WebPage = MessageMedia;
-messageMediaVenue#2ec0533f geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string = MessageMedia;
-messageMediaGame#fdb19008 game:Game = MessageMedia;
-messageMediaInvoice#84551347 flags:# shipping_address_requested:flags.1?true test:flags.3?true title:string description:string photo:flags.0?WebDocument receipt_msg_id:flags.2?int currency:string total_amount:long start_param:string = MessageMedia;
-messageMediaGeoLive#7c3c2609 geo:GeoPoint period:int = MessageMedia;
-messageMediaPoll#4bd6e798 poll:Poll results:PollResults = MessageMedia;
-messageMediaDice#3f7ee58b value:int emoticon:string = MessageMedia;
-messageActionEmpty#b6aef7b0 = MessageAction;
-messageActionChatCreate#a6638b9a title:string users:Vector<int> = MessageAction;
-messageActionChatEditTitle#b5a1ce5a title:string = MessageAction;
-messageActionChatEditPhoto#7fcb13a8 photo:Photo = MessageAction;
-messageActionChatDeletePhoto#95e3fbef = MessageAction;
-messageActionChatAddUser#488a7337 users:Vector<int> = MessageAction;
-messageActionChatDeleteUser#b2ae9b0c user_id:int = MessageAction;
-messageActionChatJoinedByLink#f89cf5e8 inviter_id:int = MessageAction;
-messageActionChannelCreate#95d2ac92 title:string = MessageAction;
-messageActionChatMigrateTo#51bdb021 channel_id:int = MessageAction;
-messageActionChannelMigrateFrom#b055eaee title:string chat_id:int = MessageAction;
-messageActionPinMessage#94bd38ed = MessageAction;
-messageActionHistoryClear#9fbab604 = MessageAction;
-messageActionGameScore#92a72876 game_id:long score:int = MessageAction;
-messageActionPaymentSentMe#8f31b327 flags:# currency:string total_amount:long payload:bytes info:flags.0?PaymentRequestedInfo shipping_option_id:flags.1?string charge:PaymentCharge = MessageAction;
-messageActionPaymentSent#40699cd0 currency:string total_amount:long = MessageAction;
-messageActionPhoneCall#80e11a7f flags:# video:flags.2?true call_id:long reason:flags.0?PhoneCallDiscardReason duration:flags.1?int = MessageAction;
-messageActionScreenshotTaken#4792929b = MessageAction;
-messageActionCustomAction#fae69f56 message:string = MessageAction;
-messageActionBotAllowed#abe9affe domain:string = MessageAction;
-messageActionSecureValuesSentMe#1b287353 values:Vector<SecureValue> credentials:SecureCredentialsEncrypted = MessageAction;
-messageActionSecureValuesSent#d95c6154 types:Vector<SecureValueType> = MessageAction;
-messageActionContactSignUp#f3f25f76 = MessageAction;
-dialog#2c171f72 flags:# pinned:flags.2?true unread_mark:flags.3?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int = Dialog;
-dialogFolder#71bd134c flags:# pinned:flags.2?true folder:Folder peer:Peer top_message:int unread_muted_peers_count:int unread_unmuted_peers_count:int unread_muted_messages_count:int unread_unmuted_messages_count:int = Dialog;
-photoEmpty#2331b22d id:long = Photo;
-photo#d07504a5 flags:# has_stickers:flags.0?true id:long access_hash:long file_reference:bytes date:int sizes:Vector<PhotoSize> dc_id:int = Photo;
-photoSizeEmpty#e17e23c type:string = PhotoSize;
-photoSize#77bfb61b type:string location:FileLocation w:int h:int size:int = PhotoSize;
-photoCachedSize#e9a734fa type:string location:FileLocation w:int h:int bytes:bytes = PhotoSize;
-photoStrippedSize#e0b0bc2e type:string bytes:bytes = PhotoSize;
-geoPointEmpty#1117dd5f = GeoPoint;
-geoPoint#296f104 long:double lat:double access_hash:long = GeoPoint;
-auth.sentCode#5e002502 flags:# type:auth.SentCodeType phone_code_hash:string next_type:flags.1?auth.CodeType timeout:flags.2?int = auth.SentCode;
-auth.authorization#cd050916 flags:# tmp_sessions:flags.0?int user:User = auth.Authorization;
-auth.authorizationSignUpRequired#44747e9a flags:# terms_of_service:flags.0?help.TermsOfService = auth.Authorization;
-auth.exportedAuthorization#df969c2d id:int bytes:bytes = auth.ExportedAuthorization;
-inputNotifyPeer#b8bc5b0c peer:InputPeer = InputNotifyPeer;
-inputNotifyUsers#193b4417 = InputNotifyPeer;
-inputNotifyChats#4a95e84e = InputNotifyPeer;
-inputNotifyBroadcasts#b1db7c7e = InputNotifyPeer;
-inputPeerNotifySettings#9c3d198e flags:# show_previews:flags.0?Bool silent:flags.1?Bool mute_until:flags.2?int sound:flags.3?string = InputPeerNotifySettings;
-peerNotifySettings#af509d20 flags:# show_previews:flags.0?Bool silent:flags.1?Bool mute_until:flags.2?int sound:flags.3?string = PeerNotifySettings;
-peerSettings#818426cd flags:# report_spam:flags.0?true add_contact:flags.1?true block_contact:flags.2?true share_contact:flags.3?true need_contacts_exception:flags.4?true report_geo:flags.5?true = PeerSettings;
-wallPaper#a437c3ed id:long flags:# creator:flags.0?true default:flags.1?true pattern:flags.3?true dark:flags.4?true access_hash:long slug:string document:Document settings:flags.2?WallPaperSettings = WallPaper;
-wallPaperNoFile#8af40b25 flags:# default:flags.1?true dark:flags.4?true settings:flags.2?WallPaperSettings = WallPaper;
-inputReportReasonSpam#58dbcab8 = ReportReason;
-inputReportReasonViolence#1e22c78d = ReportReason;
-inputReportReasonPornography#2e59d922 = ReportReason;
-inputReportReasonChildAbuse#adf44ee3 = ReportReason;
-inputReportReasonOther#e1746d0a text:string = ReportReason;
-inputReportReasonCopyright#9b89f93a = ReportReason;
-inputReportReasonGeoIrrelevant#dbd4feed = ReportReason;
-userFull#edf17c12 flags:# blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true can_pin_message:flags.7?true has_scheduled:flags.12?true user:User about:flags.1?string settings:PeerSettings profile_photo:flags.2?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo pinned_msg_id:flags.6?int common_chats_count:int folder_id:flags.11?int = UserFull;
-contact#f911c994 user_id:int mutual:Bool = Contact;
-importedContact#d0028438 user_id:int client_id:long = ImportedContact;
-contactBlocked#561bc879 user_id:int date:int = ContactBlocked;
-contactStatus#d3680c61 user_id:int status:UserStatus = ContactStatus;
-contacts.contactsNotModified#b74ba9d2 = contacts.Contacts;
-contacts.contacts#eae87e42 contacts:Vector<Contact> saved_count:int users:Vector<User> = contacts.Contacts;
-contacts.importedContacts#77d01c3b imported:Vector<ImportedContact> popular_invites:Vector<PopularContact> retry_contacts:Vector<long> users:Vector<User> = contacts.ImportedContacts;
-contacts.blocked#1c138d15 blocked:Vector<ContactBlocked> users:Vector<User> = contacts.Blocked;
-contacts.blockedSlice#900802a1 count:int blocked:Vector<ContactBlocked> users:Vector<User> = contacts.Blocked;
-messages.dialogs#15ba6c40 dialogs:Vector<Dialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Dialogs;
-messages.dialogsSlice#71e094f3 count:int dialogs:Vector<Dialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Dialogs;
-messages.dialogsNotModified#f0e3e596 count:int = messages.Dialogs;
-messages.messages#8c718e87 messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;
-messages.messagesSlice#c8edce1e flags:# inexact:flags.1?true count:int next_rate:flags.0?int messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;
-messages.channelMessages#99262e37 flags:# inexact:flags.1?true pts:int count:int messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;
-messages.messagesNotModified#74535f21 count:int = messages.Messages;
-messages.chats#64ff9fd5 chats:Vector<Chat> = messages.Chats;
-messages.chatsSlice#9cd81144 count:int chats:Vector<Chat> = messages.Chats;
-messages.chatFull#e5d7d19c full_chat:ChatFull chats:Vector<Chat> users:Vector<User> = messages.ChatFull;
-messages.affectedHistory#b45c69d1 pts:int pts_count:int offset:int = messages.AffectedHistory;
-inputMessagesFilterEmpty#57e2f66c = MessagesFilter;
-inputMessagesFilterPhotos#9609a51c = MessagesFilter;
-inputMessagesFilterVideo#9fc00e65 = MessagesFilter;
-inputMessagesFilterPhotoVideo#56e9f0e4 = MessagesFilter;
-inputMessagesFilterDocument#9eddf188 = MessagesFilter;
-inputMessagesFilterUrl#7ef0dd87 = MessagesFilter;
-inputMessagesFilterGif#ffc86587 = MessagesFilter;
-inputMessagesFilterVoice#50f5c392 = MessagesFilter;
-inputMessagesFilterMusic#3751b49e = MessagesFilter;
-inputMessagesFilterChatPhotos#3a20ecb8 = MessagesFilter;
-inputMessagesFilterPhoneCalls#80c99768 flags:# missed:flags.0?true = MessagesFilter;
-inputMessagesFilterRoundVoice#7a7c17a4 = MessagesFilter;
-inputMessagesFilterRoundVideo#b549da53 = MessagesFilter;
-inputMessagesFilterMyMentions#c1f8e69a = MessagesFilter;
-inputMessagesFilterGeo#e7026d0d = MessagesFilter;
-inputMessagesFilterContacts#e062db83 = MessagesFilter;
-updateNewMessage#1f2b0afd message:Message pts:int pts_count:int = Update;
-updateMessageID#4e90bfd6 id:int random_id:long = Update;
-updateDeleteMessages#a20db0e5 messages:Vector<int> pts:int pts_count:int = Update;
-updateUserTyping#5c486927 user_id:int action:SendMessageAction = Update;
-updateChatUserTyping#9a65ea1f chat_id:int user_id:int action:SendMessageAction = Update;
-updateChatParticipants#7761198 participants:ChatParticipants = Update;
-updateUserStatus#1bfbd823 user_id:int status:UserStatus = Update;
-updateUserName#a7332b73 user_id:int first_name:string last_name:string username:string = Update;
-updateUserPhoto#95313b0c user_id:int date:int photo:UserProfilePhoto previous:Bool = Update;
-updateNewEncryptedMessage#12bcbd9a message:EncryptedMessage qts:int = Update;
-updateEncryptedChatTyping#1710f156 chat_id:int = Update;
-updateEncryption#b4a2e88d chat:EncryptedChat date:int = Update;
-updateEncryptedMessagesRead#38fe25b7 chat_id:int max_date:int date:int = Update;
-updateChatParticipantAdd#ea4b0e5c chat_id:int user_id:int inviter_id:int date:int version:int = Update;
-updateChatParticipantDelete#6e5f8c22 chat_id:int user_id:int version:int = Update;
-updateDcOptions#8e5e9873 dc_options:Vector<DcOption> = Update;
-updateUserBlocked#80ece81a user_id:int blocked:Bool = Update;
-updateNotifySettings#bec268ef peer:NotifyPeer notify_settings:PeerNotifySettings = Update;
-updateServiceNotification#ebe46819 flags:# popup:flags.0?true inbox_date:flags.1?int type:string message:string media:MessageMedia entities:Vector<MessageEntity> = Update;
-updatePrivacy#ee3b272a key:PrivacyKey rules:Vector<PrivacyRule> = Update;
-updateUserPhone#12b9417b user_id:int phone:string = Update;
-updateReadHistoryInbox#9c974fdf flags:# folder_id:flags.0?int peer:Peer max_id:int still_unread_count:int pts:int pts_count:int = Update;
-updateReadHistoryOutbox#2f2f21bf peer:Peer max_id:int pts:int pts_count:int = Update;
-updateWebPage#7f891213 webpage:WebPage pts:int pts_count:int = Update;
-updateReadMessagesContents#68c13933 messages:Vector<int> pts:int pts_count:int = Update;
-updateChannelTooLong#eb0467fb flags:# channel_id:int pts:flags.0?int = Update;
-updateChannel#b6d45656 channel_id:int = Update;
-updateNewChannelMessage#62ba04d9 message:Message pts:int pts_count:int = Update;
-updateReadChannelInbox#330b5424 flags:# folder_id:flags.0?int channel_id:int max_id:int still_unread_count:int pts:int = Update;
-updateDeleteChannelMessages#c37521c9 channel_id:int messages:Vector<int> pts:int pts_count:int = Update;
-updateChannelMessageViews#98a12b4b channel_id:int id:int views:int = Update;
-updateChatParticipantAdmin#b6901959 chat_id:int user_id:int is_admin:Bool version:int = Update;
-updateNewStickerSet#688a30aa stickerset:messages.StickerSet = Update;
-updateStickerSetsOrder#bb2d201 flags:# masks:flags.0?true order:Vector<long> = Update;
-updateStickerSets#43ae3dec = Update;
-updateSavedGifs#9375341e = Update;
-updateBotInlineQuery#54826690 flags:# query_id:long user_id:int query:string geo:flags.0?GeoPoint offset:string = Update;
-updateBotInlineSend#e48f964 flags:# user_id:int query:string geo:flags.0?GeoPoint id:string msg_id:flags.1?InputBotInlineMessageID = Update;
-updateEditChannelMessage#1b3f4df7 message:Message pts:int pts_count:int = Update;
-updateChannelPinnedMessage#98592475 channel_id:int id:int = Update;
-updateBotCallbackQuery#e73547e1 flags:# query_id:long user_id:int peer:Peer msg_id:int chat_instance:long data:flags.0?bytes game_short_name:flags.1?string = Update;
-updateEditMessage#e40370a3 message:Message pts:int pts_count:int = Update;
-updateInlineBotCallbackQuery#f9d27a5a flags:# query_id:long user_id:int msg_id:InputBotInlineMessageID chat_instance:long data:flags.0?bytes game_short_name:flags.1?string = Update;
-updateReadChannelOutbox#25d6c9c7 channel_id:int max_id:int = Update;
-updateDraftMessage#ee2bb969 peer:Peer draft:DraftMessage = Update;
-updateReadFeaturedStickers#571d2742 = Update;
-updateRecentStickers#9a422c20 = Update;
-updateConfig#a229dd06 = Update;
-updatePtsChanged#3354678f = Update;
-updateChannelWebPage#40771900 channel_id:int webpage:WebPage pts:int pts_count:int = Update;
-updateDialogPinned#6e6fe51c flags:# pinned:flags.0?true folder_id:flags.1?int peer:DialogPeer = Update;
-updatePinnedDialogs#fa0f3ca2 flags:# folder_id:flags.1?int order:flags.0?Vector<DialogPeer> = Update;
-updateBotWebhookJSON#8317c0c3 data:DataJSON = Update;
-updateBotWebhookJSONQuery#9b9240a6 query_id:long data:DataJSON timeout:int = Update;
-updateBotShippingQuery#e0cdc940 query_id:long user_id:int payload:bytes shipping_address:PostAddress = Update;
-updateBotPrecheckoutQuery#5d2f3aa9 flags:# query_id:long user_id:int payload:bytes info:flags.0?PaymentRequestedInfo shipping_option_id:flags.1?string currency:string total_amount:long = Update;
-updatePhoneCall#ab0f6b1e phone_call:PhoneCall = Update;
-updateLangPackTooLong#46560264 lang_code:string = Update;
-updateLangPack#56022f4d difference:LangPackDifference = Update;
-updateFavedStickers#e511996d = Update;
-updateChannelReadMessagesContents#89893b45 channel_id:int messages:Vector<int> = Update;
-updateContactsReset#7084a7be = Update;
-updateChannelAvailableMessages#70db6837 channel_id:int available_min_id:int = Update;
-updateDialogUnreadMark#e16459c3 flags:# unread:flags.0?true peer:DialogPeer = Update;
-updateUserPinnedMessage#4c43da18 user_id:int id:int = Update;
-updateChatPinnedMessage#e10db349 chat_id:int id:int version:int = Update;
-updateMessagePoll#aca1657b flags:# poll_id:long poll:flags.0?Poll results:PollResults = Update;
-updateChatDefaultBannedRights#54c01850 peer:Peer default_banned_rights:ChatBannedRights version:int = Update;
-updateFolderPeers#19360dc0 folder_peers:Vector<FolderPeer> pts:int pts_count:int = Update;
-updatePeerSettings#6a7e7366 peer:Peer settings:PeerSettings = Update;
-updatePeerLocated#b4afcfb0 peers:Vector<PeerLocated> = Update;
-updateNewScheduledMessage#39a51dfb message:Message = Update;
-updateDeleteScheduledMessages#90866cee peer:Peer messages:Vector<int> = Update;
-updateTheme#8216fba3 theme:Theme = Update;
-updateGeoLiveViewed#871fb939 peer:Peer msg_id:int = Update;
-updateLoginToken#564fe691 = Update;
-updateMessagePollVote#42f88f2c poll_id:long user_id:int options:Vector<bytes> = Update;
-updateDialogFilter#26ffde7d flags:# id:int filter:flags.0?DialogFilter = Update;
-updateDialogFilterOrder#a5d72105 order:Vector<int> = Update;
-updateDialogFilters#3504914f = Update;
-updates.state#a56c2a3e pts:int qts:int date:int seq:int unread_count:int = updates.State;
-updates.differenceEmpty#5d75a138 date:int seq:int = updates.Difference;
-updates.difference#f49ca0 new_messages:Vector<Message> new_encrypted_messages:Vector<EncryptedMessage> other_updates:Vector<Update> chats:Vector<Chat> users:Vector<User> state:updates.State = updates.Difference;
-updates.differenceSlice#a8fb1981 new_messages:Vector<Message> new_encrypted_messages:Vector<EncryptedMessage> other_updates:Vector<Update> chats:Vector<Chat> users:Vector<User> intermediate_state:updates.State = updates.Difference;
-updates.differenceTooLong#4afe8f6d pts:int = updates.Difference;
-updatesTooLong#e317af7e = Updates;
-updateShortMessage#914fbf11 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int user_id:int message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to_msg_id:flags.3?int entities:flags.7?Vector<MessageEntity> = Updates;
-updateShortChatMessage#16812688 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int from_id:int chat_id:int message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to_msg_id:flags.3?int entities:flags.7?Vector<MessageEntity> = Updates;
-updateShort#78d4dec1 update:Update date:int = Updates;
-updatesCombined#725b04c3 updates:Vector<Update> users:Vector<User> chats:Vector<Chat> date:int seq_start:int seq:int = Updates;
-updates#74ae4240 updates:Vector<Update> users:Vector<User> chats:Vector<Chat> date:int seq:int = Updates;
-updateShortSentMessage#11f1331c flags:# out:flags.1?true id:int pts:int pts_count:int date:int media:flags.9?MessageMedia entities:flags.7?Vector<MessageEntity> = Updates;
-photos.photos#8dca6aa5 photos:Vector<Photo> users:Vector<User> = photos.Photos;
-photos.photosSlice#15051f54 count:int photos:Vector<Photo> users:Vector<User> = photos.Photos;
-photos.photo#20212ca8 photo:Photo users:Vector<User> = photos.Photo;
-upload.file#96a18d5 type:storage.FileType mtime:int bytes:bytes = upload.File;
-upload.fileCdnRedirect#f18cda44 dc_id:int file_token:bytes encryption_key:bytes encryption_iv:bytes file_hashes:Vector<FileHash> = upload.File;
-dcOption#18b7a10d flags:# ipv6:flags.0?true media_only:flags.1?true tcpo_only:flags.2?true cdn:flags.3?true static:flags.4?true id:int ip_address:string port:int secret:flags.10?bytes = DcOption;
-config#330b4067 flags:# phonecalls_enabled:flags.1?true default_p2p_contacts:flags.3?true preload_featured_stickers:flags.4?true ignore_phone_entities:flags.5?true revoke_pm_inbox:flags.6?true blocked_mode:flags.8?true pfs_enabled:flags.13?true date:int expires:int test_mode:Bool this_dc:int dc_options:Vector<DcOption> dc_txt_domain_name:string chat_size_max:int megagroup_size_max:int forwarded_count_max:int online_update_period_ms:int offline_blur_timeout_ms:int offline_idle_timeout_ms:int online_cloud_timeout_ms:int notify_cloud_delay_ms:int notify_default_delay_ms:int push_chat_period_ms:int push_chat_limit:int saved_gifs_limit:int edit_time_limit:int revoke_time_limit:int revoke_pm_time_limit:int rating_e_decay:int stickers_recent_limit:int stickers_faved_limit:int channels_read_media_period:int tmp_sessions:flags.0?int pinned_dialogs_count_max:int pinned_infolder_count_max:int call_receive_timeout_ms:int call_ring_timeout_ms:int call_connect_timeout_ms:int call_packet_timeout_ms:int me_url_prefix:string autoupdate_url_prefix:flags.7?string gif_search_username:flags.9?string venue_search_username:flags.10?string img_search_username:flags.11?string static_maps_provider:flags.12?string caption_length_max:int message_length_max:int webfile_dc_id:int suggested_lang_code:flags.2?string lang_pack_version:flags.2?int base_lang_pack_version:flags.2?int = Config;
-nearestDc#8e1a1775 country:string this_dc:int nearest_dc:int = NearestDc;
-help.appUpdate#1da7158f flags:# can_not_skip:flags.0?true id:int version:string text:string entities:Vector<MessageEntity> document:flags.1?Document url:flags.2?string = help.AppUpdate;
-help.noAppUpdate#c45a6536 = help.AppUpdate;
-help.inviteText#18cb9f78 message:string = help.InviteText;
-encryptedChatEmpty#ab7ec0a0 id:int = EncryptedChat;
-encryptedChatWaiting#3bf703dc id:int access_hash:long date:int admin_id:int participant_id:int = EncryptedChat;
-encryptedChatRequested#c878527e id:int access_hash:long date:int admin_id:int participant_id:int g_a:bytes = EncryptedChat;
-encryptedChat#fa56ce36 id:int access_hash:long date:int admin_id:int participant_id:int g_a_or_b:bytes key_fingerprint:long = EncryptedChat;
-encryptedChatDiscarded#13d6dd27 id:int = EncryptedChat;
-inputEncryptedChat#f141b5e1 chat_id:int access_hash:long = InputEncryptedChat;
-encryptedFileEmpty#c21f497e = EncryptedFile;
-encryptedFile#4a70994c id:long access_hash:long size:int dc_id:int key_fingerprint:int = EncryptedFile;
-inputEncryptedFileEmpty#1837c364 = InputEncryptedFile;
-inputEncryptedFileUploaded#64bd0306 id:long parts:int md5_checksum:string key_fingerprint:int = InputEncryptedFile;
-inputEncryptedFile#5a17b5e5 id:long access_hash:long = InputEncryptedFile;
-inputEncryptedFileBigUploaded#2dc173c8 id:long parts:int key_fingerprint:int = InputEncryptedFile;
-encryptedMessage#ed18c118 random_id:long chat_id:int date:int bytes:bytes file:EncryptedFile = EncryptedMessage;
-encryptedMessageService#23734b06 random_id:long chat_id:int date:int bytes:bytes = EncryptedMessage;
-messages.dhConfigNotModified#c0e24635 random:bytes = messages.DhConfig;
-messages.dhConfig#2c221edd g:int p:bytes version:int random:bytes = messages.DhConfig;
-messages.sentEncryptedMessage#560f8935 date:int = messages.SentEncryptedMessage;
-messages.sentEncryptedFile#9493ff32 date:int file:EncryptedFile = messages.SentEncryptedMessage;
-inputDocumentEmpty#72f0eaae = InputDocument;
-inputDocument#1abfb575 id:long access_hash:long file_reference:bytes = InputDocument;
-documentEmpty#36f8c871 id:long = Document;
-document#9ba29cc1 flags:# id:long access_hash:long file_reference:bytes date:int mime_type:string size:int thumbs:flags.0?Vector<PhotoSize> dc_id:int attributes:Vector<DocumentAttribute> = Document;
-help.support#17c6b5f6 phone_number:string user:User = help.Support;
-notifyPeer#9fd40bd8 peer:Peer = NotifyPeer;
-notifyUsers#b4c83b4c = NotifyPeer;
-notifyChats#c007cec3 = NotifyPeer;
-notifyBroadcasts#d612e8ef = NotifyPeer;
-sendMessageTypingAction#16bf744e = SendMessageAction;
-sendMessageCancelAction#fd5ec8f5 = SendMessageAction;
-sendMessageRecordVideoAction#a187d66f = SendMessageAction;
-sendMessageUploadVideoAction#e9763aec progress:int = SendMessageAction;
-sendMessageRecordAudioAction#d52f73f7 = SendMessageAction;
-sendMessageUploadAudioAction#f351d7ab progress:int = SendMessageAction;
-sendMessageUploadPhotoAction#d1d34a26 progress:int = SendMessageAction;
-sendMessageUploadDocumentAction#aa0cd9e4 progress:int = SendMessageAction;
-sendMessageGeoLocationAction#176f8ba1 = SendMessageAction;
-sendMessageChooseContactAction#628cbc6f = SendMessageAction;
-sendMessageGamePlayAction#dd6a8f48 = SendMessageAction;
-sendMessageRecordRoundAction#88f27fbc = SendMessageAction;
-sendMessageUploadRoundAction#243e1c66 progress:int = SendMessageAction;
-contacts.found#b3134d9d my_results:Vector<Peer> results:Vector<Peer> chats:Vector<Chat> users:Vector<User> = contacts.Found;
-inputPrivacyKeyStatusTimestamp#4f96cb18 = InputPrivacyKey;
-inputPrivacyKeyChatInvite#bdfb0426 = InputPrivacyKey;
-inputPrivacyKeyPhoneCall#fabadc5f = InputPrivacyKey;
-inputPrivacyKeyPhoneP2P#db9e70d2 = InputPrivacyKey;
-inputPrivacyKeyForwards#a4dd4c08 = InputPrivacyKey;
-inputPrivacyKeyProfilePhoto#5719bacc = InputPrivacyKey;
-inputPrivacyKeyPhoneNumber#352dafa = InputPrivacyKey;
-inputPrivacyKeyAddedByPhone#d1219bdd = InputPrivacyKey;
-privacyKeyStatusTimestamp#bc2eab30 = PrivacyKey;
-privacyKeyChatInvite#500e6dfa = PrivacyKey;
-privacyKeyPhoneCall#3d662b7b = PrivacyKey;
-privacyKeyPhoneP2P#39491cc8 = PrivacyKey;
-privacyKeyForwards#69ec56a3 = PrivacyKey;
-privacyKeyProfilePhoto#96151fed = PrivacyKey;
-privacyKeyPhoneNumber#d19ae46d = PrivacyKey;
-privacyKeyAddedByPhone#42ffd42b = PrivacyKey;
-inputPrivacyValueAllowContacts#d09e07b = InputPrivacyRule;
-inputPrivacyValueAllowAll#184b35ce = InputPrivacyRule;
-inputPrivacyValueAllowUsers#131cc67f users:Vector<InputUser> = InputPrivacyRule;
-inputPrivacyValueDisallowContacts#ba52007 = InputPrivacyRule;
-inputPrivacyValueDisallowAll#d66b66c9 = InputPrivacyRule;
-inputPrivacyValueDisallowUsers#90110467 users:Vector<InputUser> = InputPrivacyRule;
-inputPrivacyValueAllowChatParticipants#4c81c1ba chats:Vector<int> = InputPrivacyRule;
-inputPrivacyValueDisallowChatParticipants#d82363af chats:Vector<int> = InputPrivacyRule;
-privacyValueAllowContacts#fffe1bac = PrivacyRule;
-privacyValueAllowAll#65427b82 = PrivacyRule;
-privacyValueAllowUsers#4d5bbe0c users:Vector<int> = PrivacyRule;
-privacyValueDisallowContacts#f888fa1a = PrivacyRule;
-privacyValueDisallowAll#8b73e763 = PrivacyRule;
-privacyValueDisallowUsers#c7f49b7 users:Vector<int> = PrivacyRule;
-privacyValueAllowChatParticipants#18be796b chats:Vector<int> = PrivacyRule;
-privacyValueDisallowChatParticipants#acae0690 chats:Vector<int> = PrivacyRule;
-account.privacyRules#50a04e45 rules:Vector<PrivacyRule> chats:Vector<Chat> users:Vector<User> = account.PrivacyRules;
-accountDaysTTL#b8d0afdf days:int = AccountDaysTTL;
-documentAttributeImageSize#6c37c15c w:int h:int = DocumentAttribute;
-documentAttributeAnimated#11b58939 = DocumentAttribute;
-documentAttributeSticker#6319d612 flags:# mask:flags.1?true alt:string stickerset:InputStickerSet mask_coords:flags.0?MaskCoords = DocumentAttribute;
-documentAttributeVideo#ef02ce6 flags:# round_message:flags.0?true supports_streaming:flags.1?true duration:int w:int h:int = DocumentAttribute;
-documentAttributeAudio#9852f9c6 flags:# voice:flags.10?true duration:int title:flags.0?string performer:flags.1?string waveform:flags.2?bytes = DocumentAttribute;
-documentAttributeFilename#15590068 file_name:string = DocumentAttribute;
-documentAttributeHasStickers#9801d2f7 = DocumentAttribute;
-messages.stickersNotModified#f1749a22 = messages.Stickers;
-messages.stickers#e4599bbd hash:int stickers:Vector<Document> = messages.Stickers;
-stickerPack#12b299d4 emoticon:string documents:Vector<long> = StickerPack;
-messages.allStickersNotModified#e86602c3 = messages.AllStickers;
-messages.allStickers#edfd405f hash:int sets:Vector<StickerSet> = messages.AllStickers;
-messages.affectedMessages#84d19185 pts:int pts_count:int = messages.AffectedMessages;
-webPageEmpty#eb1477e8 id:long = WebPage;
-webPagePending#c586da1c id:long date:int = WebPage;
-webPage#e89c45b2 flags:# id:long url:string display_url:string hash:int type:flags.0?string site_name:flags.1?string title:flags.2?string description:flags.3?string photo:flags.4?Photo embed_url:flags.5?string embed_type:flags.5?string embed_width:flags.6?int embed_height:flags.6?int duration:flags.7?int author:flags.8?string document:flags.9?Document cached_page:flags.10?Page attributes:flags.12?Vector<WebPageAttribute> = WebPage;
-webPageNotModified#7311ca11 flags:# cached_page_views:flags.0?int = WebPage;
-authorization#ad01d61d flags:# current:flags.0?true official_app:flags.1?true password_pending:flags.2?true hash:long device_model:string platform:string system_version:string api_id:int app_name:string app_version:string date_created:int date_active:int ip:string country:string region:string = Authorization;
-account.authorizations#1250abde authorizations:Vector<Authorization> = account.Authorizations;
-account.password#ad2641f8 flags:# has_recovery:flags.0?true has_secure_values:flags.1?true has_password:flags.2?true current_algo:flags.2?PasswordKdfAlgo srp_B:flags.2?bytes srp_id:flags.2?long hint:flags.3?string email_unconfirmed_pattern:flags.4?string new_algo:PasswordKdfAlgo new_secure_algo:SecurePasswordKdfAlgo secure_random:bytes = account.Password;
-account.passwordSettings#9a5c33e5 flags:# email:flags.0?string secure_settings:flags.1?SecureSecretSettings = account.PasswordSettings;
-account.passwordInputSettings#c23727c9 flags:# new_algo:flags.0?PasswordKdfAlgo new_password_hash:flags.0?bytes hint:flags.0?string email:flags.1?string new_secure_settings:flags.2?SecureSecretSettings = account.PasswordInputSettings;
-auth.passwordRecovery#137948a5 email_pattern:string = auth.PasswordRecovery;
-receivedNotifyMessage#a384b779 id:int flags:int = ReceivedNotifyMessage;
-chatInviteEmpty#69df3769 = ExportedChatInvite;
-chatInviteExported#fc2e05bc link:string = ExportedChatInvite;
-chatInviteAlready#5a686d7c chat:Chat = ChatInvite;
-chatInvite#dfc2f58e flags:# channel:flags.0?true broadcast:flags.1?true public:flags.2?true megagroup:flags.3?true title:string photo:Photo participants_count:int participants:flags.4?Vector<User> = ChatInvite;
-inputStickerSetEmpty#ffb62b95 = InputStickerSet;
-inputStickerSetID#9de7a269 id:long access_hash:long = InputStickerSet;
-inputStickerSetShortName#861cc8a0 short_name:string = InputStickerSet;
-inputStickerSetAnimatedEmoji#28703c8 = InputStickerSet;
-inputStickerSetDice#e67f520e emoticon:string = InputStickerSet;
-stickerSet#eeb46f27 flags:# archived:flags.1?true official:flags.2?true masks:flags.3?true animated:flags.5?true installed_date:flags.0?int id:long access_hash:long title:string short_name:string thumb:flags.4?PhotoSize thumb_dc_id:flags.4?int count:int hash:int = StickerSet;
-messages.stickerSet#b60a24a6 set:StickerSet packs:Vector<StickerPack> documents:Vector<Document> = messages.StickerSet;
-botCommand#c27ac8c7 command:string description:string = BotCommand;
-botInfo#98e81d3a user_id:int description:string commands:Vector<BotCommand> = BotInfo;
-keyboardButton#a2fa4880 text:string = KeyboardButton;
-keyboardButtonUrl#258aff05 text:string url:string = KeyboardButton;
-keyboardButtonCallback#683a5e46 text:string data:bytes = KeyboardButton;
-keyboardButtonRequestPhone#b16a6c29 text:string = KeyboardButton;
-keyboardButtonRequestGeoLocation#fc796b3f text:string = KeyboardButton;
-keyboardButtonSwitchInline#568a748 flags:# same_peer:flags.0?true text:string query:string = KeyboardButton;
-keyboardButtonGame#50f41ccf text:string = KeyboardButton;
-keyboardButtonBuy#afd93fbb text:string = KeyboardButton;
-keyboardButtonUrlAuth#10b78d29 flags:# text:string fwd_text:flags.0?string url:string button_id:int = KeyboardButton;
-inputKeyboardButtonUrlAuth#d02e7fd4 flags:# request_write_access:flags.0?true text:string fwd_text:flags.1?string url:string bot:InputUser = KeyboardButton;
-keyboardButtonRequestPoll#bbc7515d flags:# quiz:flags.0?Bool text:string = KeyboardButton;
-keyboardButtonRow#77608b83 buttons:Vector<KeyboardButton> = KeyboardButtonRow;
-replyKeyboardHide#a03e5b85 flags:# selective:flags.2?true = ReplyMarkup;
-replyKeyboardForceReply#f4108aa0 flags:# single_use:flags.1?true selective:flags.2?true = ReplyMarkup;
-replyKeyboardMarkup#3502758c flags:# resize:flags.0?true single_use:flags.1?true selective:flags.2?true rows:Vector<KeyboardButtonRow> = ReplyMarkup;
-replyInlineMarkup#48a30254 rows:Vector<KeyboardButtonRow> = ReplyMarkup;
-messageEntityUnknown#bb92ba95 offset:int length:int = MessageEntity;
-messageEntityMention#fa04579d offset:int length:int = MessageEntity;
-messageEntityHashtag#6f635b0d offset:int length:int = MessageEntity;
-messageEntityBotCommand#6cef8ac7 offset:int length:int = MessageEntity;
-messageEntityUrl#6ed02538 offset:int length:int = MessageEntity;
-messageEntityEmail#64e475c2 offset:int length:int = MessageEntity;
-messageEntityBold#bd610bc9 offset:int length:int = MessageEntity;
-messageEntityItalic#826f8b60 offset:int length:int = MessageEntity;
-messageEntityCode#28a20571 offset:int length:int = MessageEntity;
-messageEntityPre#73924be0 offset:int length:int language:string = MessageEntity;
-messageEntityTextUrl#76a6d327 offset:int length:int url:string = MessageEntity;
-messageEntityMentionName#352dca58 offset:int length:int user_id:int = MessageEntity;
-inputMessageEntityMentionName#208e68c9 offset:int length:int user_id:InputUser = MessageEntity;
-messageEntityPhone#9b69e34b offset:int length:int = MessageEntity;
-messageEntityCashtag#4c4e743f offset:int length:int = MessageEntity;
-messageEntityUnderline#9c4e7e8b offset:int length:int = MessageEntity;
-messageEntityStrike#bf0693d4 offset:int length:int = MessageEntity;
-messageEntityBlockquote#20df5d0 offset:int length:int = MessageEntity;
-messageEntityBankCard#761e6af4 offset:int length:int = MessageEntity;
-inputChannelEmpty#ee8c1e86 = InputChannel;
-inputChannel#afeb712e channel_id:int access_hash:long = InputChannel;
-inputChannelFromMessage#2a286531 peer:InputPeer msg_id:int channel_id:int = InputChannel;
-contacts.resolvedPeer#7f077ad9 peer:Peer chats:Vector<Chat> users:Vector<User> = contacts.ResolvedPeer;
-messageRange#ae30253 min_id:int max_id:int = MessageRange;
-updates.channelDifferenceEmpty#3e11affb flags:# final:flags.0?true pts:int timeout:flags.1?int = updates.ChannelDifference;
-updates.channelDifferenceTooLong#a4bcc6fe flags:# final:flags.0?true timeout:flags.1?int dialog:Dialog messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = updates.ChannelDifference;
-updates.channelDifference#2064674e flags:# final:flags.0?true pts:int timeout:flags.1?int new_messages:Vector<Message> other_updates:Vector<Update> chats:Vector<Chat> users:Vector<User> = updates.ChannelDifference;
-channelMessagesFilterEmpty#94d42ee7 = ChannelMessagesFilter;
-channelMessagesFilter#cd77d957 flags:# exclude_new_messages:flags.1?true ranges:Vector<MessageRange> = ChannelMessagesFilter;
-channelParticipant#15ebac1d user_id:int date:int = ChannelParticipant;
-channelParticipantSelf#a3289a6d user_id:int inviter_id:int date:int = ChannelParticipant;
-channelParticipantCreator#808d15a4 flags:# user_id:int rank:flags.0?string = ChannelParticipant;
-channelParticipantAdmin#ccbebbaf flags:# can_edit:flags.0?true self:flags.1?true user_id:int inviter_id:flags.1?int promoted_by:int date:int admin_rights:ChatAdminRights rank:flags.2?string = ChannelParticipant;
-channelParticipantBanned#1c0facaf flags:# left:flags.0?true user_id:int kicked_by:int date:int banned_rights:ChatBannedRights = ChannelParticipant;
-channelParticipantsRecent#de3f3c79 = ChannelParticipantsFilter;
-channelParticipantsAdmins#b4608969 = ChannelParticipantsFilter;
-channelParticipantsKicked#a3b54985 q:string = ChannelParticipantsFilter;
-channelParticipantsBots#b0d1865b = ChannelParticipantsFilter;
-channelParticipantsBanned#1427a5e1 q:string = ChannelParticipantsFilter;
-channelParticipantsSearch#656ac4b q:string = ChannelParticipantsFilter;
-channelParticipantsContacts#bb6ae88d q:string = ChannelParticipantsFilter;
-channels.channelParticipants#f56ee2a8 count:int participants:Vector<ChannelParticipant> users:Vector<User> = channels.ChannelParticipants;
-channels.channelParticipantsNotModified#f0173fe9 = channels.ChannelParticipants;
-channels.channelParticipant#d0d9b163 participant:ChannelParticipant users:Vector<User> = channels.ChannelParticipant;
-help.termsOfService#780a0310 flags:# popup:flags.0?true id:DataJSON text:string entities:Vector<MessageEntity> min_age_confirm:flags.1?int = help.TermsOfService;
-foundGif#162ecc1f url:string thumb_url:string content_url:string content_type:string w:int h:int = FoundGif;
-foundGifCached#9c750409 url:string photo:Photo document:Document = FoundGif;
-messages.foundGifs#450a1c0a next_offset:int results:Vector<FoundGif> = messages.FoundGifs;
-messages.savedGifsNotModified#e8025ca2 = messages.SavedGifs;
-messages.savedGifs#2e0709a5 hash:int gifs:Vector<Document> = messages.SavedGifs;
-inputBotInlineMessageMediaAuto#3380c786 flags:# message:string entities:flags.1?Vector<MessageEntity> reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage;
-inputBotInlineMessageText#3dcd7a87 flags:# no_webpage:flags.0?true message:string entities:flags.1?Vector<MessageEntity> reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage;
-inputBotInlineMessageMediaGeo#c1b15d65 flags:# geo_point:InputGeoPoint period:int reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage;
-inputBotInlineMessageMediaVenue#417bbf11 flags:# geo_point:InputGeoPoint title:string address:string provider:string venue_id:string venue_type:string reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage;
-inputBotInlineMessageMediaContact#a6edbffd flags:# phone_number:string first_name:string last_name:string vcard:string reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage;
-inputBotInlineMessageGame#4b425864 flags:# reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage;
-inputBotInlineResult#88bf9319 flags:# id:string type:string title:flags.1?string description:flags.2?string url:flags.3?string thumb:flags.4?InputWebDocument content:flags.5?InputWebDocument send_message:InputBotInlineMessage = InputBotInlineResult;
-inputBotInlineResultPhoto#a8d864a7 id:string type:string photo:InputPhoto send_message:InputBotInlineMessage = InputBotInlineResult;
-inputBotInlineResultDocument#fff8fdc4 flags:# id:string type:string title:flags.1?string description:flags.2?string document:InputDocument send_message:InputBotInlineMessage = InputBotInlineResult;
-inputBotInlineResultGame#4fa417f2 id:string short_name:string send_message:InputBotInlineMessage = InputBotInlineResult;
-botInlineMessageMediaAuto#764cf810 flags:# message:string entities:flags.1?Vector<MessageEntity> reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
-botInlineMessageText#8c7f65e2 flags:# no_webpage:flags.0?true message:string entities:flags.1?Vector<MessageEntity> reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
-botInlineMessageMediaGeo#b722de65 flags:# geo:GeoPoint period:int reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
-botInlineMessageMediaVenue#8a86659c flags:# geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
-botInlineMessageMediaContact#18d1cdc2 flags:# phone_number:string first_name:string last_name:string vcard:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
-botInlineResult#11965f3a flags:# id:string type:string title:flags.1?string description:flags.2?string url:flags.3?string thumb:flags.4?WebDocument content:flags.5?WebDocument send_message:BotInlineMessage = BotInlineResult;
-botInlineMediaResult#17db940b flags:# id:string type:string photo:flags.0?Photo document:flags.1?Document title:flags.2?string description:flags.3?string send_message:BotInlineMessage = BotInlineResult;
-messages.botResults#947ca848 flags:# gallery:flags.0?true query_id:long next_offset:flags.1?string switch_pm:flags.2?InlineBotSwitchPM results:Vector<BotInlineResult> cache_time:int users:Vector<User> = messages.BotResults;
-exportedMessageLink#5dab1af4 link:string html:string = ExportedMessageLink;
-messageFwdHeader#ec338270 flags:# from_id:flags.0?int from_name:flags.5?string date:int channel_id:flags.1?int channel_post:flags.2?int post_author:flags.3?string saved_from_peer:flags.4?Peer saved_from_msg_id:flags.4?int = MessageFwdHeader;
-auth.codeTypeSms#72a3158c = auth.CodeType;
-auth.codeTypeCall#741cd3e3 = auth.CodeType;
-auth.codeTypeFlashCall#226ccefb = auth.CodeType;
-auth.sentCodeTypeApp#3dbb5986 length:int = auth.SentCodeType;
-auth.sentCodeTypeSms#c000bba2 length:int = auth.SentCodeType;
-auth.sentCodeTypeCall#5353e5a7 length:int = auth.SentCodeType;
-auth.sentCodeTypeFlashCall#ab03c6d9 pattern:string = auth.SentCodeType;
-messages.botCallbackAnswer#36585ea4 flags:# alert:flags.1?true has_url:flags.3?true native_ui:flags.4?true message:flags.0?string url:flags.2?string cache_time:int = messages.BotCallbackAnswer;
-messages.messageEditData#26b5dde6 flags:# caption:flags.0?true = messages.MessageEditData;
-inputBotInlineMessageID#890c3d89 dc_id:int id:long access_hash:long = InputBotInlineMessageID;
-inlineBotSwitchPM#3c20629f text:string start_param:string = InlineBotSwitchPM;
-messages.peerDialogs#3371c354 dialogs:Vector<Dialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> state:updates.State = messages.PeerDialogs;
-topPeer#edcdc05b peer:Peer rating:double = TopPeer;
-topPeerCategoryBotsPM#ab661b5b = TopPeerCategory;
-topPeerCategoryBotsInline#148677e2 = TopPeerCategory;
-topPeerCategoryCorrespondents#637b7ed = TopPeerCategory;
-topPeerCategoryGroups#bd17a14a = TopPeerCategory;
-topPeerCategoryChannels#161d9628 = TopPeerCategory;
-topPeerCategoryPhoneCalls#1e76a78c = TopPeerCategory;
-topPeerCategoryForwardUsers#a8406ca9 = TopPeerCategory;
-topPeerCategoryForwardChats#fbeec0f0 = TopPeerCategory;
-topPeerCategoryPeers#fb834291 category:TopPeerCategory count:int peers:Vector<TopPeer> = TopPeerCategoryPeers;
-contacts.topPeersNotModified#de266ef5 = contacts.TopPeers;
-contacts.topPeers#70b772a8 categories:Vector<TopPeerCategoryPeers> chats:Vector<Chat> users:Vector<User> = contacts.TopPeers;
-contacts.topPeersDisabled#b52c939d = contacts.TopPeers;
-draftMessageEmpty#1b0c841a flags:# date:flags.0?int = DraftMessage;
-draftMessage#fd8e711f flags:# no_webpage:flags.1?true reply_to_msg_id:flags.0?int message:string entities:flags.3?Vector<MessageEntity> date:int = DraftMessage;
-messages.featuredStickersNotModified#c6dc0c66 count:int = messages.FeaturedStickers;
-messages.featuredStickers#b6abc341 hash:int count:int sets:Vector<StickerSetCovered> unread:Vector<long> = messages.FeaturedStickers;
-messages.recentStickersNotModified#b17f890 = messages.RecentStickers;
-messages.recentStickers#22f3afb3 hash:int packs:Vector<StickerPack> stickers:Vector<Document> dates:Vector<int> = messages.RecentStickers;
-messages.archivedStickers#4fcba9c8 count:int sets:Vector<StickerSetCovered> = messages.ArchivedStickers;
-messages.stickerSetInstallResultSuccess#38641628 = messages.StickerSetInstallResult;
-messages.stickerSetInstallResultArchive#35e410a8 sets:Vector<StickerSetCovered> = messages.StickerSetInstallResult;
-stickerSetCovered#6410a5d2 set:StickerSet cover:Document = StickerSetCovered;
-stickerSetMultiCovered#3407e51b set:StickerSet covers:Vector<Document> = StickerSetCovered;
-maskCoords#aed6dbb2 n:int x:double y:double zoom:double = MaskCoords;
-inputStickeredMediaPhoto#4a992157 id:InputPhoto = InputStickeredMedia;
-inputStickeredMediaDocument#438865b id:InputDocument = InputStickeredMedia;
-game#bdf9653b flags:# id:long access_hash:long short_name:string title:string description:string photo:Photo document:flags.0?Document = Game;
-inputGameID#32c3e77 id:long access_hash:long = InputGame;
-inputGameShortName#c331e80a bot_id:InputUser short_name:string = InputGame;
-highScore#58fffcd0 pos:int user_id:int score:int = HighScore;
-messages.highScores#9a3bfd99 scores:Vector<HighScore> users:Vector<User> = messages.HighScores;
-textEmpty#dc3d824f = RichText;
-textPlain#744694e0 text:string = RichText;
-textBold#6724abc4 text:RichText = RichText;
-textItalic#d912a59c text:RichText = RichText;
-textUnderline#c12622c4 text:RichText = RichText;
-textStrike#9bf8bb95 text:RichText = RichText;
-textFixed#6c3f19b9 text:RichText = RichText;
-textUrl#3c2884c1 text:RichText url:string webpage_id:long = RichText;
-textEmail#de5a0dd6 text:RichText email:string = RichText;
-textConcat#7e6260d7 texts:Vector<RichText> = RichText;
-textSubscript#ed6a8504 text:RichText = RichText;
-textSuperscript#c7fb5e01 text:RichText = RichText;
-textMarked#34b8621 text:RichText = RichText;
-textPhone#1ccb966a text:RichText phone:string = RichText;
-textImage#81ccf4f document_id:long w:int h:int = RichText;
-textAnchor#35553762 text:RichText name:string = RichText;
-pageBlockUnsupported#13567e8a = PageBlock;
-pageBlockTitle#70abc3fd text:RichText = PageBlock;
-pageBlockSubtitle#8ffa9a1f text:RichText = PageBlock;
-pageBlockAuthorDate#baafe5e0 author:RichText published_date:int = PageBlock;
-pageBlockHeader#bfd064ec text:RichText = PageBlock;
-pageBlockSubheader#f12bb6e1 text:RichText = PageBlock;
-pageBlockParagraph#467a0766 text:RichText = PageBlock;
-pageBlockPreformatted#c070d93e text:RichText language:string = PageBlock;
-pageBlockFooter#48870999 text:RichText = PageBlock;
-pageBlockDivider#db20b188 = PageBlock;
-pageBlockAnchor#ce0d37b0 name:string = PageBlock;
-pageBlockList#e4e88011 items:Vector<PageListItem> = PageBlock;
-pageBlockBlockquote#263d7c26 text:RichText caption:RichText = PageBlock;
-pageBlockPullquote#4f4456d3 text:RichText caption:RichText = PageBlock;
-pageBlockPhoto#1759c560 flags:# photo_id:long caption:PageCaption url:flags.0?string webpage_id:flags.0?long = PageBlock;
-pageBlockVideo#7c8fe7b6 flags:# autoplay:flags.0?true loop:flags.1?true video_id:long caption:PageCaption = PageBlock;
-pageBlockCover#39f23300 cover:PageBlock = PageBlock;
-pageBlockEmbed#a8718dc5 flags:# full_width:flags.0?true allow_scrolling:flags.3?true url:flags.1?string html:flags.2?string poster_photo_id:flags.4?long w:flags.5?int h:flags.5?int caption:PageCaption = PageBlock;
-pageBlockEmbedPost#f259a80b url:string webpage_id:long author_photo_id:long author:string date:int blocks:Vector<PageBlock> caption:PageCaption = PageBlock;
-pageBlockCollage#65a0fa4d items:Vector<PageBlock> caption:PageCaption = PageBlock;
-pageBlockSlideshow#31f9590 items:Vector<PageBlock> caption:PageCaption = PageBlock;
-pageBlockChannel#ef1751b5 channel:Chat = PageBlock;
-pageBlockAudio#804361ea audio_id:long caption:PageCaption = PageBlock;
-pageBlockKicker#1e148390 text:RichText = PageBlock;
-pageBlockTable#bf4dea82 flags:# bordered:flags.0?true striped:flags.1?true title:RichText rows:Vector<PageTableRow> = PageBlock;
-pageBlockOrderedList#9a8ae1e1 items:Vector<PageListOrderedItem> = PageBlock;
-pageBlockDetails#76768bed flags:# open:flags.0?true blocks:Vector<PageBlock> title:RichText = PageBlock;
-pageBlockRelatedArticles#16115a96 title:RichText articles:Vector<PageRelatedArticle> = PageBlock;
-pageBlockMap#a44f3ef6 geo:GeoPoint zoom:int w:int h:int caption:PageCaption = PageBlock;
-phoneCallDiscardReasonMissed#85e42301 = PhoneCallDiscardReason;
-phoneCallDiscardReasonDisconnect#e095c1a0 = PhoneCallDiscardReason;
-phoneCallDiscardReasonHangup#57adc690 = PhoneCallDiscardReason;
-phoneCallDiscardReasonBusy#faf7e8c9 = PhoneCallDiscardReason;
-dataJSON#7d748d04 data:string = DataJSON;
-labeledPrice#cb296bf8 label:string amount:long = LabeledPrice;
-invoice#c30aa358 flags:# test:flags.0?true name_requested:flags.1?true phone_requested:flags.2?true email_requested:flags.3?true shipping_address_requested:flags.4?true flexible:flags.5?true phone_to_provider:flags.6?true email_to_provider:flags.7?true currency:string prices:Vector<LabeledPrice> = Invoice;
-paymentCharge#ea02c27e id:string provider_charge_id:string = PaymentCharge;
-postAddress#1e8caaeb street_line1:string street_line2:string city:string state:string country_iso2:string post_code:string = PostAddress;
-paymentRequestedInfo#909c3f94 flags:# name:flags.0?string phone:flags.1?string email:flags.2?string shipping_address:flags.3?PostAddress = PaymentRequestedInfo;
-paymentSavedCredentialsCard#cdc27a1f id:string title:string = PaymentSavedCredentials;
-webDocument#1c570ed1 url:string access_hash:long size:int mime_type:string attributes:Vector<DocumentAttribute> = WebDocument;
-webDocumentNoProxy#f9c8bcc6 url:string size:int mime_type:string attributes:Vector<DocumentAttribute> = WebDocument;
-inputWebDocument#9bed434d url:string size:int mime_type:string attributes:Vector<DocumentAttribute> = InputWebDocument;
-inputWebFileLocation#c239d686 url:string access_hash:long = InputWebFileLocation;
-inputWebFileGeoPointLocation#9f2221c9 geo_point:InputGeoPoint access_hash:long w:int h:int zoom:int scale:int = InputWebFileLocation;
-upload.webFile#21e753bc size:int mime_type:string file_type:storage.FileType mtime:int bytes:bytes = upload.WebFile;
-payments.paymentForm#3f56aea3 flags:# can_save_credentials:flags.2?true password_missing:flags.3?true bot_id:int invoice:Invoice provider_id:int url:string native_provider:flags.4?string native_params:flags.4?DataJSON saved_info:flags.0?PaymentRequestedInfo saved_credentials:flags.1?PaymentSavedCredentials users:Vector<User> = payments.PaymentForm;
-payments.validatedRequestedInfo#d1451883 flags:# id:flags.0?string shipping_options:flags.1?Vector<ShippingOption> = payments.ValidatedRequestedInfo;
-payments.paymentResult#4e5f810d updates:Updates = payments.PaymentResult;
-payments.paymentVerificationNeeded#d8411139 url:string = payments.PaymentResult;
-payments.paymentReceipt#500911e1 flags:# date:int bot_id:int invoice:Invoice provider_id:int info:flags.0?PaymentRequestedInfo shipping:flags.1?ShippingOption currency:string total_amount:long credentials_title:string users:Vector<User> = payments.PaymentReceipt;
-payments.savedInfo#fb8fe43c flags:# has_saved_credentials:flags.1?true saved_info:flags.0?PaymentRequestedInfo = payments.SavedInfo;
-inputPaymentCredentialsSaved#c10eb2cf id:string tmp_password:bytes = InputPaymentCredentials;
-inputPaymentCredentials#3417d728 flags:# save:flags.0?true data:DataJSON = InputPaymentCredentials;
-inputPaymentCredentialsApplePay#aa1c39f payment_data:DataJSON = InputPaymentCredentials;
-inputPaymentCredentialsAndroidPay#ca05d50e payment_token:DataJSON google_transaction_id:string = InputPaymentCredentials;
-account.tmpPassword#db64fd34 tmp_password:bytes valid_until:int = account.TmpPassword;
-shippingOption#b6213cdf id:string title:string prices:Vector<LabeledPrice> = ShippingOption;
-inputStickerSetItem#ffa0a496 flags:# document:InputDocument emoji:string mask_coords:flags.0?MaskCoords = InputStickerSetItem;
-inputPhoneCall#1e36fded id:long access_hash:long = InputPhoneCall;
-phoneCallEmpty#5366c915 id:long = PhoneCall;
-phoneCallWaiting#1b8f4ad1 flags:# video:flags.5?true id:long access_hash:long date:int admin_id:int participant_id:int protocol:PhoneCallProtocol receive_date:flags.0?int = PhoneCall;
-phoneCallRequested#87eabb53 flags:# video:flags.5?true id:long access_hash:long date:int admin_id:int participant_id:int g_a_hash:bytes protocol:PhoneCallProtocol = PhoneCall;
-phoneCallAccepted#997c454a flags:# video:flags.5?true id:long access_hash:long date:int admin_id:int participant_id:int g_b:bytes protocol:PhoneCallProtocol = PhoneCall;
-phoneCall#8742ae7f flags:# p2p_allowed:flags.5?true id:long access_hash:long date:int admin_id:int participant_id:int g_a_or_b:bytes key_fingerprint:long protocol:PhoneCallProtocol connections:Vector<PhoneConnection> start_date:int = PhoneCall;
-phoneCallDiscarded#50ca4de1 flags:# need_rating:flags.2?true need_debug:flags.3?true video:flags.5?true id:long reason:flags.0?PhoneCallDiscardReason duration:flags.1?int = PhoneCall;
-phoneConnection#9d4c17c0 id:long ip:string ipv6:string port:int peer_tag:bytes = PhoneConnection;
-phoneCallProtocol#fc878fc8 flags:# udp_p2p:flags.0?true udp_reflector:flags.1?true min_layer:int max_layer:int library_versions:Vector<string> = PhoneCallProtocol;
-phone.phoneCall#ec82e140 phone_call:PhoneCall users:Vector<User> = phone.PhoneCall;
-upload.cdnFileReuploadNeeded#eea8e46e request_token:bytes = upload.CdnFile;
-upload.cdnFile#a99fca4f bytes:bytes = upload.CdnFile;
-cdnPublicKey#c982eaba dc_id:int public_key:string = CdnPublicKey;
-cdnConfig#5725e40a public_keys:Vector<CdnPublicKey> = CdnConfig;
-langPackString#cad181f6 key:string value:string = LangPackString;
-langPackStringPluralized#6c47ac9f flags:# key:string zero_value:flags.0?string one_value:flags.1?string two_value:flags.2?string few_value:flags.3?string many_value:flags.4?string other_value:string = LangPackString;
-langPackStringDeleted#2979eeb2 key:string = LangPackString;
-langPackDifference#f385c1f6 lang_code:string from_version:int version:int strings:Vector<LangPackString> = LangPackDifference;
-langPackLanguage#eeca5ce3 flags:# official:flags.0?true rtl:flags.2?true beta:flags.3?true name:string native_name:string lang_code:string base_lang_code:flags.1?string plural_code:string strings_count:int translated_count:int translations_url:string = LangPackLanguage;
-channelAdminLogEventActionChangeTitle#e6dfb825 prev_value:string new_value:string = ChannelAdminLogEventAction;
-channelAdminLogEventActionChangeAbout#55188a2e prev_value:string new_value:string = ChannelAdminLogEventAction;
-channelAdminLogEventActionChangeUsername#6a4afc38 prev_value:string new_value:string = ChannelAdminLogEventAction;
-channelAdminLogEventActionChangePhoto#434bd2af prev_photo:Photo new_photo:Photo = ChannelAdminLogEventAction;
-channelAdminLogEventActionToggleInvites#1b7907ae new_value:Bool = ChannelAdminLogEventAction;
-channelAdminLogEventActionToggleSignatures#26ae0971 new_value:Bool = ChannelAdminLogEventAction;
-channelAdminLogEventActionUpdatePinned#e9e82c18 message:Message = ChannelAdminLogEventAction;
-channelAdminLogEventActionEditMessage#709b2405 prev_message:Message new_message:Message = ChannelAdminLogEventAction;
-channelAdminLogEventActionDeleteMessage#42e047bb message:Message = ChannelAdminLogEventAction;
-channelAdminLogEventActionParticipantJoin#183040d3 = ChannelAdminLogEventAction;
-channelAdminLogEventActionParticipantLeave#f89777f2 = ChannelAdminLogEventAction;
-channelAdminLogEventActionParticipantInvite#e31c34d8 participant:ChannelParticipant = ChannelAdminLogEventAction;
-channelAdminLogEventActionParticipantToggleBan#e6d83d7e prev_participant:ChannelParticipant new_participant:ChannelParticipant = ChannelAdminLogEventAction;
-channelAdminLogEventActionParticipantToggleAdmin#d5676710 prev_participant:ChannelParticipant new_participant:ChannelParticipant = ChannelAdminLogEventAction;
-channelAdminLogEventActionChangeStickerSet#b1c3caa7 prev_stickerset:InputStickerSet new_stickerset:InputStickerSet = ChannelAdminLogEventAction;
-channelAdminLogEventActionTogglePreHistoryHidden#5f5c95f1 new_value:Bool = ChannelAdminLogEventAction;
-channelAdminLogEventActionDefaultBannedRights#2df5fc0a prev_banned_rights:ChatBannedRights new_banned_rights:ChatBannedRights = ChannelAdminLogEventAction;
-channelAdminLogEventActionStopPoll#8f079643 message:Message = ChannelAdminLogEventAction;
-channelAdminLogEventActionChangeLinkedChat#a26f881b prev_value:int new_value:int = ChannelAdminLogEventAction;
-channelAdminLogEventActionChangeLocation#e6b76ae prev_value:ChannelLocation new_value:ChannelLocation = ChannelAdminLogEventAction;
-channelAdminLogEventActionToggleSlowMode#53909779 prev_value:int new_value:int = ChannelAdminLogEventAction;
-channelAdminLogEvent#3b5a3e40 id:long date:int user_id:int action:ChannelAdminLogEventAction = ChannelAdminLogEvent;
-channels.adminLogResults#ed8af74d events:Vector<ChannelAdminLogEvent> chats:Vector<Chat> users:Vector<User> = channels.AdminLogResults;
-channelAdminLogEventsFilter#ea107ae4 flags:# join:flags.0?true leave:flags.1?true invite:flags.2?true ban:flags.3?true unban:flags.4?true kick:flags.5?true unkick:flags.6?true promote:flags.7?true demote:flags.8?true info:flags.9?true settings:flags.10?true pinned:flags.11?true edit:flags.12?true delete:flags.13?true = ChannelAdminLogEventsFilter;
-popularContact#5ce14175 client_id:long importers:int = PopularContact;
-messages.favedStickersNotModified#9e8fa6d3 = messages.FavedStickers;
-messages.favedStickers#f37f2f16 hash:int packs:Vector<StickerPack> stickers:Vector<Document> = messages.FavedStickers;
-recentMeUrlUnknown#46e1d13d url:string = RecentMeUrl;
-recentMeUrlUser#8dbc3336 url:string user_id:int = RecentMeUrl;
-recentMeUrlChat#a01b22f9 url:string chat_id:int = RecentMeUrl;
-recentMeUrlChatInvite#eb49081d url:string chat_invite:ChatInvite = RecentMeUrl;
-recentMeUrlStickerSet#bc0a57dc url:string set:StickerSetCovered = RecentMeUrl;
-help.recentMeUrls#e0310d7 urls:Vector<RecentMeUrl> chats:Vector<Chat> users:Vector<User> = help.RecentMeUrls;
-inputSingleMedia#1cc6e91f flags:# media:InputMedia random_id:long message:string entities:flags.0?Vector<MessageEntity> = InputSingleMedia;
-webAuthorization#cac943f2 hash:long bot_id:int domain:string browser:string platform:string date_created:int date_active:int ip:string region:string = WebAuthorization;
-account.webAuthorizations#ed56c9fc authorizations:Vector<WebAuthorization> users:Vector<User> = account.WebAuthorizations;
-inputMessageID#a676a322 id:int = InputMessage;
-inputMessageReplyTo#bad88395 id:int = InputMessage;
-inputMessagePinned#86872538 = InputMessage;
-inputDialogPeer#fcaafeb7 peer:InputPeer = InputDialogPeer;
-inputDialogPeerFolder#64600527 folder_id:int = InputDialogPeer;
-dialogPeer#e56dbf05 peer:Peer = DialogPeer;
-dialogPeerFolder#514519e2 folder_id:int = DialogPeer;
-messages.foundStickerSetsNotModified#d54b65d = messages.FoundStickerSets;
-messages.foundStickerSets#5108d648 hash:int sets:Vector<StickerSetCovered> = messages.FoundStickerSets;
-fileHash#6242c773 offset:int limit:int hash:bytes = FileHash;
-inputClientProxy#75588b3f address:string port:int = InputClientProxy;
-help.proxyDataEmpty#e09e1fb8 expires:int = help.ProxyData;
-help.proxyDataPromo#2bf7ee23 expires:int peer:Peer chats:Vector<Chat> users:Vector<User> = help.ProxyData;
-help.termsOfServiceUpdateEmpty#e3309f7f expires:int = help.TermsOfServiceUpdate;
-help.termsOfServiceUpdate#28ecf961 expires:int terms_of_service:help.TermsOfService = help.TermsOfServiceUpdate;
-inputSecureFileUploaded#3334b0f0 id:long parts:int md5_checksum:string file_hash:bytes secret:bytes = InputSecureFile;
-inputSecureFile#5367e5be id:long access_hash:long = InputSecureFile;
-secureFileEmpty#64199744 = SecureFile;
-secureFile#e0277a62 id:long access_hash:long size:int dc_id:int date:int file_hash:bytes secret:bytes = SecureFile;
-secureData#8aeabec3 data:bytes data_hash:bytes secret:bytes = SecureData;
-securePlainPhone#7d6099dd phone:string = SecurePlainData;
-securePlainEmail#21ec5a5f email:string = SecurePlainData;
-secureValueTypePersonalDetails#9d2a81e3 = SecureValueType;
-secureValueTypePassport#3dac6a00 = SecureValueType;
-secureValueTypeDriverLicense#6e425c4 = SecureValueType;
-secureValueTypeIdentityCard#a0d0744b = SecureValueType;
-secureValueTypeInternalPassport#99a48f23 = SecureValueType;
-secureValueTypeAddress#cbe31e26 = SecureValueType;
-secureValueTypeUtilityBill#fc36954e = SecureValueType;
-secureValueTypeBankStatement#89137c0d = SecureValueType;
-secureValueTypeRentalAgreement#8b883488 = SecureValueType;
-secureValueTypePassportRegistration#99e3806a = SecureValueType;
-secureValueTypeTemporaryRegistration#ea02ec33 = SecureValueType;
-secureValueTypePhone#b320aadb = SecureValueType;
-secureValueTypeEmail#8e3ca7ee = SecureValueType;
-secureValue#187fa0ca flags:# type:SecureValueType data:flags.0?SecureData front_side:flags.1?SecureFile reverse_side:flags.2?SecureFile selfie:flags.3?SecureFile translation:flags.6?Vector<SecureFile> files:flags.4?Vector<SecureFile> plain_data:flags.5?SecurePlainData hash:bytes = SecureValue;
-inputSecureValue#db21d0a7 flags:# type:SecureValueType data:flags.0?SecureData front_side:flags.1?InputSecureFile reverse_side:flags.2?InputSecureFile selfie:flags.3?InputSecureFile translation:flags.6?Vector<InputSecureFile> files:flags.4?Vector<InputSecureFile> plain_data:flags.5?SecurePlainData = InputSecureValue;
-secureValueHash#ed1ecdb0 type:SecureValueType hash:bytes = SecureValueHash;
-secureValueErrorData#e8a40bd9 type:SecureValueType data_hash:bytes field:string text:string = SecureValueError;
-secureValueErrorFrontSide#be3dfa type:SecureValueType file_hash:bytes text:string = SecureValueError;
-secureValueErrorReverseSide#868a2aa5 type:SecureValueType file_hash:bytes text:string = SecureValueError;
-secureValueErrorSelfie#e537ced6 type:SecureValueType file_hash:bytes text:string = SecureValueError;
-secureValueErrorFile#7a700873 type:SecureValueType file_hash:bytes text:string = SecureValueError;
-secureValueErrorFiles#666220e9 type:SecureValueType file_hash:Vector<bytes> text:string = SecureValueError;
-secureValueError#869d758f type:SecureValueType hash:bytes text:string = SecureValueError;
-secureValueErrorTranslationFile#a1144770 type:SecureValueType file_hash:bytes text:string = SecureValueError;
-secureValueErrorTranslationFiles#34636dd8 type:SecureValueType file_hash:Vector<bytes> text:string = SecureValueError;
-secureCredentialsEncrypted#33f0ea47 data:bytes hash:bytes secret:bytes = SecureCredentialsEncrypted;
-account.authorizationForm#ad2e1cd8 flags:# required_types:Vector<SecureRequiredType> values:Vector<SecureValue> errors:Vector<SecureValueError> users:Vector<User> privacy_policy_url:flags.0?string = account.AuthorizationForm;
-account.sentEmailCode#811f854f email_pattern:string length:int = account.SentEmailCode;
-help.deepLinkInfoEmpty#66afa166 = help.DeepLinkInfo;
-help.deepLinkInfo#6a4ee832 flags:# update_app:flags.0?true message:string entities:flags.1?Vector<MessageEntity> = help.DeepLinkInfo;
-savedPhoneContact#1142bd56 phone:string first_name:string last_name:string date:int = SavedContact;
-account.takeout#4dba4501 id:long = account.Takeout;
-passwordKdfAlgoUnknown#d45ab096 = PasswordKdfAlgo;
-passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow#3a912d4a salt1:bytes salt2:bytes g:int p:bytes = PasswordKdfAlgo;
-securePasswordKdfAlgoUnknown#4a8537 = SecurePasswordKdfAlgo;
-securePasswordKdfAlgoPBKDF2HMACSHA512iter100000#bbf2dda0 salt:bytes = SecurePasswordKdfAlgo;
-securePasswordKdfAlgoSHA512#86471d92 salt:bytes = SecurePasswordKdfAlgo;
-secureSecretSettings#1527bcac secure_algo:SecurePasswordKdfAlgo secure_secret:bytes secure_secret_id:long = SecureSecretSettings;
-inputCheckPasswordEmpty#9880f658 = InputCheckPasswordSRP;
-inputCheckPasswordSRP#d27ff082 srp_id:long A:bytes M1:bytes = InputCheckPasswordSRP;
-secureRequiredType#829d99da flags:# native_names:flags.0?true selfie_required:flags.1?true translation_required:flags.2?true type:SecureValueType = SecureRequiredType;
-secureRequiredTypeOneOf#27477b4 types:Vector<SecureRequiredType> = SecureRequiredType;
-help.passportConfigNotModified#bfb9f457 = help.PassportConfig;
-help.passportConfig#a098d6af hash:int countries_langs:DataJSON = help.PassportConfig;
-inputAppEvent#1d1b1245 time:double type:string peer:long data:JSONValue = InputAppEvent;
-jsonObjectValue#c0de1bd9 key:string value:JSONValue = JSONObjectValue;
-jsonNull#3f6d7b68 = JSONValue;
-jsonBool#c7345e6a value:Bool = JSONValue;
-jsonNumber#2be0dfa4 value:double = JSONValue;
-jsonString#b71e767a value:string = JSONValue;
-jsonArray#f7444763 value:Vector<JSONValue> = JSONValue;
-jsonObject#99c1d49d value:Vector<JSONObjectValue> = JSONValue;
-pageTableCell#34566b6a flags:# header:flags.0?true align_center:flags.3?true align_right:flags.4?true valign_middle:flags.5?true valign_bottom:flags.6?true text:flags.7?RichText colspan:flags.1?int rowspan:flags.2?int = PageTableCell;
-pageTableRow#e0c0c5e5 cells:Vector<PageTableCell> = PageTableRow;
-pageCaption#6f747657 text:RichText credit:RichText = PageCaption;
-pageListItemText#b92fb6cd text:RichText = PageListItem;
-pageListItemBlocks#25e073fc blocks:Vector<PageBlock> = PageListItem;
-pageListOrderedItemText#5e068047 num:string text:RichText = PageListOrderedItem;
-pageListOrderedItemBlocks#98dd8936 num:string blocks:Vector<PageBlock> = PageListOrderedItem;
-pageRelatedArticle#b390dc08 flags:# url:string webpage_id:long title:flags.0?string description:flags.1?string photo_id:flags.2?long author:flags.3?string published_date:flags.4?int = PageRelatedArticle;
-page#98657f0d flags:# part:flags.0?true rtl:flags.1?true v2:flags.2?true url:string blocks:Vector<PageBlock> photos:Vector<Photo> documents:Vector<Document> views:flags.3?int = Page;
-help.supportName#8c05f1c9 name:string = help.SupportName;
-help.userInfoEmpty#f3ae2eed = help.UserInfo;
-help.userInfo#1eb3758 message:string entities:Vector<MessageEntity> author:string date:int = help.UserInfo;
-pollAnswer#6ca9c2e9 text:string option:bytes = PollAnswer;
-poll#86e18161 id:long flags:# closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true question:string answers:Vector<PollAnswer> close_period:flags.4?int close_date:flags.5?int = Poll;
-pollAnswerVoters#3b6ddad2 flags:# chosen:flags.0?true correct:flags.1?true option:bytes voters:int = PollAnswerVoters;
-pollResults#badcc1a3 flags:# min:flags.0?true results:flags.1?Vector<PollAnswerVoters> total_voters:flags.2?int recent_voters:flags.3?Vector<int> solution:flags.4?string solution_entities:flags.4?Vector<MessageEntity> = PollResults;
-chatOnlines#f041e250 onlines:int = ChatOnlines;
-statsURL#47a971e0 url:string = StatsURL;
-chatAdminRights#5fb224d5 flags:# change_info:flags.0?true post_messages:flags.1?true edit_messages:flags.2?true delete_messages:flags.3?true ban_users:flags.4?true invite_users:flags.5?true pin_messages:flags.7?true add_admins:flags.9?true = ChatAdminRights;
-chatBannedRights#9f120418 flags:# view_messages:flags.0?true send_messages:flags.1?true send_media:flags.2?true send_stickers:flags.3?true send_gifs:flags.4?true send_games:flags.5?true send_inline:flags.6?true embed_links:flags.7?true send_polls:flags.8?true change_info:flags.10?true invite_users:flags.15?true pin_messages:flags.17?true until_date:int = ChatBannedRights;
-inputWallPaper#e630b979 id:long access_hash:long = InputWallPaper;
-inputWallPaperSlug#72091c80 slug:string = InputWallPaper;
-inputWallPaperNoFile#8427bbac = InputWallPaper;
-account.wallPapersNotModified#1c199183 = account.WallPapers;
-account.wallPapers#702b65a9 hash:int wallpapers:Vector<WallPaper> = account.WallPapers;
-codeSettings#debebe83 flags:# allow_flashcall:flags.0?true current_number:flags.1?true allow_app_hash:flags.4?true = CodeSettings;
-wallPaperSettings#5086cf8 flags:# blur:flags.1?true motion:flags.2?true background_color:flags.0?int second_background_color:flags.4?int intensity:flags.3?int rotation:flags.4?int = WallPaperSettings;
-autoDownloadSettings#e04232f3 flags:# disabled:flags.0?true video_preload_large:flags.1?true audio_preload_next:flags.2?true phonecalls_less_data:flags.3?true photo_size_max:int video_size_max:int file_size_max:int video_upload_maxbitrate:int = AutoDownloadSettings;
-account.autoDownloadSettings#63cacf26 low:AutoDownloadSettings medium:AutoDownloadSettings high:AutoDownloadSettings = account.AutoDownloadSettings;
-emojiKeyword#d5b3b9f9 keyword:string emoticons:Vector<string> = EmojiKeyword;
-emojiKeywordDeleted#236df622 keyword:string emoticons:Vector<string> = EmojiKeyword;
-emojiKeywordsDifference#5cc761bd lang_code:string from_version:int version:int keywords:Vector<EmojiKeyword> = EmojiKeywordsDifference;
-emojiURL#a575739d url:string = EmojiURL;
-emojiLanguage#b3fb5361 lang_code:string = EmojiLanguage;
-fileLocationToBeDeprecated#bc7fc6cd volume_id:long local_id:int = FileLocation;
-folder#ff544e65 flags:# autofill_new_broadcasts:flags.0?true autofill_public_groups:flags.1?true autofill_new_correspondents:flags.2?true id:int title:string photo:flags.3?ChatPhoto = Folder;
-inputFolderPeer#fbd2c296 peer:InputPeer folder_id:int = InputFolderPeer;
-folderPeer#e9baa668 peer:Peer folder_id:int = FolderPeer;
-messages.searchCounter#e844ebff flags:# inexact:flags.1?true filter:MessagesFilter count:int = messages.SearchCounter;
-urlAuthResultRequest#92d33a0e flags:# request_write_access:flags.0?true bot:User domain:string = UrlAuthResult;
-urlAuthResultAccepted#8f8c0e4e url:string = UrlAuthResult;
-urlAuthResultDefault#a9d6db1f = UrlAuthResult;
-channelLocationEmpty#bfb5ad8b = ChannelLocation;
-channelLocation#209b82db geo_point:GeoPoint address:string = ChannelLocation;
-peerLocated#ca461b5d peer:Peer expires:int distance:int = PeerLocated;
-peerSelfLocated#f8ec284b expires:int = PeerLocated;
-restrictionReason#d072acb4 platform:string reason:string text:string = RestrictionReason;
-inputTheme#3c5693e9 id:long access_hash:long = InputTheme;
-inputThemeSlug#f5890df1 slug:string = InputTheme;
-theme#28f1114 flags:# creator:flags.0?true default:flags.1?true id:long access_hash:long slug:string title:string document:flags.2?Document settings:flags.3?ThemeSettings installs_count:int = Theme;
-account.themesNotModified#f41eb622 = account.Themes;
-account.themes#7f676421 hash:int themes:Vector<Theme> = account.Themes;
-auth.loginToken#629f1980 expires:int token:bytes = auth.LoginToken;
-auth.loginTokenMigrateTo#68e9916 dc_id:int token:bytes = auth.LoginToken;
-auth.loginTokenSuccess#390d5c5e authorization:auth.Authorization = auth.LoginToken;
-account.contentSettings#57e28221 flags:# sensitive_enabled:flags.0?true sensitive_can_change:flags.1?true = account.ContentSettings;
-messages.inactiveChats#a927fec5 dates:Vector<int> chats:Vector<Chat> users:Vector<User> = messages.InactiveChats;
-baseThemeClassic#c3a12462 = BaseTheme;
-baseThemeDay#fbd81688 = BaseTheme;
-baseThemeNight#b7b31ea8 = BaseTheme;
-baseThemeTinted#6d5f77ee = BaseTheme;
-baseThemeArctic#5b11125a = BaseTheme;
-inputThemeSettings#bd507cd1 flags:# base_theme:BaseTheme accent_color:int message_top_color:flags.0?int message_bottom_color:flags.0?int wallpaper:flags.1?InputWallPaper wallpaper_settings:flags.1?WallPaperSettings = InputThemeSettings;
-themeSettings#9c14984a flags:# base_theme:BaseTheme accent_color:int message_top_color:flags.0?int message_bottom_color:flags.0?int wallpaper:flags.1?WallPaper = ThemeSettings;
-webPageAttributeTheme#54b56617 flags:# documents:flags.0?Vector<Document> settings:flags.1?ThemeSettings = WebPageAttribute;
-messageUserVote#a28e5559 user_id:int option:bytes date:int = MessageUserVote;
-messageUserVoteInputOption#36377430 user_id:int date:int = MessageUserVote;
-messageUserVoteMultiple#e8fe0de user_id:int options:Vector<bytes> date:int = MessageUserVote;
-messages.votesList#823f649 flags:# count:int votes:Vector<MessageUserVote> users:Vector<User> next_offset:flags.0?string = messages.VotesList;
-dialogFilter#7438f7e8 flags:# contacts:flags.0?true non_contacts:flags.1?true groups:flags.2?true broadcasts:flags.3?true bots:flags.4?true exclude_muted:flags.11?true exclude_read:flags.12?true exclude_archived:flags.13?true id:int title:string emoticon:flags.25?string pinned_peers:Vector<InputPeer> include_peers:Vector<InputPeer> exclude_peers:Vector<InputPeer> = DialogFilter;
-dialogFilterSuggested#77744d4a filter:DialogFilter description:string = DialogFilterSuggested;
-// Some unused types were removed here
----functions---
-initConnection#c1cd5ea9 {X:Type} flags:# api_id:int device_model:string system_version:string app_version:string system_lang_code:string lang_pack:string lang_code:string proxy:flags.0?InputClientProxy params:flags.1?JSONValue query:!X = X;
-invokeWithLayer#da9b0d0d {X:Type} layer:int query:!X = X;
-auth.sendCode#a677244f phone_number:string api_id:int api_hash:string settings:CodeSettings = auth.SentCode;
-auth.signUp#80eee427 phone_number:string phone_code_hash:string first_name:string last_name:string = auth.Authorization;
-auth.signIn#bcd51581 phone_number:string phone_code_hash:string phone_code:string = auth.Authorization;
-auth.logOut#5717da40 = Bool;
-auth.resetAuthorizations#9fab0d1a = Bool;
-auth.exportAuthorization#e5bfffcd dc_id:int = auth.ExportedAuthorization;
-auth.importAuthorization#e3ef9613 id:int bytes:bytes = auth.Authorization;
-auth.bindTempAuthKey#cdd42a05 perm_auth_key_id:long nonce:long expires_at:int encrypted_message:bytes = Bool;
-auth.checkPassword#d18b4d16 password:InputCheckPasswordSRP = auth.Authorization;
-auth.requestPasswordRecovery#d897bc66 = auth.PasswordRecovery;
-auth.resendCode#3ef1a9bf phone_number:string phone_code_hash:string = auth.SentCode;
-auth.cancelCode#1f040578 phone_number:string phone_code_hash:string = Bool;
-auth.dropTempAuthKeys#8e48a188 except_auth_keys:Vector<long> = Bool;
-account.updateProfile#78515775 flags:# first_name:flags.0?string last_name:flags.1?string about:flags.2?string = User;
-account.getWallPapers#aabb1763 hash:int = account.WallPapers;
-auth.exportLoginToken#b1b41517 api_id:int api_hash:string except_ids:Vector<int> = auth.LoginToken;
-auth.importLoginToken#95ac5ce4 token:bytes = auth.LoginToken;
-account.checkUsername#2714d86c username:string = Bool;
-account.updateUsername#3e0bdd7c username:string = User;
-account.updateNotifySettings#84be5b93 peer:InputNotifyPeer settings:InputPeerNotifySettings = Bool;
-account.getAuthorizations#e320c158 = account.Authorizations;
-account.resetAuthorization#df77f3bc hash:long = Bool;
-account.getPassword#548a30f5 = account.Password;
-account.sendConfirmPhoneCode#1b3faa88 hash:string settings:CodeSettings = auth.SentCode;
-account.confirmPhone#5f2178c3 phone_code_hash:string phone_code:string = Bool;
-account.getTmpPassword#449e0b51 password:InputCheckPasswordSRP period:int = account.TmpPassword;
-account.sendVerifyPhoneCode#a5a356f9 phone_number:string settings:CodeSettings = auth.SentCode;
-users.getUsers#d91a548 id:Vector<InputUser> = Vector<User>;
-users.getFullUser#ca30a5b1 id:InputUser = UserFull;
-contacts.getContacts#c023849f hash:int = contacts.Contacts;
-contacts.search#11f812d8 q:string limit:int = contacts.Found;
-contacts.resolveUsername#f93ccba3 username:string = contacts.ResolvedPeer;
-contacts.getTopPeers#d4982db5 flags:# correspondents:flags.0?true bots_pm:flags.1?true bots_inline:flags.2?true phone_calls:flags.3?true forward_users:flags.4?true forward_chats:flags.5?true groups:flags.10?true channels:flags.15?true offset:int limit:int hash:int = contacts.TopPeers;
-messages.getMessages#63c66506 id:Vector<InputMessage> = messages.Messages;
-messages.getDialogs#a0ee3b73 flags:# exclude_pinned:flags.0?true folder_id:flags.1?int offset_date:int offset_id:int offset_peer:InputPeer limit:int hash:int = messages.Dialogs;
-messages.getHistory#dcbb8260 peer:InputPeer offset_id:int offset_date:int add_offset:int limit:int max_id:int min_id:int hash:int = messages.Messages;
-messages.search#8614ef68 flags:# peer:InputPeer q:string from_id:flags.0?InputUser filter:MessagesFilter min_date:int max_date:int offset_id:int add_offset:int limit:int max_id:int min_id:int hash:int = messages.Messages;
-messages.readHistory#e306d3a peer:InputPeer max_id:int = messages.AffectedMessages;
-messages.deleteHistory#1c015b09 flags:# just_clear:flags.0?true revoke:flags.1?true peer:InputPeer max_id:int = messages.AffectedHistory;
-messages.deleteMessages#e58e95d2 flags:# revoke:flags.0?true id:Vector<int> = messages.AffectedMessages;
-messages.receivedMessages#5a954c0 max_id:int = Vector<ReceivedNotifyMessage>;
-messages.setTyping#a3825e50 peer:InputPeer action:SendMessageAction = Bool;
-messages.sendMessage#520c3870 flags:# no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int = Updates;
-messages.sendMedia#3491eba9 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int = Updates;
-messages.forwardMessages#d9fee60e flags:# silent:flags.5?true background:flags.6?true with_my_score:flags.8?true grouped:flags.9?true from_peer:InputPeer id:Vector<int> random_id:Vector<long> to_peer:InputPeer schedule_date:flags.10?int = Updates;
-messages.getChats#3c6aa187 id:Vector<int> = messages.Chats;
-messages.getFullChat#3b831c66 chat_id:int = messages.ChatFull;
-messages.editChatPhoto#ca4c79d8 chat_id:int photo:InputChatPhoto = Updates;
-messages.createChat#9cb126e users:Vector<InputUser> title:string = Updates;
-messages.getDhConfig#26cf8950 version:int random_length:int = messages.DhConfig;
-messages.readMessageContents#36a73f77 id:Vector<int> = messages.AffectedMessages;
-messages.getAllStickers#1c9618b1 hash:int = messages.AllStickers;
-messages.getWebPagePreview#8b68b0cc flags:# message:string entities:flags.3?Vector<MessageEntity> = MessageMedia;
-messages.getStickerSet#2619a90e stickerset:InputStickerSet = messages.StickerSet;
-messages.installStickerSet#c78fe460 stickerset:InputStickerSet archived:Bool = messages.StickerSetInstallResult;
-messages.uninstallStickerSet#f96e55de stickerset:InputStickerSet = Bool;
-messages.searchGlobal#bf7225a4 flags:# folder_id:flags.0?int q:string offset_rate:int offset_peer:InputPeer offset_id:int limit:int = messages.Messages;
-messages.getDocumentByHash#338e2464 sha256:bytes size:int mime_type:string = Document;
-messages.searchGifs#bf9a776b q:string offset:int = messages.FoundGifs;
-messages.getSavedGifs#83bf3d52 hash:int = messages.SavedGifs;
-messages.getInlineBotResults#514e999d flags:# bot:InputUser peer:InputPeer geo_point:flags.0?InputGeoPoint query:string offset:string = messages.BotResults;
-messages.editMessage#48f71778 flags:# no_webpage:flags.1?true peer:InputPeer id:int message:flags.11?string media:flags.14?InputMedia reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.15?int = Updates;
-messages.getPeerDialogs#e470bcfd peers:Vector<InputDialogPeer> = messages.PeerDialogs;
-messages.saveDraft#bc39e14b flags:# no_webpage:flags.1?true reply_to_msg_id:flags.0?int peer:InputPeer message:string entities:flags.3?Vector<MessageEntity> = Bool;
-messages.getFeaturedStickers#2dacca4f hash:int = messages.FeaturedStickers;
-messages.readFeaturedStickers#5b118126 id:Vector<long> = Bool;
-messages.getRecentStickers#5ea192c9 flags:# attached:flags.0?true hash:int = messages.RecentStickers;
-messages.getWebPage#32ca8f91 url:string hash:int = WebPage;
-messages.toggleDialogPin#a731e257 flags:# pinned:flags.0?true peer:InputDialogPeer = Bool;
-messages.getPinnedDialogs#d6b94df2 folder_id:int = messages.PeerDialogs;
-messages.uploadMedia#519bc2b1 peer:InputPeer media:InputMedia = MessageMedia;
-messages.getFavedStickers#21ce0b0e hash:int = messages.FavedStickers;
-messages.faveSticker#b9ffc55b id:InputDocument unfave:Bool = Bool;
-messages.sendMultiMedia#cc0110cb flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int multi_media:Vector<InputSingleMedia> schedule_date:flags.10?int = Updates;
-messages.searchStickerSets#c2b7d08b flags:# exclude_featured:flags.0?true q:string hash:int = messages.FoundStickerSets;
-messages.markDialogUnread#c286d98f flags:# unread:flags.0?true peer:InputDialogPeer = Bool;
-messages.updatePinnedMessage#d2aaf7ec flags:# silent:flags.0?true peer:InputPeer id:int = Updates;
-messages.sendVote#10ea6184 peer:InputPeer msg_id:int options:Vector<bytes> = Updates;
-messages.getOnlines#6e2be050 peer:InputPeer = ChatOnlines;
-messages.getPollVotes#b86e380e flags:# peer:InputPeer id:int option:flags.0?bytes offset:flags.1?string limit:int = messages.VotesList;
-messages.getDialogFilters#f19ed96d = Vector<DialogFilter>;
-messages.getSuggestedDialogFilters#a29cd42c = Vector<DialogFilterSuggested>;
-messages.updateDialogFilter#1ad4a04a flags:# id:int filter:flags.0?DialogFilter = Bool;
-updates.getState#edd4882a = updates.State;
-updates.getDifference#25939651 flags:# pts:int pts_total_limit:flags.0?int date:int qts:int = updates.Difference;
-updates.getChannelDifference#3173d78 flags:# force:flags.0?true channel:InputChannel filter:ChannelMessagesFilter pts:int limit:int = updates.ChannelDifference;
-photos.uploadProfilePhoto#4f32c098 file:InputFile = photos.Photo;
-upload.saveFilePart#b304a621 file_id:long file_part:int bytes:bytes = Bool;
-upload.getFile#b15a9afc flags:# precise:flags.0?true cdn_supported:flags.1?true location:InputFileLocation offset:int limit:int = upload.File;
-upload.saveBigFilePart#de7b673d file_id:long file_part:int file_total_parts:int bytes:bytes = Bool;
-help.getConfig#c4f9186b = Config;
-help.getNearestDc#1fb33026 = NearestDc;
-help.getSupport#9cdf08cd = help.Support;
-help.acceptTermsOfService#ee72f79a id:DataJSON = Bool;
-channels.readHistory#cc104937 channel:InputChannel max_id:int = Bool;
-channels.deleteMessages#84c1fd4e channel:InputChannel id:Vector<int> = messages.AffectedMessages;
-channels.getMessages#ad8c9a23 channel:InputChannel id:Vector<InputMessage> = messages.Messages;
-channels.getParticipants#123e05e9 channel:InputChannel filter:ChannelParticipantsFilter offset:int limit:int hash:int = channels.ChannelParticipants;
-channels.getParticipant#546dd7a6 channel:InputChannel user_id:InputUser = channels.ChannelParticipant;
-channels.getChannels#a7f6bbb id:Vector<InputChannel> = messages.Chats;
-channels.getFullChannel#8736a09 channel:InputChannel = messages.ChatFull;
-channels.createChannel#3d5fb10f flags:# broadcast:flags.0?true megagroup:flags.1?true title:string about:string geo_point:flags.2?InputGeoPoint address:flags.2?string = Updates;
-channels.editPhoto#f12e57c9 channel:InputChannel photo:InputChatPhoto = Updates;
-channels.joinChannel#24b524c5 channel:InputChannel = Updates;
-channels.leaveChannel#f836aa95 channel:InputChannel = Updates;
-channels.deleteChannel#c0111fe3 channel:InputChannel = Updates;
-channels.readMessageContents#eab5dc38 channel:InputChannel id:Vector<int> = Bool;
-folders.editPeerFolders#6847d0ab folder_peers:Vector<InputFolderPeer> = Updates;
-// LAYER 112

+ 0 - 37
gramjs/tl/static/schema.reduced.tl

@@ -1,37 +0,0 @@
-resPQ#05162463 nonce:int128 server_nonce:int128 pq:string server_public_key_fingerprints:Vector<long> = ResPQ;
-p_q_inner_data#83c95aec pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 = P_Q_inner_data;
-server_DH_params_fail#79cb045d nonce:int128 server_nonce:int128 new_nonce_hash:int128 = Server_DH_Params;
-server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;
-server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;
-client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data;
-dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;
-dh_gen_retry#46dc1fb9 nonce:int128 server_nonce:int128 new_nonce_hash2:int128 = Set_client_DH_params_answer;
-dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = Set_client_DH_params_answer;
-destroy_auth_key_ok#f660e1d4 = DestroyAuthKeyRes;
-destroy_auth_key_none#0a9f2259 = DestroyAuthKeyRes;
-destroy_auth_key_fail#ea109b13 = DestroyAuthKeyRes;
----functions---
-req_pq#60469778 nonce:int128 = ResPQ;
-req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;
-req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long encrypted_data:string = Server_DH_Params;
-set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;
-destroy_auth_key#d1435160 = DestroyAuthKeyRes;
----types---
-msgs_ack#62d6b459 msg_ids:Vector<long> = MsgsAck;
-bad_msg_notification#a7eff811 bad_msg_id:long bad_msg_seqno:int error_code:int = BadMsgNotification;
-bad_server_salt#edab447b bad_msg_id:long bad_msg_seqno:int error_code:int new_server_salt:long = BadMsgNotification;
-msgs_state_req#da69fb52 msg_ids:Vector<long> = MsgsStateReq;
-msgs_state_info#04deb57d req_msg_id:long info:string = MsgsStateInfo;
-msgs_all_info#8cc0d131 msg_ids:Vector<long> info:string = MsgsAllInfo;
-msg_detailed_info#276d3ec6 msg_id:long answer_msg_id:long bytes:int status:int = MsgDetailedInfo;
-msg_new_detailed_info#809db6df answer_msg_id:long bytes:int status:int = MsgDetailedInfo;
-msg_resend_req#7d861a08 msg_ids:Vector<long> = MsgResendReq;
-rpc_error#2144ca19 error_code:int error_message:string = RpcError;
-future_salt#0949d9dc valid_since:int valid_until:int salt:long = FutureSalt;
-future_salts#ae500895 req_msg_id:long now:int salts:vector<future_salt> = FutureSalts;
-pong#347773c5 msg_id:long ping_id:long = Pong;
-destroy_session_ok#e22045fc session_id:long = DestroySessionRes;
-destroy_session_none#62d350c9 session_id:long = DestroySessionRes;
-new_session_created#9ec20908 first_msg_id:long unique_id:long server_salt:long = NewSession;
----functions---
-ping#7abe77ec ping_id:long = Pong;

Dosya farkı çok büyük olduğundan ihmal edildi
+ 833 - 2
package-lock.json


+ 9 - 3
package.json

@@ -5,7 +5,8 @@
   "main": "index.js",
   "scripts": {
     "test": "jest",
-    "lint": "eslint ."
+    "lint": "eslint .",
+    "generate": "node ./gramjs/tl/types-generator/generate.js"
   },
   "repository": {
     "type": "git",
@@ -43,14 +44,19 @@
     "eslint-plugin-jsx-a11y": "^6.2.3",
     "eslint-plugin-no-async-without-await": "^1.2.0",
     "lint-staged": "^9.4.2",
+    "raw-loader": "^4.0.1",
+    "ts-loader": "^8.0.9",
     "ts-node": "^8.9.1",
-    "typescript": "^3.9.5",
-    "url-loader": "^4.1.0"
+    "typescript": "^3.9.7",
+    "url-loader": "^4.1.0",
+    "webpack": "^4.43.0",
+    "webpack-cli": "^3.3.11"
   },
   "dependencies": {
     "@cryptography/aes": "^0.1.1",
     "async-mutex": "^0.1.4",
     "big-integer": "painor/BigInteger.js",
+    "browser-or-node": "^1.3.0",
     "pako": "^1.0.10",
     "websocket": "^1.0.30"
   }

+ 25 - 0
tsconfig.json

@@ -0,0 +1,25 @@
+{
+    "compilerOptions": {
+        // We don't care about this since Parcel runs Babel after TypeScript
+        "target": "esnext",
+        "lib": [
+            "dom",
+            "es7"
+        ],
+
+        "allowJs": true,
+        "skipLibCheck": true,
+        "esModuleInterop": true,
+        "allowSyntheticDefaultImports": true,
+        "strict": true,
+        "forceConsistentCasingInFileNames": true,
+        "module": "esnext",
+        "moduleResolution": "node",
+        "resolveJsonModule": true,
+        "isolatedModules": true,
+        "jsx": "react"
+    },
+    "include": [
+        "gramjs"
+    ]
+}

+ 0 - 31
webpack.config.babel.js

@@ -1,31 +0,0 @@
-module.exports = {
-    entry: './gramjs/index.js',
-    mode: 'development',
-    node: {
-        fs: 'empty',
-    },
-    module: {
-        rules: [{
-            test: /\.js$/,
-            use: {
-
-                loader: 'babel-loader',
-                options: {
-                    presets: [
-                        '@babel/preset-env',
-                    ],
-                    plugins: [
-                        '@babel/plugin-proposal-class-properties',
-                    ],
-                },
-            },
-        },
-        ],
-    },
-    output: {
-        path: __dirname + '/browser',
-        filename: 'gramjs.js',
-        libraryTarget: 'var',
-        library: 'gramjs',
-    },
-}

+ 51 - 0
webpack.config.js

@@ -0,0 +1,51 @@
+module.exports = {
+    entry: './gramjs/index.js',
+    mode: 'development',
+    resolve: {
+        extensions: ['.js', '.ts', '.tsx'],
+    },
+    node: {
+        fs: 'empty',
+        net: 'empty',
+    },
+    module: {
+        rules: [
+            {   test: /\.tsx?$/,
+                use: 'ts-loader',
+                exclude: [
+                    /node_modules/,
+                ]
+            },
+            {
+                test: /\.js$/,
+                loader: 'babel-loader',
+                exclude: /node_modules/,
+            },
+            {
+                test: /\.(woff(2)?|ttf|eot|svg|png|jpg|tgs)(\?v=\d+\.\d+\.\d+)?$/,
+                loader: 'file-loader',
+                options: {
+                    name: '[name].[contenthash].[ext]',
+                },
+            },
+            {
+                test: /\.wasm$/,
+                type: 'javascript/auto',
+                loader: 'file-loader',
+                options: {
+                    name: '[name].[contenthash].[ext]',
+                },
+            },
+            {
+                test: /\.tl$/i,
+                loader: 'raw-loader',
+            },
+        ],
+    },
+    output: {
+        path: __dirname + '/browser',
+        filename: 'gramjs.js',
+        libraryTarget: 'var',
+        library: 'gramjs',
+    },
+}

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor