From e7c4cfbfe65744a3ee55e345e6b7be834e3d2fc8 Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Fri, 8 Mar 2019 14:16:57 +0100 Subject: [PATCH] Update translation --- docs | 2 +- src/danog/MadelineProto/InternalDoc.php | 131 +++++++++------ src/danog/MadelineProto/Lang.php | 214 +++++++++++++++++++++++- translator.php | 2 +- 4 files changed, 293 insertions(+), 56 deletions(-) diff --git a/docs b/docs index 82b301b0..9e83df16 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit 82b301b00560298776ce9ca852e8db71ac21b2e9 +Subproject commit 9e83df1629e0c4e2563a8dc8bf098f3b95ee8061 diff --git a/src/danog/MadelineProto/InternalDoc.php b/src/danog/MadelineProto/InternalDoc.php index 0c98f0e7..b408103b 100644 --- a/src/danog/MadelineProto/InternalDoc.php +++ b/src/danog/MadelineProto/InternalDoc.php @@ -11,11 +11,10 @@ interface auth { /** * @param array params [ - * boolean allow_flashcall, * string phone_number, - * Bool current_number, * int api_id, * string api_hash, + * CodeSettings settings, * ] * * @return auth_SentCode @@ -222,9 +221,13 @@ interface account public function updateStatus(array $params); /** - * @return Vector_of_WallPaper + * @param array params [ + * int hash, + * ] + * + * @return account_WallPapers */ - public function getWallPapers(); + public function getWallPapers(array $params); /** * @param array params [ @@ -298,9 +301,8 @@ interface account /** * @param array params [ - * boolean allow_flashcall, * string phone_number, - * Bool current_number, + * CodeSettings settings, * ] * * @return auth_SentCode @@ -367,9 +369,8 @@ interface account /** * @param array params [ - * boolean allow_flashcall, * string hash, - * Bool current_number, + * CodeSettings settings, * ] * * @return auth_SentCode @@ -474,9 +475,8 @@ interface account /** * @param array params [ - * boolean allow_flashcall, * string phone_number, - * Bool current_number, + * CodeSettings settings, * ] * * @return auth_SentCode @@ -579,6 +579,52 @@ interface account * @return Updates */ public function getNotifyExceptions(array $params); + + /** + * @param array params [ + * InputWallPaper wallpaper, + * ] + * + * @return WallPaper + */ + public function getWallPaper(array $params); + + /** + * @param array params [ + * InputFile file, + * string mime_type, + * WallPaperSettings settings, + * ] + * + * @return WallPaper + */ + public function uploadWallPaper(array $params); + + /** + * @param array params [ + * InputWallPaper wallpaper, + * Bool unsave, + * WallPaperSettings settings, + * ] + * + * @return bool + */ + public function saveWallPaper(array $params); + + /** + * @param array params [ + * InputWallPaper wallpaper, + * WallPaperSettings settings, + * ] + * + * @return bool + */ + public function installWallPaper(array $params); + + /** + * @return bool + */ + public function resetWallPapers(); } interface users @@ -1183,7 +1229,7 @@ interface messages /** * @param array params [ - * int chat_id, + * InputPeer peer, * ] * * @return ExportedChatInvite @@ -1258,16 +1304,6 @@ interface messages */ public function getMessagesViews(array $params); - /** - * @param array params [ - * int chat_id, - * Bool enabled, - * ] - * - * @return Updates - */ - public function toggleChatAdmins(array $params); - /** * @param array params [ * int chat_id, @@ -1870,6 +1906,26 @@ interface messages * @return StatsURL */ public function getStatsURL(array $params); + + /** + * @param array params [ + * InputPeer peer, + * string about, + * ] + * + * @return bool + */ + public function editChatAbout(array $params); + + /** + * @param array params [ + * InputPeer peer, + * ChatBannedRights banned_rights, + * ] + * + * @return Updates + */ + public function editChatDefaultBannedRights(array $params); } interface updates @@ -2283,21 +2339,11 @@ interface channels */ public function createChannel(array $params); - /** - * @param array params [ - * InputChannel channel, - * string about, - * ] - * - * @return bool - */ - public function editAbout(array $params); - /** * @param array params [ * InputChannel channel, * InputUser user_id, - * ChannelAdminRights admin_rights, + * ChatAdminRights admin_rights, * ] * * @return Updates @@ -2372,15 +2418,6 @@ interface channels */ public function inviteToChannel(array $params); - /** - * @param array params [ - * InputChannel channel, - * ] - * - * @return ExportedChatInvite - */ - public function exportInvite(array $params); - /** * @param array params [ * InputChannel channel, @@ -2390,16 +2427,6 @@ interface channels */ public function deleteChannel(array $params); - /** - * @param array params [ - * InputChannel channel, - * Bool enabled, - * ] - * - * @return Updates - */ - public function toggleInvites(array $params); - /** * @param array params [ * InputChannel channel, @@ -2430,7 +2457,7 @@ interface channels * @param array params [ * InputChannel channel, * InputUser user_id, - * ChannelBannedRights banned_rights, + * ChatBannedRights banned_rights, * ] * * @return Updates diff --git a/src/danog/MadelineProto/Lang.php b/src/danog/MadelineProto/Lang.php index 65caab55..b55a9ae6 100644 --- a/src/danog/MadelineProto/Lang.php +++ b/src/danog/MadelineProto/Lang.php @@ -4751,6 +4751,111 @@ class Lang 'object_chatOnlines_param_onlines_type_int' => 'Onlines', 'object_statsURL' => 'Stats URL', 'object_statsURL_param_url_type_string' => 'URL', + 'method_auth.sendCode_param_settings_type_CodeSettings' => 'You cannot use this method directly, use the phone_login method instead (see https://docs.madelineproto.xyz for more info)', + 'method_account.getWallPapers_param_hash_type_Vector t' => 'IDs of previously fetched wallpapers', + 'method_account.sendChangePhoneCode_param_settings_type_CodeSettings' => 'Code settings', + 'method_account.sendConfirmPhoneCode_param_settings_type_CodeSettings' => 'Code settings', + 'method_account.sendVerifyPhoneCode_param_settings_type_CodeSettings' => 'Code settings', + 'method_account.getWallPaper' => 'Get wallpaper info', + 'method_account.getWallPaper_param_wallpaper_type_InputWallPaper' => 'Wallpaper', + 'method_account.uploadWallPaper' => 'Upload wallpaper', + 'method_account.uploadWallPaper_param_file_type_InputFile' => 'Image', + 'method_account.uploadWallPaper_param_mime_type_type_string' => 'Mime type', + 'method_account.uploadWallPaper_param_settings_type_WallPaperSettings' => 'Wallpaper settings', + 'method_account.saveWallPaper' => 'Save wallpaper', + 'method_account.saveWallPaper_param_wallpaper_type_InputWallPaper' => 'The wallpaper to save', + 'method_account.saveWallPaper_param_unsave_type_Bool' => 'Delete saved wallpaper', + 'method_account.saveWallPaper_param_settings_type_WallPaperSettings' => 'The wallpaper to save', + 'method_account.installWallPaper' => 'Install wallpaper', + 'method_account.installWallPaper_param_wallpaper_type_InputWallPaper' => 'Wallpaper to install', + 'method_account.installWallPaper_param_settings_type_WallPaperSettings' => 'Wallpaper settings', + 'method_account.resetWallPapers' => 'Reset wallpapers', + 'method_messages.exportChatInvite_param_peer_type_InputPeer' => 'Export invite only for this user', + 'method_messages.editChatAbout' => 'Edit chat info', + 'method_messages.editChatAbout_param_peer_type_InputPeer' => 'Chat', + 'method_messages.editChatAbout_param_about_type_string' => 'Info', + 'method_messages.editChatDefaultBannedRights' => 'Edit default rights of chat', + 'method_messages.editChatDefaultBannedRights_param_peer_type_InputPeer' => 'Chat', + 'method_messages.editChatDefaultBannedRights_param_banned_rights_type_ChatBannedRights' => 'Global chat rights', + 'method_channels.editAdmin_param_admin_rights_type_ChatAdminRights' => 'Admin rights', + 'method_channels.editBanned_param_banned_rights_type_ChatBannedRights' => 'Banned rights', + 'object_chat_param_admin_rights_type_ChatAdminRights' => 'Admin rights of current user', + 'object_chat_param_default_banned_rights_type_ChatBannedRights' => 'Global chat banned rights', + 'object_channel_param_admin_rights_type_ChatAdminRights' => 'Admin rights of current user', + 'object_channel_param_banned_rights_type_ChatBannedRights' => 'Banned rights of current user', + 'object_channel_param_default_banned_rights_type_ChatBannedRights' => 'Global chat banned rights', + 'object_chatFull_param_can_set_username_type_true' => 'Can set username?', + 'object_chatFull_param_about_type_string' => 'Chat about', + 'object_photoStrippedSize' => 'Stripped size', + 'object_photoStrippedSize_param_type_type_string' => 'Stripped size', + 'object_photoStrippedSize_param_bytes_type_bytes' => 'Bytes', + 'object_wallPaper_param_id_type_long' => 'ID', + 'object_wallPaper_param_creator_type_true' => 'Am I the creator?', + 'object_wallPaper_param_default_type_true' => 'Default?', + 'object_wallPaper_param_pattern_type_true' => 'Pattern', + 'object_wallPaper_param_dark_type_true' => 'Dark?', + 'object_wallPaper_param_access_hash_type_long' => 'Hash', + 'object_wallPaper_param_slug_type_string' => 'Slug?', + 'object_wallPaper_param_document_type_Document' => 'Wallpaper', + 'object_wallPaper_param_settings_type_WallPaperSettings' => 'Wallpaper settings', + 'object_messages.messagesSlice_param_inexact_type_true' => 'Inexact?', + 'object_updateChatDefaultBannedRights' => 'Global chat rights updated', + 'object_updateChatDefaultBannedRights_param_peer_type_Peer' => 'Peer', + 'object_updateChatDefaultBannedRights_param_default_banned_rights_type_ChatBannedRights' => 'Global chat rights', + 'object_updateChatDefaultBannedRights_param_version_type_int' => 'Version', + 'object_document_param_thumbs_type_Vector t' => 'Thumbnails', + 'object_channelParticipantAdmin_param_self_type_true' => 'Is this the current user?', + 'object_channelParticipantAdmin_param_admin_rights_type_ChatAdminRights' => 'Admin rights', + 'object_channelParticipantBanned_param_banned_rights_type_ChatBannedRights' => 'Banned rights', + 'object_channelParticipantsContacts' => 'Contacts', + 'object_channelParticipantsContacts_param_q_type_string' => 'Query', + 'object_channelAdminLogEventActionDefaultBannedRights' => 'Changed global chat rights', + 'object_channelAdminLogEventActionDefaultBannedRights_param_prev_banned_rights_type_ChatBannedRights' => 'Previous Banned rights of current user', + 'object_channelAdminLogEventActionDefaultBannedRights_param_new_banned_rights_type_ChatBannedRights' => 'New Banned rights of current user', + 'object_channelAdminLogEventActionStopPoll' => 'Stopped poll', + 'object_channelAdminLogEventActionStopPoll_param_message_type_Message' => 'Message', + 'object_chatAdminRights' => 'Admin rights', + 'object_chatAdminRights_param_change_info_type_true' => 'Can change info?', + 'object_chatAdminRights_param_post_messages_type_true' => 'Can post messages?', + 'object_chatAdminRights_param_edit_messages_type_true' => 'Can edit messages?', + 'object_chatAdminRights_param_delete_messages_type_true' => 'Can delete messages?', + 'object_chatAdminRights_param_ban_users_type_true' => 'Can ban users?', + 'object_chatAdminRights_param_invite_users_type_true' => 'Can invite users?', + 'object_chatAdminRights_param_pin_messages_type_true' => 'Can pin messages?', + 'object_chatAdminRights_param_add_admins_type_true' => 'Can add other admins?', + 'object_chatBannedRights' => 'Banned rights (when true, the user will NOT be able to do that thing)', + 'object_chatBannedRights_param_view_messages_type_true' => 'Can view messages?', + 'object_chatBannedRights_param_send_messages_type_true' => 'Can send messages?', + 'object_chatBannedRights_param_send_media_type_true' => 'Can send media?', + 'object_chatBannedRights_param_send_stickers_type_true' => 'Can send stickers?', + 'object_chatBannedRights_param_send_gifs_type_true' => 'Can send gifs?', + 'object_chatBannedRights_param_send_games_type_true' => 'Can send games?', + 'object_chatBannedRights_param_send_inline_type_true' => 'Can use inline bots?', + 'object_chatBannedRights_param_embed_links_type_true' => 'Can embed links?', + 'object_chatBannedRights_param_send_polls_type_true' => 'Can send polls?', + 'object_chatBannedRights_param_change_info_type_true' => 'Can change info?', + 'object_chatBannedRights_param_invite_users_type_true' => 'Can invite users?', + 'object_chatBannedRights_param_pin_messages_type_true' => 'Can pin messages?', + 'object_chatBannedRights_param_until_date_type_int' => 'Until date (0 = forever)', + 'object_inputWallPaper' => 'Wallpaper', + 'object_inputWallPaper_param_id_type_long' => 'ID', + 'object_inputWallPaper_param_access_hash_type_long' => 'Access hash', + 'object_inputWallPaperSlug' => 'Wallpaper slug', + 'object_inputWallPaperSlug_param_slug_type_string' => 'Type', + 'object_account.wallPapersNotModified' => 'No wallpapers were modified', + 'object_account.wallPapers' => 'Wallpapers', + 'object_account.wallPapers_param_hash_type_int' => 'Hash', + 'object_account.wallPapers_param_wallpapers_type_Vector t' => 'Wallpapers', + 'object_codeSettings' => 'Code settings', + 'object_codeSettings_param_allow_flashcall_type_true' => 'Allow flashcal?', + 'object_codeSettings_param_current_number_type_true' => 'Current number?', + 'object_codeSettings_param_app_hash_persistent_type_true' => 'Persistent hash?', + 'object_codeSettings_param_app_hash_type_string' => 'Hash type', + 'object_wallPaperSettings' => 'Wallpaper settings', + 'object_wallPaperSettings_param_blur_type_true' => 'Blur?', + 'object_wallPaperSettings_param_motion_type_true' => 'Motion?', + 'object_wallPaperSettings_param_background_color_type_int' => 'Background color', + 'object_wallPaperSettings_param_intensity_type_int' => 'Intensity', ), ); @@ -5015,7 +5120,7 @@ class Lang 'method_account.updateProfile_param_last_name_type_string' => 'The last name', 'method_account.updateProfile_param_about_type_string' => 'The bio/about field', 'method_account.updateStatus' => 'Update online status', - 'method_account.updateStatus_param_offline_type_Bool' => 'Offline to set the status to offline', + 'method_account.updateStatus_param_offline_type_Bool' => 'True to set the status to offline', 'method_account.getWallPapers' => 'Returns a list of available wallpapers.', 'method_account.reportPeer' => 'Report for spam', 'method_account.reportPeer_param_peer_type_InputPeer' => 'The peer to report', @@ -9343,5 +9448,110 @@ class Lang 'object_chatOnlines_param_onlines_type_int' => 'Onlines', 'object_statsURL' => 'Stats URL', 'object_statsURL_param_url_type_string' => 'URL', + 'method_auth.sendCode_param_settings_type_CodeSettings' => 'You cannot use this method directly, use the phone_login method instead (see https://docs.madelineproto.xyz for more info)', + 'method_account.getWallPapers_param_hash_type_Vector t' => 'IDs of previously fetched wallpapers', + 'method_account.sendChangePhoneCode_param_settings_type_CodeSettings' => 'Code settings', + 'method_account.sendConfirmPhoneCode_param_settings_type_CodeSettings' => 'Code settings', + 'method_account.sendVerifyPhoneCode_param_settings_type_CodeSettings' => 'Code settings', + 'method_account.getWallPaper' => 'Get wallpaper info', + 'method_account.getWallPaper_param_wallpaper_type_InputWallPaper' => 'Wallpaper', + 'method_account.uploadWallPaper' => 'Upload wallpaper', + 'method_account.uploadWallPaper_param_file_type_InputFile' => 'Image', + 'method_account.uploadWallPaper_param_mime_type_type_string' => 'Mime type', + 'method_account.uploadWallPaper_param_settings_type_WallPaperSettings' => 'Wallpaper settings', + 'method_account.saveWallPaper' => 'Save wallpaper', + 'method_account.saveWallPaper_param_wallpaper_type_InputWallPaper' => 'The wallpaper to save', + 'method_account.saveWallPaper_param_unsave_type_Bool' => 'Delete saved wallpaper', + 'method_account.saveWallPaper_param_settings_type_WallPaperSettings' => 'The wallpaper to save', + 'method_account.installWallPaper' => 'Install wallpaper', + 'method_account.installWallPaper_param_wallpaper_type_InputWallPaper' => 'Wallpaper to install', + 'method_account.installWallPaper_param_settings_type_WallPaperSettings' => 'Wallpaper settings', + 'method_account.resetWallPapers' => 'Reset wallpapers', + 'method_messages.exportChatInvite_param_peer_type_InputPeer' => 'Export invite only for this user', + 'method_messages.editChatAbout' => 'Edit chat info', + 'method_messages.editChatAbout_param_peer_type_InputPeer' => 'Chat', + 'method_messages.editChatAbout_param_about_type_string' => 'Info', + 'method_messages.editChatDefaultBannedRights' => 'Edit default rights of chat', + 'method_messages.editChatDefaultBannedRights_param_peer_type_InputPeer' => 'Chat', + 'method_messages.editChatDefaultBannedRights_param_banned_rights_type_ChatBannedRights' => 'Global chat rights', + 'method_channels.editAdmin_param_admin_rights_type_ChatAdminRights' => 'Admin rights', + 'method_channels.editBanned_param_banned_rights_type_ChatBannedRights' => 'Banned rights', + 'object_chat_param_admin_rights_type_ChatAdminRights' => 'Admin rights of current user', + 'object_chat_param_default_banned_rights_type_ChatBannedRights' => 'Global chat banned rights', + 'object_channel_param_admin_rights_type_ChatAdminRights' => 'Admin rights of current user', + 'object_channel_param_banned_rights_type_ChatBannedRights' => 'Banned rights of current user', + 'object_channel_param_default_banned_rights_type_ChatBannedRights' => 'Global chat banned rights', + 'object_chatFull_param_can_set_username_type_true' => 'Can set username?', + 'object_chatFull_param_about_type_string' => 'Chat about', + 'object_photoStrippedSize' => 'Stripped size', + 'object_photoStrippedSize_param_type_type_string' => 'Stripped size', + 'object_photoStrippedSize_param_bytes_type_bytes' => 'Bytes', + 'object_wallPaper_param_id_type_long' => 'ID', + 'object_wallPaper_param_creator_type_true' => 'Am I the creator?', + 'object_wallPaper_param_default_type_true' => 'Default?', + 'object_wallPaper_param_pattern_type_true' => 'Pattern', + 'object_wallPaper_param_dark_type_true' => 'Dark?', + 'object_wallPaper_param_access_hash_type_long' => 'Hash', + 'object_wallPaper_param_slug_type_string' => 'Slug?', + 'object_wallPaper_param_document_type_Document' => 'Wallpaper', + 'object_wallPaper_param_settings_type_WallPaperSettings' => 'Wallpaper settings', + 'object_messages.messagesSlice_param_inexact_type_true' => 'Inexact?', + 'object_updateChatDefaultBannedRights' => 'Global chat rights updated', + 'object_updateChatDefaultBannedRights_param_peer_type_Peer' => 'Peer', + 'object_updateChatDefaultBannedRights_param_default_banned_rights_type_ChatBannedRights' => 'Global chat rights', + 'object_updateChatDefaultBannedRights_param_version_type_int' => 'Version', + 'object_document_param_thumbs_type_Vector t' => 'Thumbnails', + 'object_channelParticipantAdmin_param_self_type_true' => 'Is this the current user?', + 'object_channelParticipantAdmin_param_admin_rights_type_ChatAdminRights' => 'Admin rights', + 'object_channelParticipantBanned_param_banned_rights_type_ChatBannedRights' => 'Banned rights', + 'object_channelParticipantsContacts' => 'Contacts', + 'object_channelParticipantsContacts_param_q_type_string' => 'Query', + 'object_channelAdminLogEventActionDefaultBannedRights' => 'Changed global chat rights', + 'object_channelAdminLogEventActionDefaultBannedRights_param_prev_banned_rights_type_ChatBannedRights' => 'Previous Banned rights of current user', + 'object_channelAdminLogEventActionDefaultBannedRights_param_new_banned_rights_type_ChatBannedRights' => 'New Banned rights of current user', + 'object_channelAdminLogEventActionStopPoll' => 'Stopped poll', + 'object_channelAdminLogEventActionStopPoll_param_message_type_Message' => 'Message', + 'object_chatAdminRights' => 'Admin rights', + 'object_chatAdminRights_param_change_info_type_true' => 'Can change info?', + 'object_chatAdminRights_param_post_messages_type_true' => 'Can post messages?', + 'object_chatAdminRights_param_edit_messages_type_true' => 'Can edit messages?', + 'object_chatAdminRights_param_delete_messages_type_true' => 'Can delete messages?', + 'object_chatAdminRights_param_ban_users_type_true' => 'Can ban users?', + 'object_chatAdminRights_param_invite_users_type_true' => 'Can invite users?', + 'object_chatAdminRights_param_pin_messages_type_true' => 'Can pin messages?', + 'object_chatAdminRights_param_add_admins_type_true' => 'Can add other admins?', + 'object_chatBannedRights' => 'Banned rights (when true, the user will NOT be able to do that thing)', + 'object_chatBannedRights_param_view_messages_type_true' => 'Can view messages?', + 'object_chatBannedRights_param_send_messages_type_true' => 'Can send messages?', + 'object_chatBannedRights_param_send_media_type_true' => 'Can send media?', + 'object_chatBannedRights_param_send_stickers_type_true' => 'Can send stickers?', + 'object_chatBannedRights_param_send_gifs_type_true' => 'Can send gifs?', + 'object_chatBannedRights_param_send_games_type_true' => 'Can send games?', + 'object_chatBannedRights_param_send_inline_type_true' => 'Can use inline bots?', + 'object_chatBannedRights_param_embed_links_type_true' => 'Can embed links?', + 'object_chatBannedRights_param_send_polls_type_true' => 'Can send polls?', + 'object_chatBannedRights_param_change_info_type_true' => 'Can change info?', + 'object_chatBannedRights_param_invite_users_type_true' => 'Can invite users?', + 'object_chatBannedRights_param_pin_messages_type_true' => 'Can pin messages?', + 'object_chatBannedRights_param_until_date_type_int' => 'Until date (0 = forever)', + 'object_inputWallPaper' => 'Wallpaper', + 'object_inputWallPaper_param_id_type_long' => 'ID', + 'object_inputWallPaper_param_access_hash_type_long' => 'Access hash', + 'object_inputWallPaperSlug' => 'Wallpaper slug', + 'object_inputWallPaperSlug_param_slug_type_string' => 'Type', + 'object_account.wallPapersNotModified' => 'No wallpapers were modified', + 'object_account.wallPapers' => 'Wallpapers', + 'object_account.wallPapers_param_hash_type_int' => 'Hash', + 'object_account.wallPapers_param_wallpapers_type_Vector t' => 'Wallpapers', + 'object_codeSettings' => 'Code settings', + 'object_codeSettings_param_allow_flashcall_type_true' => 'Allow flashcal?', + 'object_codeSettings_param_current_number_type_true' => 'Current number?', + 'object_codeSettings_param_app_hash_persistent_type_true' => 'Persistent hash?', + 'object_codeSettings_param_app_hash_type_string' => 'Hash type', + 'object_wallPaperSettings' => 'Wallpaper settings', + 'object_wallPaperSettings_param_blur_type_true' => 'Blur?', + 'object_wallPaperSettings_param_motion_type_true' => 'Motion?', + 'object_wallPaperSettings_param_background_color_type_int' => 'Background color', + 'object_wallPaperSettings_param_intensity_type_int' => 'Intensity', ); -} +} \ No newline at end of file diff --git a/translator.php b/translator.php index ac8cf544..e3c41123 100644 --- a/translator.php +++ b/translator.php @@ -83,7 +83,7 @@ foreach (\danog\MadelineProto\Lang::$current_lang as $key => $value) { if (!$param_name && strpos($key, 'object_') === 0) { $value = str_replace('Update ', '', $value).' update'; } - } elseif (ctype_lower($value[0])) { + //} elseif (ctype_lower($value[0])) { } else { \danog\MadelineProto\Lang::$lang[$lang_code][$key] = readline($value.' => '); if (\danog\MadelineProto\Lang::$lang[$lang_code][$key] === '') {