diff --git a/Images.xcassets/Call/Star.imageset/CallStar@2x.png b/Images.xcassets/Call/Star.imageset/CallStar@2x.png deleted file mode 100644 index c5805fdae1..0000000000 Binary files a/Images.xcassets/Call/Star.imageset/CallStar@2x.png and /dev/null differ diff --git a/Images.xcassets/Call/Star.imageset/CallStar@3x.png b/Images.xcassets/Call/Star.imageset/CallStar@3x.png deleted file mode 100644 index 7d073fdfaa..0000000000 Binary files a/Images.xcassets/Call/Star.imageset/CallStar@3x.png and /dev/null differ diff --git a/Images.xcassets/Call/Star.imageset/Contents.json b/Images.xcassets/Call/Star.imageset/Contents.json index c14c666eeb..422ba10712 100644 --- a/Images.xcassets/Call/Star.imageset/Contents.json +++ b/Images.xcassets/Call/Star.imageset/Contents.json @@ -6,12 +6,12 @@ }, { "idiom" : "universal", - "filename" : "CallStar@2x.png", + "filename" : "star@2x.png", "scale" : "2x" }, { "idiom" : "universal", - "filename" : "CallStar@3x.png", + "filename" : "star@3x.png", "scale" : "3x" } ], diff --git a/Images.xcassets/Call/Star.imageset/star@2x.png b/Images.xcassets/Call/Star.imageset/star@2x.png new file mode 100644 index 0000000000..96724385c0 Binary files /dev/null and b/Images.xcassets/Call/Star.imageset/star@2x.png differ diff --git a/Images.xcassets/Call/Star.imageset/star@3x.png b/Images.xcassets/Call/Star.imageset/star@3x.png new file mode 100644 index 0000000000..2cd4b298d2 Binary files /dev/null and b/Images.xcassets/Call/Star.imageset/star@3x.png differ diff --git a/Images.xcassets/Call/StarHighlighted.imageset/CallStar_Highlighted@2x.png b/Images.xcassets/Call/StarHighlighted.imageset/CallStar_Highlighted@2x.png deleted file mode 100644 index 556454a85a..0000000000 Binary files a/Images.xcassets/Call/StarHighlighted.imageset/CallStar_Highlighted@2x.png and /dev/null differ diff --git a/Images.xcassets/Call/StarHighlighted.imageset/CallStar_Highlighted@3x.png b/Images.xcassets/Call/StarHighlighted.imageset/CallStar_Highlighted@3x.png deleted file mode 100644 index fc738df153..0000000000 Binary files a/Images.xcassets/Call/StarHighlighted.imageset/CallStar_Highlighted@3x.png and /dev/null differ diff --git a/Images.xcassets/Call/StarHighlighted.imageset/Contents.json b/Images.xcassets/Call/StarHighlighted.imageset/Contents.json index 03030f91e4..d10413c1e8 100644 --- a/Images.xcassets/Call/StarHighlighted.imageset/Contents.json +++ b/Images.xcassets/Call/StarHighlighted.imageset/Contents.json @@ -6,12 +6,12 @@ }, { "idiom" : "universal", - "filename" : "CallStar_Highlighted@2x.png", + "filename" : "star2@2x.png", "scale" : "2x" }, { "idiom" : "universal", - "filename" : "CallStar_Highlighted@3x.png", + "filename" : "star2@3x.png", "scale" : "3x" } ], diff --git a/Images.xcassets/Call/StarHighlighted.imageset/star2@2x.png b/Images.xcassets/Call/StarHighlighted.imageset/star2@2x.png new file mode 100644 index 0000000000..aea979daed Binary files /dev/null and b/Images.xcassets/Call/StarHighlighted.imageset/star2@2x.png differ diff --git a/Images.xcassets/Call/StarHighlighted.imageset/star2@3x.png b/Images.xcassets/Call/StarHighlighted.imageset/star2@3x.png new file mode 100644 index 0000000000..c9584c2a1c Binary files /dev/null and b/Images.xcassets/Call/StarHighlighted.imageset/star2@3x.png differ diff --git a/TelegramUI.xcodeproj/project.pbxproj b/TelegramUI.xcodeproj/project.pbxproj index 84fdc675ef..3bde367c40 100644 --- a/TelegramUI.xcodeproj/project.pbxproj +++ b/TelegramUI.xcodeproj/project.pbxproj @@ -59,6 +59,9 @@ 096C98C221787C6700C211FF /* TGBridgeAudioDecoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = 096C98BE21787C6700C211FF /* TGBridgeAudioDecoder.mm */; }; 09749BC321F0DFFD008FDDE9 /* StickersChatInputContextPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BC221F0DFFD008FDDE9 /* StickersChatInputContextPanelNode.swift */; }; 09749BC521F0E024008FDDE9 /* StickersChatInputPanelItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BC421F0E024008FDDE9 /* StickersChatInputPanelItem.swift */; }; + 09749BC921F1BBA1008FDDE9 /* CallFeedbackController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BC821F1BBA1008FDDE9 /* CallFeedbackController.swift */; }; + 09749BCD21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BCC21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift */; }; + 09749BCF21F236F2008FDDE9 /* ModernCheckNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BCE21F236F2008FDDE9 /* ModernCheckNode.swift */; }; 09797873210633CD0077D77F /* InstantPageSettingsButtonItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09797872210633CD0077D77F /* InstantPageSettingsButtonItemNode.swift */; }; 0979787C210642CB0077D77F /* WebEmbedPlayerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0979787B210642CB0077D77F /* WebEmbedPlayerNode.swift */; }; 0979787E210646C00077D77F /* YoutubeEmbedImplementation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0979787D210646C00077D77F /* YoutubeEmbedImplementation.swift */; }; @@ -1061,9 +1064,7 @@ D0EC6E6C1EB9F58900EBF1C3 /* FeaturedStickerPacksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E23DD71E805E2600B9B6D2 /* FeaturedStickerPacksController.swift */; }; D0EC6E6D1EB9F58900EBF1C3 /* ItemListStickerPackItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04791661E79A22000F18979 /* ItemListStickerPackItem.swift */; }; D0EC6E6E1EB9F58900EBF1C3 /* ArchivedStickerPacksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E23DDC1E8081A200B9B6D2 /* ArchivedStickerPacksController.swift */; }; - D0EC6E711EB9F58900EBF1C3 /* ThemeGalleryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05174A41EAA456600A1BF36 /* ThemeGalleryController.swift */; }; - D0EC6E721EB9F58900EBF1C3 /* ThemeGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05174A81EAA46E000A1BF36 /* ThemeGalleryItem.swift */; }; - D0EC6E731EB9F58900EBF1C3 /* ThemeGalleryToolbarNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05174AA1EAA5B4700A1BF36 /* ThemeGalleryToolbarNode.swift */; }; + D0EC6E731EB9F58900EBF1C3 /* WallpaperGalleryToolbarNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05174AA1EAA5B4700A1BF36 /* WallpaperGalleryToolbarNode.swift */; }; D0EC6E741EB9F58900EBF1C3 /* ThemeGridController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EC6B351EB88D0A00EBF1C3 /* ThemeGridController.swift */; }; D0EC6E751EB9F58900EBF1C3 /* ThemeGridControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EC6B371EB88D1600EBF1C3 /* ThemeGridControllerNode.swift */; }; D0EC6E761EB9F58900EBF1C3 /* SettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01B279A1E39386C0022A4C0 /* SettingsController.swift */; }; @@ -1186,6 +1187,9 @@ 096C98BE21787C6700C211FF /* TGBridgeAudioDecoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TGBridgeAudioDecoder.mm; sourceTree = ""; }; 09749BC221F0DFFD008FDDE9 /* StickersChatInputContextPanelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickersChatInputContextPanelNode.swift; sourceTree = ""; }; 09749BC421F0E024008FDDE9 /* StickersChatInputPanelItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickersChatInputPanelItem.swift; sourceTree = ""; }; + 09749BC821F1BBA1008FDDE9 /* CallFeedbackController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallFeedbackController.swift; sourceTree = ""; }; + 09749BCC21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryDecorationNode.swift; sourceTree = ""; }; + 09749BCE21F236F2008FDDE9 /* ModernCheckNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModernCheckNode.swift; sourceTree = ""; }; 09797872210633CD0077D77F /* InstantPageSettingsButtonItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsButtonItemNode.swift; sourceTree = ""; }; 0979787B210642CB0077D77F /* WebEmbedPlayerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebEmbedPlayerNode.swift; sourceTree = ""; }; 0979787D210646C00077D77F /* YoutubeEmbedImplementation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YoutubeEmbedImplementation.swift; sourceTree = ""; }; @@ -1611,9 +1615,7 @@ D050F2121E48B61500988324 /* PhoneInputNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhoneInputNode.swift; sourceTree = ""; }; D050F2151E48D9E000988324 /* AuthorizationSequenceCountrySelectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceCountrySelectionController.swift; sourceTree = ""; }; D050F2171E48D9EA00988324 /* AuthorizationSequenceCountrySelectionControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceCountrySelectionControllerNode.swift; sourceTree = ""; }; - D05174A41EAA456600A1BF36 /* ThemeGalleryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGalleryController.swift; sourceTree = ""; }; - D05174A81EAA46E000A1BF36 /* ThemeGalleryItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGalleryItem.swift; sourceTree = ""; }; - D05174AA1EAA5B4700A1BF36 /* ThemeGalleryToolbarNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGalleryToolbarNode.swift; sourceTree = ""; }; + D05174AA1EAA5B4700A1BF36 /* WallpaperGalleryToolbarNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryToolbarNode.swift; sourceTree = ""; }; D05174BB1EAE156500A1BF36 /* PresentationResourcesItemList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationResourcesItemList.swift; sourceTree = ""; }; D05174BD1EAE161C00A1BF36 /* PresentationResourcesRootController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationResourcesRootController.swift; sourceTree = ""; }; D05174BF1EAE3AD400A1BF36 /* DefaultDarkPresentationTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultDarkPresentationTheme.swift; sourceTree = ""; }; @@ -3139,9 +3141,6 @@ D06E4C322134A59700088087 /* ThemeAccentColorActionSheet.swift */, D06E4C342134AE3C00088087 /* ThemeAutoNightSettingsController.swift */, D06F31E3213597FF001A0F12 /* ThemeAutoNightTimeSelectionActionSheet.swift */, - D05174A41EAA456600A1BF36 /* ThemeGalleryController.swift */, - D05174A81EAA46E000A1BF36 /* ThemeGalleryItem.swift */, - D05174AA1EAA5B4700A1BF36 /* ThemeGalleryToolbarNode.swift */, D0EC6B351EB88D0A00EBF1C3 /* ThemeGridController.swift */, D0EC6B371EB88D1600EBF1C3 /* ThemeGridControllerNode.swift */, D0C0B5B61EE1DEF1000F4D2C /* ThemeGridControllerItem.swift */, @@ -3159,7 +3158,9 @@ 09DD5D5121ED175300D7007A /* WallpaperColorPickerNode.swift */, 0900678C21ED5EA800530762 /* WallpaperColorPanelNode.swift */, 091417F121EF4E5D00C8325A /* WallpaperGalleryController.swift */, + 09749BCC21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift */, 091417F321EF4F5F00C8325A /* WallpaperGalleryItem.swift */, + D05174AA1EAA5B4700A1BF36 /* WallpaperGalleryToolbarNode.swift */, ); name = Themes; sourceTree = ""; @@ -4146,6 +4147,7 @@ 09FE756C2153F5F900A3120F /* CallRouteActionSheetItem.swift */, 0962E65C21B1486D00245FD9 /* CallDebugNode.swift */, 09DD88F021BE1090000766BC /* CallRatingController.swift */, + 09749BC821F1BBA1008FDDE9 /* CallFeedbackController.swift */, ); name = Call; sourceTree = ""; @@ -4329,6 +4331,7 @@ D056CD6F1FF147B000880D28 /* IconButtonNode.swift */, 09F85BA621E7DA5F00D73170 /* BlurredImageNode.swift */, D00580B221E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift */, + 09749BCE21F236F2008FDDE9 /* ModernCheckNode.swift */, ); name = Nodes; sourceTree = ""; @@ -5358,6 +5361,7 @@ D0461439200514F000EC0EF2 /* LiveLocationSummaryManager.swift in Sources */, D056CD781FF2A6EE00880D28 /* ChatMessageSwipeToReplyNode.swift in Sources */, D0CE67941F7DB45100FFB557 /* ChatMessageContactBubbleContentNode.swift in Sources */, + 09749BCD21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift in Sources */, D0B3AC802142E2E900CD1374 /* ResetPasswordController.swift in Sources */, D05D8B3A2192FC460064586F /* LocalizationListController.swift in Sources */, D0943AFE1FDAE454001522CC /* ChatMultipleAvatarsNavigationNode.swift in Sources */, @@ -5451,6 +5455,7 @@ 0962E67921B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift in Sources */, D0EC6D4E1EB9F58800EBF1C3 /* ChatListItem.swift in Sources */, D0B2F76A2052920D00D3BFB9 /* UserInfoEditingPhoneItem.swift in Sources */, + 09749BC921F1BBA1008FDDE9 /* CallFeedbackController.swift in Sources */, 099529FA21DD8A3100805E13 /* NavigationBarSearchContentNode.swift in Sources */, D0AEAE272080D6970013176E /* StickerPaneSearchBarNode.swift in Sources */, D0EC6D4F1EB9F58800EBF1C3 /* ChatListSearchItem.swift in Sources */, @@ -5904,6 +5909,7 @@ D0943AF61FDAAE7E001522CC /* MultipleAvatarsNode.swift in Sources */, D0EC6E2B1EB9F58900EBF1C3 /* ComposeController.swift in Sources */, D099D74D1EEFEE1500A3128C /* GameController.swift in Sources */, + 09749BCF21F236F2008FDDE9 /* ModernCheckNode.swift in Sources */, D0EC6E2C1EB9F58900EBF1C3 /* ComposeControllerNode.swift in Sources */, D0EC6E2D1EB9F58900EBF1C3 /* CounterContollerTitleView.swift in Sources */, D0AEAE292080FD660013176E /* StickerPaneSearchGlobaltem.swift in Sources */, @@ -6031,13 +6037,11 @@ D0EC6E6D1EB9F58900EBF1C3 /* ItemListStickerPackItem.swift in Sources */, D0EC6E6E1EB9F58900EBF1C3 /* ArchivedStickerPacksController.swift in Sources */, D0DE5805205B202500C356A8 /* ScreenCaptureDetection.swift in Sources */, - D0EC6E711EB9F58900EBF1C3 /* ThemeGalleryController.swift in Sources */, 09F79A0B21C832F400820234 /* WebSearchGalleryFooterContentNode.swift in Sources */, D0C0B5B11EE1C421000F4D2C /* ChatDateSelectionSheet.swift in Sources */, - D0EC6E721EB9F58900EBF1C3 /* ThemeGalleryItem.swift in Sources */, D00781052084DFB100369A39 /* UrlEscaping.swift in Sources */, D0471B581EFE6D020074D609 /* BotCheckoutInfoController.swift in Sources */, - D0EC6E731EB9F58900EBF1C3 /* ThemeGalleryToolbarNode.swift in Sources */, + D0EC6E731EB9F58900EBF1C3 /* WallpaperGalleryToolbarNode.swift in Sources */, D025A4261F79428E00563950 /* FetchManagerLocation.swift in Sources */, D087BFB11F745483003FD209 /* ShareSearchBarNode.swift in Sources */, D0EC6E741EB9F58900EBF1C3 /* ThemeGridController.swift in Sources */, diff --git a/TelegramUI/CallFeedbackController.swift b/TelegramUI/CallFeedbackController.swift new file mode 100644 index 0000000000..bf3035aaf3 --- /dev/null +++ b/TelegramUI/CallFeedbackController.swift @@ -0,0 +1,282 @@ +import Foundation +import Display +import SwiftSignalKit +import Postbox +import TelegramCore + +private enum CallFeedbackReason: Int32, CaseIterable { + case echo + case noise + case interruption + case distortedSpeech + case silentLocal + case silentRemote + case dropped + + var hashtag: String { + switch self { + case .echo: + return "echo" + case .noise: + return "noise" + case .interruption: + return "interruptions" + case .distortedSpeech: + return "distorted_speech" + case .silentLocal: + return "silent_local" + case .silentRemote: + return "silent_remote" + case .dropped: + return "dropped" + } + } + + static func localizedString(for reason: CallFeedbackReason, strings: PresentationStrings) -> String { + switch reason { + case .echo: + return strings.CallFeedback_ReasonEcho + case .noise: + return strings.CallFeedback_ReasonNoise + case .interruption: + return strings.CallFeedback_ReasonInterruption + case .distortedSpeech: + return strings.CallFeedback_ReasonDistortedSpeech + case .silentLocal: + return strings.CallFeedback_ReasonSilentLocal + case .silentRemote: + return strings.CallFeedback_ReasonSilentRemote + case .dropped: + return strings.CallFeedback_ReasonDropped + } + } +} + +private final class CallFeedbackControllerArguments { + let updateComment: (String) -> Void + let toggleReason: (CallFeedbackReason, Bool) -> Void + let toggleIncludeLogs: (Bool) -> Void + + init(updateComment: @escaping (String) -> Void, toggleReason: @escaping (CallFeedbackReason, Bool) -> Void, toggleIncludeLogs: @escaping (Bool) -> Void) { + self.updateComment = updateComment + self.toggleReason = toggleReason + self.toggleIncludeLogs = toggleIncludeLogs + } +} + +private enum CallFeedbackControllerSection: Int32 { + case reasons + case comment + case logs +} + +private enum CallFeedbackControllerEntry: ItemListNodeEntry { + case reasonsHeader(PresentationTheme, String) + case reason(PresentationTheme, CallFeedbackReason, String, Bool) + case comment(PresentationTheme, String, String) + case includeLogs(PresentationTheme, String, Bool) + case includeLogsInfo(PresentationTheme, String) + + var section: ItemListSectionId { + switch self { + case .reasonsHeader, .reason: + return CallFeedbackControllerSection.reasons.rawValue + case .comment: + return CallFeedbackControllerSection.comment.rawValue + case .includeLogs, .includeLogsInfo: + return CallFeedbackControllerSection.logs.rawValue + } + } + + var stableId: Int32 { + switch self { + case .reasonsHeader: + return 0 + case let .reason(_, reason, _, _): + return 1 + reason.rawValue + case .comment: + return 100 + case .includeLogs: + return 101 + case .includeLogsInfo: + return 102 + } + } + + static func ==(lhs: CallFeedbackControllerEntry, rhs: CallFeedbackControllerEntry) -> Bool { + switch lhs { + case let .reasonsHeader(lhsTheme, lhsText): + if case let .reasonsHeader(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText { + return true + } else { + return false + } + case let .reason(lhsTheme, lhsReason, lhsText, lhsValue): + if case let .reason(rhsTheme, rhsReason, rhsText, rhsValue) = rhs, lhsTheme === rhsTheme, lhsReason == rhsReason, lhsText == rhsText, lhsValue == rhsValue { + return true + } else { + return false + } + case let .comment(lhsTheme, lhsText, lhsValue): + if case let .comment(rhsTheme, rhsText, rhsValue) = rhs, lhsTheme === rhsTheme, lhsText == rhsText, lhsValue == rhsValue { + return true + } else { + return false + } + case let .includeLogs(lhsTheme, lhsText, lhsValue): + if case let .includeLogs(rhsTheme, rhsText, rhsValue) = rhs, lhsTheme === rhsTheme, lhsText == rhsText, lhsValue == rhsValue { + return true + } else { + return false + } + case let .includeLogsInfo(lhsTheme, lhsText): + if case let .includeLogsInfo(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText { + return true + } else { + return false + } + } + } + + static func <(lhs: CallFeedbackControllerEntry, rhs: CallFeedbackControllerEntry) -> Bool { + return lhs.stableId < rhs.stableId + } + + func item(_ arguments: CallFeedbackControllerArguments) -> ListViewItem { + switch self { + case let .reasonsHeader(theme, text): + return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) + case let .reason(theme, reason, title, value): + return ItemListSwitchItem(theme: theme, title: title, value: value, sectionId: self.section, style: .blocks, updated: { value in + arguments.toggleReason(reason, value) + }) + case let .comment(theme, text, placeholder): + return ItemListMultilineInputItem(theme: theme, text: text, placeholder: placeholder, maxLength: nil, sectionId: self.section, style: .blocks, textUpdated: { updatedText in + arguments.updateComment(updatedText) + }, action: {}) + case let .includeLogs(theme, title, value): + return ItemListSwitchItem(theme: theme, title: title, value: value, sectionId: self.section, style: .blocks, updated: { value in + arguments.toggleIncludeLogs(value) + }) + case let .includeLogsInfo(theme, text): + return ItemListTextItem(theme: theme, text: .plain(text), sectionId: self.section) + } + } +} + +private struct CallFeedbackState: Equatable { + let reasons: Set + let comment: String + let includeLogs: Bool + + init(reasons: Set = Set(), comment: String = "", includeLogs: Bool = true) { + self.reasons = reasons + self.comment = comment + self.includeLogs = includeLogs + } + + func withUpdatedReasons(_ reasons: Set) -> CallFeedbackState { + return CallFeedbackState(reasons: reasons, comment: self.comment, includeLogs: self.includeLogs) + } + + func withUpdatedComment(_ comment: String) -> CallFeedbackState { + return CallFeedbackState(reasons: self.reasons, comment: comment, includeLogs: self.includeLogs) + } + + func withUpdatedIncludeLogs(_ includeLogs: Bool) -> CallFeedbackState { + return CallFeedbackState(reasons: self.reasons, comment: self.comment, includeLogs: includeLogs) + } +} + +private func callFeedbackControllerEntries(theme: PresentationTheme, strings: PresentationStrings, state: CallFeedbackState) -> [CallFeedbackControllerEntry] { + var entries: [CallFeedbackControllerEntry] = [] + + entries.append(.reasonsHeader(theme, strings.CallFeedback_WhatWentWrong)) + for reason in CallFeedbackReason.allCases { + entries.append(.reason(theme, reason, CallFeedbackReason.localizedString(for: reason, strings: strings), state.reasons.contains(reason))) + } + + entries.append(.comment(theme, state.comment, strings.CallFeedback_AddComment)) + + entries.append(.includeLogs(theme, strings.CallFeedback_IncludeLogs, state.includeLogs)) + entries.append(.includeLogsInfo(theme, strings.CallFeedback_IncludeLogsInfo)) + + return entries +} + +public func callFeedbackController(account: Account, callId: CallId, rating: Int) -> ViewController { + let initialState = CallFeedbackState() + let statePromise = ValuePromise(initialState, ignoreRepeated: true) + let stateValue = Atomic(value: initialState) + let updateState: ((CallFeedbackState) -> CallFeedbackState) -> Void = { f in + statePromise.set(stateValue.modify { f($0) }) + } + + var pushControllerImpl: ((ViewController) -> Void)? + var presentControllerImpl: ((ViewController) -> Void)? + var dismissImpl: (() -> Void)? + + let arguments = CallFeedbackControllerArguments(updateComment: { value in + updateState { $0.withUpdatedComment(value) } + }, toggleReason: { reason, value in + updateState { current in + var reasons = current.reasons + if value { + reasons.insert(reason) + } else { + reasons.remove(reason) + } + return current.withUpdatedReasons(reasons) + } + }, toggleIncludeLogs: { value in + updateState { $0.withUpdatedIncludeLogs(value) } + }) + + let signal = combineLatest(account.telegramApplicationContext.presentationData, statePromise.get()) + |> deliverOnMainQueue + |> map { presentationData, state -> (ItemListControllerState, (ItemListNodeState, CallFeedbackControllerEntry.ItemGenerationArguments)) in + + let leftNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Cancel), style: .bold, enabled: true, action: { + dismissImpl?() + }) + let rightNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.CallFeedback_Send), style: .bold, enabled: true, action: { + var comment = state.comment + var hashtags = "" + for reason in CallFeedbackReason.allCases { + if state.reasons.contains(reason) { + if !hashtags.isEmpty { + hashtags.append(" ") + } + hashtags.append("#\(reason.hashtag)") + } + } + if !comment.isEmpty && !state.reasons.isEmpty { + comment.append("\n") + } + comment.append(hashtags) + + let _ = rateCallAndSendLogs(account: account, callId: callId, starsCount: rating, comment: comment, includeLogs: state.includeLogs).start() + dismissImpl?() + + presentControllerImpl?(OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .starSuccess(presentationData.strings.CallFeedback_Success))) + }) + + let controllerState = ItemListControllerState(theme: presentationData.theme, title: .text(presentationData.strings.CallFeedback_Title), leftNavigationButton: leftNavigationButton, rightNavigationButton: rightNavigationButton, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back)) + let listState = ItemListNodeState(entries: callFeedbackControllerEntries(theme: presentationData.theme, strings: presentationData.strings, state: state), style: .blocks, animateChanges: false) + + return (controllerState, (listState, arguments)) + } + + let controller = ItemListController(account: account, state: signal) + pushControllerImpl = { [weak controller] c in + (controller?.navigationController as? NavigationController)?.pushViewController(c) + } + presentControllerImpl = { [weak controller] c in + controller?.present(c, in: .window(.root)) + } + dismissImpl = { [weak controller] in + controller?.view.endEditing(true) + controller?.dismiss() + } + return controller +} diff --git a/TelegramUI/CallRatingController.swift b/TelegramUI/CallRatingController.swift index 82e3e8384a..75c53c762f 100644 --- a/TelegramUI/CallRatingController.swift +++ b/TelegramUI/CallRatingController.swift @@ -77,14 +77,13 @@ private final class CallRatingContentActionNode: HighlightableButtonNode { } private final class CallRatingAlertContentNode: AlertContentNode { - private var validLayout: CGSize? private let strings: PresentationStrings + private let apply: (Int) -> Void var rating: Int? private let titleNode: ASTextNode private let starNodes: [ASButtonNode] - private let inputFieldNode: ShareInputFieldNode private let actionNodesSeparator: ASDisplayNode private let actionNodes: [CallRatingContentActionNode] @@ -92,12 +91,15 @@ private final class CallRatingAlertContentNode: AlertContentNode { private let disposable = MetaDisposable() + private var validLayout: CGSize? + override var dismissOnOutsideTap: Bool { return self.isUserInteractionEnabled } - init(theme: AlertControllerTheme, ptheme: PresentationTheme, strings: PresentationStrings, actions: [TextAlertAction], dismiss: @escaping () -> Void) { + init(theme: AlertControllerTheme, ptheme: PresentationTheme, strings: PresentationStrings, actions: [TextAlertAction], dismiss: @escaping () -> Void, apply: @escaping (Int) -> Void) { self.strings = strings + self.apply = apply self.titleNode = ASTextNode() self.titleNode.maximumNumberOfLines = 2 @@ -108,9 +110,6 @@ private final class CallRatingAlertContentNode: AlertContentNode { } self.starNodes = starNodes - self.inputFieldNode = ShareInputFieldNode(theme: ShareInputFieldNodeTheme(presentationTheme: ptheme), placeholder: strings.Calls_RatingFeedback) - self.inputFieldNode.alpha = 0.0 - self.actionNodesSeparator = ASDisplayNode() self.actionNodesSeparator.isLayerBacked = true @@ -133,12 +132,11 @@ private final class CallRatingAlertContentNode: AlertContentNode { self.addSubnode(self.titleNode) for node in self.starNodes { - node.addTarget(self, action: #selector(self.starPressed(_:)), forControlEvents: .touchUpInside) + node.addTarget(self, action: #selector(self.starPressed(_:)), forControlEvents: .touchDown) + node.addTarget(self, action: #selector(self.starReleased(_:)), forControlEvents: .touchUpInside) self.addSubnode(node) } - self.addSubnode(self.inputFieldNode) - self.addSubnode(self.actionNodesSeparator) for actionNode in self.actionNodes { @@ -149,14 +147,6 @@ private final class CallRatingAlertContentNode: AlertContentNode { self.addSubnode(separatorNode) } - self.inputFieldNode.updateHeight = { [weak self] in - if let strongSelf = self { - if let _ = strongSelf.validLayout { - strongSelf.requestLayout?(.animated(duration: 0.15, curve: .spring)) - } - } - } - self.updateTheme(theme) } @@ -164,10 +154,6 @@ private final class CallRatingAlertContentNode: AlertContentNode { self.disposable.dispose() } - var comment: String { - return self.inputFieldNode.text - } - @objc func starPressed(_ sender: ASButtonNode) { if let index = self.starNodes.firstIndex(of: sender) { self.rating = index + 1 @@ -175,12 +161,19 @@ private final class CallRatingAlertContentNode: AlertContentNode { let node = self.starNodes[i] node.isSelected = i <= index } - if index < 3 { - self.inputFieldNode.placeholder = self.strings.Call_ReportPlaceholder - } else { - self.inputFieldNode.placeholder = self.strings.Calls_RatingFeedback + } + } + + @objc func starReleased(_ sender: ASButtonNode) { + if let index = self.starNodes.firstIndex(of: sender) { + self.rating = index + 1 + for i in 0 ..< self.starNodes.count { + let node = self.starNodes[i] + node.isSelected = i <= index + } + if let rating = self.rating { + self.apply(rating) } - self.requestLayout?(.animated(duration: 0.3, curve: .spring)) } } @@ -261,16 +254,7 @@ private final class CallRatingAlertContentNode: AlertContentNode { } origin.y += titleSize.height - let inputFieldWidth = resultWidth - let inputFieldHeight = self.inputFieldNode.updateLayout(width: inputFieldWidth, transition: transition) - var inputHeight: CGFloat = 0.0 - if let rating = rating, rating < 5 { - inputHeight += inputFieldHeight - } - transition.updateFrame(node: self.inputFieldNode, frame: CGRect(x: 0.0, y: origin.y, width: resultWidth, height: inputFieldHeight)) - transition.updateAlpha(node: self.inputFieldNode, alpha: inputHeight > 0.0 ? 1.0 : 0.0) - - let resultSize = CGSize(width: resultWidth, height: titleSize.height + actionsHeight + 56.0 + inputHeight + insets.top + insets.bottom) + let resultSize = CGSize(width: resultWidth, height: titleSize.height + actionsHeight + 56.0 + insets.top + insets.bottom) transition.updateFrame(node: self.actionNodesSeparator, frame: CGRect(origin: CGPoint(x: 0.0, y: resultSize.height - actionsHeight - UIScreenPixel), size: CGSize(width: resultSize.width, height: UIScreenPixel))) @@ -321,35 +305,33 @@ private final class CallRatingAlertContentNode: AlertContentNode { } } -private func rateCallAndSendLogs(account: Account, callId: CallId, starsCount: Int, comment: String, includeLogs: Bool) -> Signal { +func rateCallAndSendLogs(account: Account, callId: CallId, starsCount: Int, comment: String, includeLogs: Bool) -> Signal { let peerId = PeerId(namespace: Namespaces.Peer.CloudUser, id: 4244000) - - var rateSignal = rateCall(account: account, callId: callId, starsCount: Int32(starsCount), comment: comment) - if !comment.isEmpty { - rateSignal = rateSignal - |> then(enqueueMessages(account: account, peerId: peerId, messages: [.message(text: comment, attributes: [], mediaReference: nil, replyToMessageId: nil, localGroupingKey: nil)]) - |> mapToSignal({ _ -> Signal in - return .single(Void()) - })) - } + + let rate = rateCall(account: account, callId: callId, starsCount: Int32(starsCount), comment: comment) if includeLogs { let id = arc4random64() let name = "\(callId.id)_\(callId.accessHash).log" let path = callLogsPath(account: account) + "/" + name let file = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: id), partialReference: nil, resource: LocalFileReferenceMediaResource(localFilePath: path, randomId: id), previewRepresentations: [], immediateThumbnailData: nil, mimeType: "application/text", size: nil, attributes: [.FileName(fileName: name)]) - let message = EnqueueMessage.message(text: "", attributes: [], mediaReference: .standalone(media: file), replyToMessageId: nil, localGroupingKey: nil) - - return rateSignal + let message = EnqueueMessage.message(text: comment, attributes: [], mediaReference: .standalone(media: file), replyToMessageId: nil, localGroupingKey: nil) + return rate |> then(enqueueMessages(account: account, peerId: peerId, messages: [message]) |> mapToSignal({ _ -> Signal in return .single(Void()) })) + } else if !comment.isEmpty { + return rate + |> then(enqueueMessages(account: account, peerId: peerId, messages: [.message(text: comment, attributes: [], mediaReference: nil, replyToMessageId: nil, localGroupingKey: nil)]) + |> mapToSignal({ _ -> Signal in + return .single(Void()) + })) } else { - return rateSignal + return rate } } -func callRatingController(account: Account, callId: CallId, present: @escaping (ViewController) -> Void) -> AlertController { +func callRatingController(account: Account, callId: CallId, present: @escaping (ViewController, Any?) -> Void) -> AlertController { let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 } let theme = presentationData.theme let strings = presentationData.strings @@ -358,24 +340,18 @@ func callRatingController(account: Account, callId: CallId, present: @escaping ( var contentNode: CallRatingAlertContentNode? let actions: [TextAlertAction] = [TextAlertAction(type: .genericAction, title: presentationData.strings.Common_NotNow, action: { dismissImpl?(true) - }), TextAlertAction(type: .defaultAction, title: presentationData.strings.Calls_SubmitRating, action: { - dismissImpl?(true) - if let contentNode = contentNode, let rating = contentNode.rating { - if rating < 4 { - let controller = textAlertController(account: account, title: strings.Call_ReportIncludeLog, text: strings.Call_ReportIncludeLogDescription, actions: [TextAlertAction(type: .genericAction, title: presentationData.strings.Call_ReportSkip, action: { - let _ = rateCallAndSendLogs(account: account, callId: callId, starsCount: rating, comment: contentNode.comment, includeLogs: false).start() - }), TextAlertAction(type: .defaultAction, title: presentationData.strings.Call_ReportSend, action: { - let _ = rateCallAndSendLogs(account: account, callId: callId, starsCount: rating, comment: contentNode.comment, includeLogs: true).start() - })]) - present(controller) - } else { - let _ = rateCallAndSendLogs(account: account, callId: callId, starsCount: rating, comment: contentNode.comment, includeLogs: false).start - } - } })] contentNode = CallRatingAlertContentNode(theme: AlertControllerTheme(presentationTheme: theme), ptheme: theme, strings: strings, actions: actions, dismiss: { dismissImpl?(true) + }, apply: { rating in + dismissImpl?(true) + if rating < 4 { + let controller = callFeedbackController(account: account, callId: callId, rating: rating) + present(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + } else { + let _ = rateCallAndSendLogs(account: account, callId: callId, starsCount: rating, comment: "", includeLogs: false).start() + } }) let controller = AlertController(theme: AlertControllerTheme(presentationTheme: theme), contentNode: contentNode!) diff --git a/TelegramUI/ChatController.swift b/TelegramUI/ChatController.swift index 23282e885d..502b271dc6 100644 --- a/TelegramUI/ChatController.swift +++ b/TelegramUI/ChatController.swift @@ -1096,9 +1096,9 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal } }, rateCall: { [weak self] message, callId in if let strongSelf = self { - let controller = callRatingController(account: strongSelf.account, callId: callId, present: { [weak self] controller in + let controller = callRatingController(account: strongSelf.account, callId: callId, present: { [weak self] c, a in if let strongSelf = self { - strongSelf.present(controller, in: .window(.root)) + strongSelf.present(c, in: .window(.root), with: a) } }) strongSelf.present(controller, in: .window(.root)) diff --git a/TelegramUI/ChatControllerInteraction.swift b/TelegramUI/ChatControllerInteraction.swift index ef5bf98064..0700a265da 100644 --- a/TelegramUI/ChatControllerInteraction.swift +++ b/TelegramUI/ChatControllerInteraction.swift @@ -142,4 +142,24 @@ public final class ChatControllerInteraction { self.pollActionState = pollActionState } + + static var `default`: ChatControllerInteraction { + return ChatControllerInteraction(openMessage: { _, _ in + return false }, openPeer: { _, _, _ in }, openPeerMention: { _ in }, openMessageContextMenu: { _, _, _, _ in }, navigateToMessage: { _, _ in }, clickThroughMessage: { }, toggleMessagesSelection: { _, _ in }, sendMessage: { _ in }, sendSticker: { _, _ in }, sendGif: { _ in }, requestMessageActionCallback: { _, _, _ in }, activateSwitchInline: { _, _ in }, openUrl: { _, _, _ in }, shareCurrentLocation: {}, shareAccountContact: {}, sendBotCommand: { _, _ in }, openInstantPage: { _ in }, openWallpaper: { _ in }, openHashtag: { _, _ in }, updateInputState: { _ in }, updateInputMode: { _ in }, openMessageShareMenu: { _ in + }, presentController: { _, _ in }, navigationController: { + return nil + }, presentGlobalOverlayController: { _, _ in }, callPeer: { _ in }, longTap: { _ in }, openCheckoutOrReceipt: { _ in }, openSearch: { }, setupReply: { _ in + }, canSetupReply: { _ in + return false + }, navigateToFirstDateMessage: { _ in + }, requestRedeliveryOfFailedMessages: { _ in + }, addContact: { _ in + }, rateCall: { _, _ in + }, requestSelectMessagePollOption: { _, _ in + }, openAppStorePage: { + }, requestMessageUpdate: { _ in + }, cancelInteractiveKeyboardGestures: { + }, automaticMediaDownloadSettings: AutomaticMediaDownloadSettings.defaultSettings, + pollActionState: ChatInterfacePollActionState()) + } } diff --git a/TelegramUI/ChatListController.swift b/TelegramUI/ChatListController.swift index 389723fc31..de297d8d6a 100644 --- a/TelegramUI/ChatListController.swift +++ b/TelegramUI/ChatListController.swift @@ -529,7 +529,7 @@ public class ChatListController: TelegramController, KeyShortcutResponder, UIVie self.chatListDisplayNode.requestOpenRecentPeerOptions = { [weak self] peer in if let strongSelf = self { - strongSelf.chatListDisplayNode.view.endEditing(true) + strongSelf.view.endEditing(true) let actionSheet = ActionSheetController(presentationTheme: strongSelf.presentationData.theme) actionSheet.setItemGroups([ @@ -556,7 +556,7 @@ public class ChatListController: TelegramController, KeyShortcutResponder, UIVie self.chatListDisplayNode.requestAddContact = { [weak self] phoneNumber in if let strongSelf = self { - strongSelf.chatListDisplayNode.view.endEditing(true) + strongSelf.view.endEditing(true) openAddContact(account: strongSelf.account, phoneNumber: phoneNumber, present: { [weak self] controller, arguments in self?.present(controller, in: .window(.root), with: arguments) }, completed: { diff --git a/TelegramUI/ChatMessageAttachedContentNode.swift b/TelegramUI/ChatMessageAttachedContentNode.swift index b65a87a027..c347e92338 100644 --- a/TelegramUI/ChatMessageAttachedContentNode.swift +++ b/TelegramUI/ChatMessageAttachedContentNode.swift @@ -30,6 +30,7 @@ struct ChatMessageAttachedContentNodeMediaFlags: OptionSet { static let preferMediaInline = ChatMessageAttachedContentNodeMediaFlags(rawValue: 1 << 0) static let preferMediaBeforeText = ChatMessageAttachedContentNodeMediaFlags(rawValue: 1 << 1) + static let preferMediaAspectFilled = ChatMessageAttachedContentNodeMediaFlags(rawValue: 1 << 2) } final class ChatMessageAttachedContentButtonNode: HighlightTrackingButtonNode { @@ -262,7 +263,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { self.addSubnode(self.statusNode) } - func asyncLayout() -> (_ presentationData: ChatPresentationData, _ automaticDownloadSettings: AutomaticMediaDownloadSettings, _ associatedData: ChatMessageItemAssociatedData, _ account: Account, _ controllerInteraction: ChatControllerInteraction, _ message: Message, _ messageRead: Bool, _ title: String?, _ subtitle: NSAttributedString?, _ text: String?, _ entities: [MessageTextEntity]?, _ media: (Media, ChatMessageAttachedContentNodeMediaFlags)?, _ actionIcon: ChatMessageAttachedContentActionIcon?, _ actionTitle: String?, _ displayLine: Bool, _ layoutConstants: ChatMessageItemLayoutConstants, _ constrainedSize: CGSize) -> (CGFloat, (CGSize, ChatMessageBubbleContentPosition) -> (CGFloat, (CGFloat) -> (CGSize, (ListViewItemUpdateAnimation, Bool) -> Void))) { + func asyncLayout() -> (_ presentationData: ChatPresentationData, _ automaticDownloadSettings: AutomaticMediaDownloadSettings, _ associatedData: ChatMessageItemAssociatedData, _ account: Account, _ controllerInteraction: ChatControllerInteraction, _ message: Message, _ messageRead: Bool, _ title: String?, _ subtitle: NSAttributedString?, _ text: String?, _ entities: [MessageTextEntity]?, _ media: (Media, ChatMessageAttachedContentNodeMediaFlags)?, _ mediaBadge: String?, _ actionIcon: ChatMessageAttachedContentActionIcon?, _ actionTitle: String?, _ displayLine: Bool, _ layoutConstants: ChatMessageItemLayoutConstants, _ constrainedSize: CGSize) -> (CGFloat, (CGSize, ChatMessageBubbleContentPosition) -> (CGFloat, (CGFloat) -> (CGSize, (ListViewItemUpdateAnimation, Bool) -> Void))) { let textAsyncLayout = TextNode.asyncLayout(self.textNode) let currentImage = self.media as? TelegramMediaImage let imageLayout = self.inlineImageNode.asyncLayout() @@ -275,7 +276,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { let currentAdditionalImageBadgeNode = self.additionalImageBadgeNode - return { presentationData, automaticDownloadSettings, associatedData, account, controllerInteraction, message, messageRead, title, subtitle, text, entities, mediaAndFlags, actionIcon, actionTitle, displayLine, layoutConstants, constrainedSize in + return { presentationData, automaticDownloadSettings, associatedData, account, controllerInteraction, message, messageRead, title, subtitle, text, entities, mediaAndFlags, mediaBadge, actionIcon, actionTitle, displayLine, layoutConstants, constrainedSize in let incoming = message.effectivelyIncoming(account.peerId) var horizontalInsets = UIEdgeInsets(top: 0.0, left: 12.0, bottom: 0.0, right: 12.0) @@ -284,10 +285,14 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { } var preferMediaBeforeText = false - if let (_, flags) = mediaAndFlags, flags.contains(.preferMediaBeforeText) { - preferMediaBeforeText = true + var preferMediaAspectFilled = false + if let (_, flags) = mediaAndFlags { + preferMediaBeforeText = flags.contains(.preferMediaBeforeText) + preferMediaAspectFilled = flags.contains(.preferMediaAspectFilled) } + let contentMode: InteractiveMediaNodeContentMode = preferMediaAspectFilled ? .aspectFill : .aspectFit + var edited = false var sentViaBot = false var viewCount: Int? @@ -381,12 +386,12 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { contentInstantVideoSizeAndApply = (videoLayout, apply) } else if file.isVideo { let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, media: file) - let (_, initialImageWidth, refineLayout) = contentImageLayout(account, presentationData.theme.theme, presentationData.strings, message, file, automaticDownload, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants) + let (_, initialImageWidth, refineLayout) = contentImageLayout(account, presentationData.theme.theme, presentationData.strings, message, file, automaticDownload, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants, contentMode) initialWidth = initialImageWidth + horizontalInsets.left + horizontalInsets.right refineContentImageLayout = refineLayout } else if file.isSticker, let _ = file.dimensions { let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, media: file) - let (_, initialImageWidth, refineLayout) = contentImageLayout(account, presentationData.theme.theme, presentationData.strings, message, file, automaticDownload, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants) + let (_, initialImageWidth, refineLayout) = contentImageLayout(account, presentationData.theme.theme, presentationData.strings, message, file, automaticDownload, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants, contentMode) initialWidth = initialImageWidth + horizontalInsets.left + horizontalInsets.right refineContentImageLayout = refineLayout } else { @@ -411,7 +416,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { } else if let image = media as? TelegramMediaImage { if !flags.contains(.preferMediaInline) { let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, media: image) - let (_, initialImageWidth, refineLayout) = contentImageLayout(account, presentationData.theme.theme, presentationData.strings, message, image, automaticDownload, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants) + let (_, initialImageWidth, refineLayout) = contentImageLayout(account, presentationData.theme.theme, presentationData.strings, message, image, automaticDownload, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants, contentMode) initialWidth = initialImageWidth + horizontalInsets.left + horizontalInsets.right refineContentImageLayout = refineLayout } else if let dimensions = largestImageRepresentation(image.representations)?.dimensions { @@ -423,7 +428,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { } } else if let image = media as? TelegramMediaWebFile { let automaticDownload = shouldDownloadMediaAutomatically(settings: automaticDownloadSettings, peerType: associatedData.automaticDownloadPeerType, networkType: associatedData.automaticDownloadNetworkType, media: image) - let (_, initialImageWidth, refineLayout) = contentImageLayout(account, presentationData.theme.theme, presentationData.strings, message, image, automaticDownload, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants) + let (_, initialImageWidth, refineLayout) = contentImageLayout(account, presentationData.theme.theme, presentationData.strings, message, image, automaticDownload, associatedData.automaticDownloadPeerType, automaticDownloadSettings.autoplayGifs, .constrained(CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)), layoutConstants, contentMode) initialWidth = initialImageWidth + horizontalInsets.left + horizontalInsets.right refineContentImageLayout = refineLayout } @@ -463,6 +468,8 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { if let count = webpageGalleryMediaCount { additionalImageBadgeContent = .text(inset: 0.0, backgroundColor: presentationData.theme.theme.chat.bubble.mediaDateAndStatusFillColor, foregroundColor: presentationData.theme.theme.chat.bubble.mediaDateAndStatusTextColor, shape: .corners(2.0), text: NSAttributedString(string: "1 \(presentationData.strings.Common_of) \(count)")) skipStandardStatus = imageMode + } else if let mediaBadge = mediaBadge { + additionalImageBadgeContent = .text(inset: 0.0, backgroundColor: presentationData.theme.theme.chat.bubble.mediaDateAndStatusFillColor, foregroundColor: presentationData.theme.theme.chat.bubble.mediaDateAndStatusTextColor, shape: .round, text: NSAttributedString(string: mediaBadge)) } if !skipStandardStatus { @@ -639,13 +646,13 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { let (size, apply) = finalizeContentImageLayout(boundingWidth - insets.left - insets.right) contentImageSizeAndApply = (size, apply) - var imageHeigthAddition = size.height + var imageHeightAddition = size.height if textFrame.size.height > CGFloat.ulpOfOne { - imageHeigthAddition += 2.0 + imageHeightAddition += 2.0 } - adjustedBoundingSize.height += imageHeigthAddition + 5.0 - adjustedLineHeight += imageHeigthAddition + 4.0 + adjustedBoundingSize.height += imageHeightAddition + 5.0 + adjustedLineHeight += imageHeightAddition + 4.0 if !statusInText, let (statusSize, _) = statusSizeAndApply { statusFrame = CGRect(origin: CGPoint(), size: statusSize) @@ -667,13 +674,13 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { } if let (videoLayout, _) = contentInstantVideoSizeAndApply { - let imageHeigthAddition = videoLayout.contentSize.height + 6.0 + let imageHeightAddition = videoLayout.contentSize.height + 6.0 if textFrame.size.height > CGFloat.ulpOfOne { - //imageHeigthAddition += 2.0 + //imageHeightAddition += 2.0 } - adjustedBoundingSize.height += imageHeigthAddition// + 5.0 - adjustedLineHeight += imageHeigthAddition// + 4.0 + adjustedBoundingSize.height += imageHeightAddition// + 5.0 + adjustedLineHeight += imageHeightAddition// + 4.0 } var actionButtonSizeAndApply: ((CGSize, () -> ChatMessageAttachedContentButtonNode))? @@ -770,9 +777,14 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { } strongSelf.additionalImageBadgeNode = updatedAdditionalImageBadge contentImageNode.addSubnode(updatedAdditionalImageBadge) - updatedAdditionalImageBadge.contentMode = .topRight updatedAdditionalImageBadge.update(theme: presentationData.theme.theme, content: additionalImageBadgeContent, mediaDownloadState: nil, animated: false) - updatedAdditionalImageBadge.frame = CGRect(origin: CGPoint(x: contentImageSize.width - 2.0, y: contentImageSize.height - 18.0 - 2.0), size: CGSize(width: 0.0, height: 0.0)) + if mediaBadge != nil { + updatedAdditionalImageBadge.contentMode = .topLeft + updatedAdditionalImageBadge.frame = CGRect(origin: CGPoint(x: 2.0, y: 2.0), size: CGSize(width: 0.0, height: 0.0)) + } else { + updatedAdditionalImageBadge.contentMode = .topRight + updatedAdditionalImageBadge.frame = CGRect(origin: CGPoint(x: contentImageSize.width - 2.0, y: contentImageSize.height - 18.0 - 2.0), size: CGSize(width: 0.0, height: 0.0)) + } } else if let additionalImageBadgeNode = strongSelf.additionalImageBadgeNode { strongSelf.additionalImageBadgeNode = nil additionalImageBadgeNode.removeFromSupernode() diff --git a/TelegramUI/ChatMessageEventLogPreviousDescriptionContentNode.swift b/TelegramUI/ChatMessageEventLogPreviousDescriptionContentNode.swift index 74a7a300cb..ba5b7fe9b8 100644 --- a/TelegramUI/ChatMessageEventLogPreviousDescriptionContentNode.swift +++ b/TelegramUI/ChatMessageEventLogPreviousDescriptionContentNode.swift @@ -42,7 +42,7 @@ final class ChatMessageEventLogPreviousDescriptionContentNode: ChatMessageBubble } let mediaAndFlags: (Media, ChatMessageAttachedContentNodeMediaFlags)? = nil - let (initialWidth, continueLayout) = contentNodeLayout(item.presentationData, item.controllerInteraction.automaticMediaDownloadSettings, item.associatedData, item.account, item.controllerInteraction, item.message, true, title, nil, text, messageEntities, mediaAndFlags, nil, nil, true, layoutConstants, constrainedSize) + let (initialWidth, continueLayout) = contentNodeLayout(item.presentationData, item.controllerInteraction.automaticMediaDownloadSettings, item.associatedData, item.account, item.controllerInteraction, item.message, true, title, nil, text, messageEntities, mediaAndFlags, nil, nil, nil, true, layoutConstants, constrainedSize) let contentProperties = ChatMessageBubbleContentProperties(hidesSimpleAuthorHeader: false, headerSpacing: 8.0, hidesBackground: .never, forceFullCorners: false, forceAlignment: .none) diff --git a/TelegramUI/ChatMessageEventLogPreviousLinkContentNode.swift b/TelegramUI/ChatMessageEventLogPreviousLinkContentNode.swift index eb8385c302..bcc4ff4364 100644 --- a/TelegramUI/ChatMessageEventLogPreviousLinkContentNode.swift +++ b/TelegramUI/ChatMessageEventLogPreviousLinkContentNode.swift @@ -37,7 +37,7 @@ final class ChatMessageEventLogPreviousLinkContentNode: ChatMessageBubbleContent let text: String = item.message.text let mediaAndFlags: (Media, ChatMessageAttachedContentNodeMediaFlags)? = nil - let (initialWidth, continueLayout) = contentNodeLayout(item.presentationData, item.controllerInteraction.automaticMediaDownloadSettings, item.associatedData, item.account, item.controllerInteraction, item.message, true, title, nil, text, messageEntities, mediaAndFlags, nil, nil, true, layoutConstants, constrainedSize) + let (initialWidth, continueLayout) = contentNodeLayout(item.presentationData, item.controllerInteraction.automaticMediaDownloadSettings, item.associatedData, item.account, item.controllerInteraction, item.message, true, title, nil, text, messageEntities, mediaAndFlags, nil, nil, nil, true, layoutConstants, constrainedSize) let contentProperties = ChatMessageBubbleContentProperties(hidesSimpleAuthorHeader: false, headerSpacing: 8.0, hidesBackground: .never, forceFullCorners: false, forceAlignment: .none) diff --git a/TelegramUI/ChatMessageEventLogPreviousMessageContentNode.swift b/TelegramUI/ChatMessageEventLogPreviousMessageContentNode.swift index 68e5a0e9bd..f20ea84363 100644 --- a/TelegramUI/ChatMessageEventLogPreviousMessageContentNode.swift +++ b/TelegramUI/ChatMessageEventLogPreviousMessageContentNode.swift @@ -42,7 +42,7 @@ final class ChatMessageEventLogPreviousMessageContentNode: ChatMessageBubbleCont } let mediaAndFlags: (Media, ChatMessageAttachedContentNodeMediaFlags)? = nil - let (initialWidth, continueLayout) = contentNodeLayout(item.presentationData, item.controllerInteraction.automaticMediaDownloadSettings, item.associatedData, item.account, item.controllerInteraction, item.message, true, title, nil, text, messageEntities, mediaAndFlags, nil, nil, true, layoutConstants, constrainedSize) + let (initialWidth, continueLayout) = contentNodeLayout(item.presentationData, item.controllerInteraction.automaticMediaDownloadSettings, item.associatedData, item.account, item.controllerInteraction, item.message, true, title, nil, text, messageEntities, mediaAndFlags, nil, nil, nil, true, layoutConstants, constrainedSize) let contentProperties = ChatMessageBubbleContentProperties(hidesSimpleAuthorHeader: false, headerSpacing: 8.0, hidesBackground: .never, forceFullCorners: false, forceAlignment: .none) diff --git a/TelegramUI/ChatMessageGameBubbleContentNode.swift b/TelegramUI/ChatMessageGameBubbleContentNode.swift index c9edbc381a..eed4488180 100644 --- a/TelegramUI/ChatMessageGameBubbleContentNode.swift +++ b/TelegramUI/ChatMessageGameBubbleContentNode.swift @@ -69,7 +69,7 @@ final class ChatMessageGameBubbleContentNode: ChatMessageBubbleContentNode { } } - let (initialWidth, continueLayout) = contentNodeLayout(item.presentationData, item.controllerInteraction.automaticMediaDownloadSettings, item.associatedData, item.account, item.controllerInteraction, item.message, item.read, title, nil, item.message.text.isEmpty ? text : item.message.text, item.message.text.isEmpty ? nil : messageEntities, mediaAndFlags, nil, nil, true, layoutConstants, constrainedSize) + let (initialWidth, continueLayout) = contentNodeLayout(item.presentationData, item.controllerInteraction.automaticMediaDownloadSettings, item.associatedData, item.account, item.controllerInteraction, item.message, item.read, title, nil, item.message.text.isEmpty ? text : item.message.text, item.message.text.isEmpty ? nil : messageEntities, mediaAndFlags, nil, nil, nil, true, layoutConstants, constrainedSize) let contentProperties = ChatMessageBubbleContentProperties(hidesSimpleAuthorHeader: false, headerSpacing: 8.0, hidesBackground: .never, forceFullCorners: false, forceAlignment: .none) diff --git a/TelegramUI/ChatMessageInteractiveMediaNode.swift b/TelegramUI/ChatMessageInteractiveMediaNode.swift index f8433e14c4..21bdb66c59 100644 --- a/TelegramUI/ChatMessageInteractiveMediaNode.swift +++ b/TelegramUI/ChatMessageInteractiveMediaNode.swift @@ -15,6 +15,11 @@ enum InteractiveMediaNodeSizeCalculation { case unconstrained } +enum InteractiveMediaNodeContentMode { + case aspectFit + case aspectFill +} + enum InteractiveMediaNodeActivateContent { case `default` case stream @@ -141,7 +146,7 @@ final class ChatMessageInteractiveMediaNode: ASDisplayNode { } } - func asyncLayout() -> (_ account: Account, _ theme: PresentationTheme, _ strings: PresentationStrings, _ message: Message, _ media: Media, _ automaticDownload: Bool, _ peerType: AutomaticMediaDownloadPeerType, _ automaticPlayback: Bool, _ sizeCalculation: InteractiveMediaNodeSizeCalculation, _ layoutConstants: ChatMessageItemLayoutConstants) -> (CGSize, CGFloat, (CGSize, ImageCorners) -> (CGFloat, (CGFloat) -> (CGSize, (ContainedViewLayoutTransition, Bool) -> Void))) { + func asyncLayout() -> (_ account: Account, _ theme: PresentationTheme, _ strings: PresentationStrings, _ message: Message, _ media: Media, _ automaticDownload: Bool, _ peerType: AutomaticMediaDownloadPeerType, _ automaticPlayback: Bool, _ sizeCalculation: InteractiveMediaNodeSizeCalculation, _ layoutConstants: ChatMessageItemLayoutConstants, _ contentMode: InteractiveMediaNodeContentMode) -> (CGSize, CGFloat, (CGSize, ImageCorners) -> (CGFloat, (CGFloat) -> (CGSize, (ContainedViewLayoutTransition, Bool) -> Void))) { let currentMessage = self.message let currentMedia = self.media let imageLayout = self.imageNode.asyncLayout() @@ -150,7 +155,7 @@ final class ChatMessageInteractiveMediaNode: ASDisplayNode { let hasCurrentVideoNode = currentVideoNode != nil let previousAutomaticDownload = self.automaticDownload - return { [weak self] account, theme, strings, message, media, automaticDownload, peerType, automaticPlayback, sizeCalculation, layoutConstants in + return { [weak self] account, theme, strings, message, media, automaticDownload, peerType, automaticPlayback, sizeCalculation, layoutConstants, contentMode in var nativeSize: CGSize let isSecretMedia = message.containsSecretMedia @@ -247,7 +252,12 @@ final class ChatMessageInteractiveMediaNode: ASDisplayNode { boundingSize = CGSize(width: boundingWidth, height: fittedSize.height).cropped(CGSize(width: CGFloat.greatestFiniteMagnitude, height: layoutConstants.image.maxDimensions.height)) boundingSize.height = max(boundingSize.height, layoutConstants.image.minDimensions.height) boundingSize.width = max(boundingSize.width, layoutConstants.image.minDimensions.width) - drawingSize = nativeSize.aspectFittedWithOverflow(boundingSize, leeway: 4.0) + switch contentMode { + case .aspectFit: + drawingSize = nativeSize.aspectFittedWithOverflow(boundingSize, leeway: 4.0) + case .aspectFill: + drawingSize = nativeSize.aspectFilled(boundingSize) + } } case .unconstrained: boundingSize = constrainedSize @@ -792,12 +802,12 @@ final class ChatMessageInteractiveMediaNode: ASDisplayNode { } } - static func asyncLayout(_ node: ChatMessageInteractiveMediaNode?) -> (_ account: Account, _ theme: PresentationTheme, _ strings: PresentationStrings, _ message: Message, _ media: Media, _ automaticDownload: Bool, _ peerType: AutomaticMediaDownloadPeerType, _ automaticPlayback: Bool, _ sizeCalculation: InteractiveMediaNodeSizeCalculation, _ layoutConstants: ChatMessageItemLayoutConstants) -> (CGSize, CGFloat, (CGSize, ImageCorners) -> (CGFloat, (CGFloat) -> (CGSize, (ContainedViewLayoutTransition, Bool) -> ChatMessageInteractiveMediaNode))) { + static func asyncLayout(_ node: ChatMessageInteractiveMediaNode?) -> (_ account: Account, _ theme: PresentationTheme, _ strings: PresentationStrings, _ message: Message, _ media: Media, _ automaticDownload: Bool, _ peerType: AutomaticMediaDownloadPeerType, _ automaticPlayback: Bool, _ sizeCalculation: InteractiveMediaNodeSizeCalculation, _ layoutConstants: ChatMessageItemLayoutConstants, _ contentMode: InteractiveMediaNodeContentMode) -> (CGSize, CGFloat, (CGSize, ImageCorners) -> (CGFloat, (CGFloat) -> (CGSize, (ContainedViewLayoutTransition, Bool) -> ChatMessageInteractiveMediaNode))) { let currentAsyncLayout = node?.asyncLayout() - return { account, theme, strings, message, media, automaticDownload, peerType, automaticPlayback, sizeCalculation, layoutConstants in + return { account, theme, strings, message, media, automaticDownload, peerType, automaticPlayback, sizeCalculation, layoutConstants, contentMode in var imageNode: ChatMessageInteractiveMediaNode - var imageLayout: (_ account: Account, _ theme: PresentationTheme, _ strings: PresentationStrings, _ message: Message, _ media: Media, _ automaticDownload: Bool, _ peerType: AutomaticMediaDownloadPeerType, _ automaticPlayback: Bool, _ sizeCalculation: InteractiveMediaNodeSizeCalculation, _ layoutConstants: ChatMessageItemLayoutConstants) -> (CGSize, CGFloat, (CGSize, ImageCorners) -> (CGFloat, (CGFloat) -> (CGSize, (ContainedViewLayoutTransition, Bool) -> Void))) + var imageLayout: (_ account: Account, _ theme: PresentationTheme, _ strings: PresentationStrings, _ message: Message, _ media: Media, _ automaticDownload: Bool, _ peerType: AutomaticMediaDownloadPeerType, _ automaticPlayback: Bool, _ sizeCalculation: InteractiveMediaNodeSizeCalculation, _ layoutConstants: ChatMessageItemLayoutConstants, _ contentMode: InteractiveMediaNodeContentMode) -> (CGSize, CGFloat, (CGSize, ImageCorners) -> (CGFloat, (CGFloat) -> (CGSize, (ContainedViewLayoutTransition, Bool) -> Void))) if let node = node, let currentAsyncLayout = currentAsyncLayout { imageNode = node @@ -807,7 +817,7 @@ final class ChatMessageInteractiveMediaNode: ASDisplayNode { imageLayout = imageNode.asyncLayout() } - let (unboundSize, initialWidth, continueLayout) = imageLayout(account, theme, strings, message, media, automaticDownload, peerType, automaticPlayback, sizeCalculation, layoutConstants) + let (unboundSize, initialWidth, continueLayout) = imageLayout(account, theme, strings, message, media, automaticDownload, peerType, automaticPlayback, sizeCalculation, layoutConstants, contentMode) return (unboundSize, initialWidth, { constrainedSize, corners in let (finalWidth, finalLayout) = continueLayout(constrainedSize, corners) diff --git a/TelegramUI/ChatMessageInvoiceBubbleContentNode.swift b/TelegramUI/ChatMessageInvoiceBubbleContentNode.swift index bb6d65f238..a526ecc305 100644 --- a/TelegramUI/ChatMessageInvoiceBubbleContentNode.swift +++ b/TelegramUI/ChatMessageInvoiceBubbleContentNode.swift @@ -70,7 +70,7 @@ final class ChatMessageInvoiceBubbleContentNode: ChatMessageBubbleContentNode { } } - let (initialWidth, continueLayout) = contentNodeLayout(item.presentationData, automaticDownloadSettings, item.associatedData, item.account, item.controllerInteraction, item.message, item.read, title, subtitle, text, nil, mediaAndFlags, nil, nil, false, layoutConstants, constrainedSize) + let (initialWidth, continueLayout) = contentNodeLayout(item.presentationData, automaticDownloadSettings, item.associatedData, item.account, item.controllerInteraction, item.message, item.read, title, subtitle, text, nil, mediaAndFlags, nil, nil, nil, false, layoutConstants, constrainedSize) let contentProperties = ChatMessageBubbleContentProperties(hidesSimpleAuthorHeader: false, headerSpacing: 8.0, hidesBackground: .never, forceFullCorners: false, forceAlignment: .none) diff --git a/TelegramUI/ChatMessageMediaBubbleContentNode.swift b/TelegramUI/ChatMessageMediaBubbleContentNode.swift index c4cf5f0d1b..8c3fc9f19d 100644 --- a/TelegramUI/ChatMessageMediaBubbleContentNode.swift +++ b/TelegramUI/ChatMessageMediaBubbleContentNode.swift @@ -86,7 +86,7 @@ class ChatMessageMediaBubbleContentNode: ChatMessageBubbleContentNode { sizeCalculation = .unconstrained } - let (unboundSize, initialWidth, refineLayout) = interactiveImageLayout(item.account, item.presentationData.theme.theme, item.presentationData.strings, item.message, selectedMedia!, automaticDownload, item.associatedData.automaticDownloadPeerType, item.controllerInteraction.automaticMediaDownloadSettings.autoplayGifs, sizeCalculation, layoutConstants) + let (unboundSize, initialWidth, refineLayout) = interactiveImageLayout(item.account, item.presentationData.theme.theme, item.presentationData.strings, item.message, selectedMedia!, automaticDownload, item.associatedData.automaticDownloadPeerType, item.controllerInteraction.automaticMediaDownloadSettings.autoplayGifs, sizeCalculation, layoutConstants, .aspectFit) var forceFullCorners = false if let media = selectedMedia as? TelegramMediaFile, media.isAnimated { diff --git a/TelegramUI/ChatMessageWebpageBubbleContentNode.swift b/TelegramUI/ChatMessageWebpageBubbleContentNode.swift index c5854249d3..81f0a07e64 100644 --- a/TelegramUI/ChatMessageWebpageBubbleContentNode.swift +++ b/TelegramUI/ChatMessageWebpageBubbleContentNode.swift @@ -187,6 +187,7 @@ final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContentNode { var text: String? var entities: [MessageTextEntity]? var mediaAndFlags: (Media, ChatMessageAttachedContentNodeMediaFlags)? + var badge: String? var actionIcon: ChatMessageAttachedContentActionIcon? var actionTitle: String? @@ -233,7 +234,10 @@ final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContentNode { representations.append(TelegramMediaImageRepresentation(dimensions: dimensions, resource: file.resource)) } let tmpImage = TelegramMediaImage(imageId: MediaId(namespace: 0, id: 0), representations: representations, immediateThumbnailData: file.immediateThumbnailData, reference: nil, partialReference: nil) - mediaAndFlags = (tmpImage, []) + mediaAndFlags = (tmpImage, [.preferMediaAspectFilled]) + if let fileSize = file.size { + badge = dataSizeString(fileSize) + } } else { mediaAndFlags = (file, []) } @@ -282,7 +286,7 @@ final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContentNode { } } - let (initialWidth, continueLayout) = contentNodeLayout(item.presentationData, item.controllerInteraction.automaticMediaDownloadSettings, item.associatedData, item.account, item.controllerInteraction, item.message, item.read, title, subtitle, text, entities, mediaAndFlags, actionIcon, actionTitle, true, layoutConstants, constrainedSize) + let (initialWidth, continueLayout) = contentNodeLayout(item.presentationData, item.controllerInteraction.automaticMediaDownloadSettings, item.associatedData, item.account, item.controllerInteraction, item.message, item.read, title, subtitle, text, entities, mediaAndFlags, badge, actionIcon, actionTitle, true, layoutConstants, constrainedSize) let contentProperties = ChatMessageBubbleContentProperties(hidesSimpleAuthorHeader: false, headerSpacing: 8.0, hidesBackground: .never, forceFullCorners: false, forceAlignment: .none) diff --git a/TelegramUI/ModernCheckNode.swift b/TelegramUI/ModernCheckNode.swift new file mode 100644 index 0000000000..9b92c8e220 --- /dev/null +++ b/TelegramUI/ModernCheckNode.swift @@ -0,0 +1,32 @@ +import Foundation +import AsyncDisplayKit +import Display + +private final class CheckNodeParameters: NSObject { + let progress: CGFloat + + init(progress: CGFloat) { + self.progress = progress + } +} + +class ModernCheckNode: ASDisplayNode { + private var displayProgress: CGFloat = 0.0 + + func setSelected(_ selected: Bool, animated: Bool) { + if animated { + + } else { + self.displayProgress = selected ? 1.0 : 0.0 + } + } + + override func drawParameters(forAsyncLayer layer: _ASDisplayLayer) -> NSObjectProtocol? { + return CheckNodeParameters(progress: self.displayProgress) + } + + @objc override class func draw(_ bounds: CGRect, withParameters parameters: Any?, isCancelled: () -> Bool, isRasterizing: Bool) { + + } + +} diff --git a/TelegramUI/NavigateToChatController.swift b/TelegramUI/NavigateToChatController.swift index db118e3dd5..e9c5033b7d 100644 --- a/TelegramUI/NavigateToChatController.swift +++ b/TelegramUI/NavigateToChatController.swift @@ -90,7 +90,7 @@ public func isInlineControllerForChatNotificationOverlayPresentation(_ controlle } public func isOverlayControllerForChatNotificationOverlayPresentation(_ controller: ViewController) -> Bool { - if controller is GalleryController || controller is AvatarGalleryController || controller is ThemeGalleryController || controller is InstantPageGalleryController || controller is InstantVideoController { + if controller is GalleryController || controller is AvatarGalleryController || controller is WallpaperGalleryController || controller is InstantPageGalleryController || controller is InstantVideoController { return true } diff --git a/TelegramUI/OpenChatMessage.swift b/TelegramUI/OpenChatMessage.swift index 65cb66854a..e2aacf0a03 100644 --- a/TelegramUI/OpenChatMessage.swift +++ b/TelegramUI/OpenChatMessage.swift @@ -415,8 +415,8 @@ func openChatWallpaper(account: Account, message: Message, present: @escaping (V source = .wallpaper(.color(Int32(color.rgb))) } - let controller = WallpaperListPreviewController(account: account, source: source) - present(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + let controller = WallpaperGalleryController(account: account, source: source) + present(controller, nil) } }) } diff --git a/TelegramUI/OpenResolvedUrl.swift b/TelegramUI/OpenResolvedUrl.swift index 0cd5d20bdb..cd49e64f49 100644 --- a/TelegramUI/OpenResolvedUrl.swift +++ b/TelegramUI/OpenResolvedUrl.swift @@ -210,8 +210,8 @@ func openResolvedUrl(_ resolvedUrl: ResolvedUrl, account: Account, context: Open let _ = (signal |> deliverOnMainQueue).start(next: { [weak controller] wallpaper in controller?.dismiss() - let wallpaperController = WallpaperListPreviewController(account: account, source: .wallpaper(wallpaper)) - present(wallpaperController, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + let galleryController = WallpaperGalleryController(account: account, source: .wallpaper(wallpaper)) + present(galleryController, nil) }, error: { [weak controller] error in controller?.dismiss() diff --git a/TelegramUI/OverlayStatusController.swift b/TelegramUI/OverlayStatusController.swift index 1def26987d..9db59f755b 100644 --- a/TelegramUI/OverlayStatusController.swift +++ b/TelegramUI/OverlayStatusController.swift @@ -8,6 +8,7 @@ enum OverlayStatusControllerType { case success case shieldSuccess(String, Bool) case genericSuccess(String) + case starSuccess(String) } private enum OverlayStatusContentController { @@ -15,6 +16,7 @@ private enum OverlayStatusContentController { case progress(TGProgressWindowController) case shieldSuccess(TGProxyWindowController, Bool) case genericSuccess(TGProxyWindowController) + case starSuccess(TGProxyWindowController) var view: UIView { switch self { @@ -26,6 +28,8 @@ private enum OverlayStatusContentController { return controller.view case let .genericSuccess(controller): return controller.view + case let .starSuccess(controller): + return controller.view } } @@ -39,6 +43,8 @@ private enum OverlayStatusContentController { controller.updateLayout() case let .genericSuccess(controller): controller.updateLayout() + case let .starSuccess(controller): + controller.updateLayout() } } @@ -52,6 +58,8 @@ private enum OverlayStatusContentController { controller.dismiss(success: success, increasedDelay: increasedDelay) case let .genericSuccess(controller): controller.dismiss(success: success, increasedDelay: false) + case let .starSuccess(controller): + controller.dismiss(success: success, increasedDelay: false) } } @@ -83,9 +91,11 @@ private final class OverlayStatusControllerNode: ViewControllerTracingNode { case .success: self.contentController = .progress(TGProgressWindowController(light: theme.actionSheet.backgroundType == .light)) case let .shieldSuccess(text, increasedDelay): - self.contentController = .shieldSuccess(TGProxyWindowController(light: theme.actionSheet.backgroundType == .light, text: text, shield: true), increasedDelay) + self.contentController = .shieldSuccess(TGProxyWindowController(light: theme.actionSheet.backgroundType == .light, text: text, shield: true, star: false), increasedDelay) case let .genericSuccess(text): - self.contentController = .genericSuccess(TGProxyWindowController(light: theme.actionSheet.backgroundType == .light, text: text, shield: false)) + self.contentController = .genericSuccess(TGProxyWindowController(light: theme.actionSheet.backgroundType == .light, text: text, shield: false, star: false)) + case let .starSuccess(text): + self.contentController = .genericSuccess(TGProxyWindowController(light: theme.actionSheet.backgroundType == .light, text: text, shield: false, star: true)) } super.init() diff --git a/TelegramUI/PresentationStrings.swift b/TelegramUI/PresentationStrings.swift index 403674a725..5bda7ed808 100644 --- a/TelegramUI/PresentationStrings.swift +++ b/TelegramUI/PresentationStrings.swift @@ -184,222 +184,222 @@ public final class PresentationStrings { private let _s: [Int: String] private let _r: [Int: [(Int, NSRange)]] private let _ps: [Int: String] - public var StickerPack_ShowStickers: String { return self._s[0]! } - public var Map_PullUpForPlaces: String { return self._s[1]! } - public var Channel_Status: String { return self._s[3]! } - public var TwoStepAuth_ChangePassword: String { return self._s[4]! } - public var Map_LiveLocationFor1Hour: String { return self._s[5]! } - public var CheckoutInfo_ShippingInfoAddress2Placeholder: String { return self._s[6]! } - public var Settings_AppleWatch: String { return self._s[7]! } - public var Login_InvalidCountryCode: String { return self._s[8]! } - public var WebSearch_RecentSectionTitle: String { return self._s[9]! } - public var UserInfo_DeleteContact: String { return self._s[10]! } - public var ShareFileTip_CloseTip: String { return self._s[11]! } - public var UserInfo_Invite: String { return self._s[12]! } - public var Passport_Identity_MiddleName: String { return self._s[13]! } - public var Passport_Identity_FrontSideHelp: String { return self._s[14]! } - public var Month_GenDecember: String { return self._s[16]! } - public var Common_Yes: String { return self._s[17]! } + public var CallFeedback_ReasonSilentLocal: String { return self._s[0]! } + public var StickerPack_ShowStickers: String { return self._s[1]! } + public var Map_PullUpForPlaces: String { return self._s[2]! } + public var Channel_Status: String { return self._s[4]! } + public var TwoStepAuth_ChangePassword: String { return self._s[5]! } + public var Map_LiveLocationFor1Hour: String { return self._s[6]! } + public var CheckoutInfo_ShippingInfoAddress2Placeholder: String { return self._s[7]! } + public var Settings_AppleWatch: String { return self._s[8]! } + public var Login_InvalidCountryCode: String { return self._s[9]! } + public var WebSearch_RecentSectionTitle: String { return self._s[10]! } + public var UserInfo_DeleteContact: String { return self._s[11]! } + public var ShareFileTip_CloseTip: String { return self._s[12]! } + public var UserInfo_Invite: String { return self._s[13]! } + public var Passport_Identity_MiddleName: String { return self._s[14]! } + public var Passport_Identity_FrontSideHelp: String { return self._s[15]! } + public var Month_GenDecember: String { return self._s[17]! } + public var Common_Yes: String { return self._s[18]! } public func EncryptionKey_Description(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[18]!, self._r[18]!, [_1, _2]) + return formatWithArgumentRanges(self._s[19]!, self._r[19]!, [_1, _2]) } - public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[19]! } - public var WallpaperPreview_PreviewBottomText: String { return self._s[20]! } + public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[20]! } + public var WallpaperPreview_PreviewBottomText: String { return self._s[21]! } public func Notification_PinnedStickerMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[21]!, self._r[21]!, [_0]) + return formatWithArgumentRanges(self._s[22]!, self._r[22]!, [_0]) } - public var Passport_Address_ScansHelp: String { return self._s[22]! } - public var FastTwoStepSetup_PasswordHelp: String { return self._s[23]! } - public var LastSeen_Lately: String { return self._s[28]! } - public var Channel_EditAdmin_PermissinAddAdminOff: String { return self._s[29]! } - public var Camera_Discard: String { return self._s[30]! } - public var Login_InvalidPhoneError: String { return self._s[31]! } - public var Conversation_Moderate_Delete: String { return self._s[33]! } - public var Conversation_DeleteMessagesForEveryone: String { return self._s[34]! } - public var WatchRemote_AlertOpen: String { return self._s[35]! } + public var Passport_Address_ScansHelp: String { return self._s[23]! } + public var FastTwoStepSetup_PasswordHelp: String { return self._s[24]! } + public var LastSeen_Lately: String { return self._s[29]! } + public var Channel_EditAdmin_PermissinAddAdminOff: String { return self._s[30]! } + public var Camera_Discard: String { return self._s[31]! } + public var Login_InvalidPhoneError: String { return self._s[32]! } + public var Conversation_Moderate_Delete: String { return self._s[34]! } + public var Conversation_DeleteMessagesForEveryone: String { return self._s[35]! } + public var WatchRemote_AlertOpen: String { return self._s[36]! } public func MediaPicker_Nof(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[36]!, self._r[36]!, [_0]) + return formatWithArgumentRanges(self._s[37]!, self._r[37]!, [_0]) } - public var Watch_GroupInfo_Title: String { return self._s[38]! } - public var Passport_Identity_AddPersonalDetails: String { return self._s[39]! } - public var Channel_Info_Members: String { return self._s[40]! } - public var LoginPassword_InvalidPasswordError: String { return self._s[42]! } - public var Conversation_LiveLocation: String { return self._s[43]! } - public var PrivacyLastSeenSettings_CustomShareSettingsHelp: String { return self._s[44]! } - public var NetworkUsageSettings_BytesReceived: String { return self._s[46]! } - public var Stickers_Search: String { return self._s[48]! } - public var NotificationsSound_Synth: String { return self._s[49]! } - public var NetworkUsageSettings_MediaAudioDataSection: String { return self._s[51]! } - public var AutoNightTheme_UseSunsetSunrise: String { return self._s[52]! } - public var FastTwoStepSetup_Title: String { return self._s[53]! } - public var Channel_Info_BlackList: String { return self._s[54]! } - public var Channel_AdminLog_InfoPanelTitle: String { return self._s[55]! } - public var Conversation_OpenFile: String { return self._s[56]! } - public var SecretTimer_ImageDescription: String { return self._s[57]! } - public var StickerSettings_ContextInfo: String { return self._s[58]! } - public var TwoStepAuth_GenericHelp: String { return self._s[60]! } - public var AutoDownloadSettings_Unlimited: String { return self._s[61]! } - public var PrivacyLastSeenSettings_NeverShareWith_Title: String { return self._s[62]! } + public var Watch_GroupInfo_Title: String { return self._s[39]! } + public var Passport_Identity_AddPersonalDetails: String { return self._s[40]! } + public var Channel_Info_Members: String { return self._s[41]! } + public var LoginPassword_InvalidPasswordError: String { return self._s[43]! } + public var Conversation_LiveLocation: String { return self._s[44]! } + public var PrivacyLastSeenSettings_CustomShareSettingsHelp: String { return self._s[45]! } + public var NetworkUsageSettings_BytesReceived: String { return self._s[47]! } + public var Stickers_Search: String { return self._s[49]! } + public var NotificationsSound_Synth: String { return self._s[50]! } + public var NetworkUsageSettings_MediaAudioDataSection: String { return self._s[52]! } + public var AutoNightTheme_UseSunsetSunrise: String { return self._s[53]! } + public var FastTwoStepSetup_Title: String { return self._s[54]! } + public var Channel_Info_BlackList: String { return self._s[55]! } + public var Channel_AdminLog_InfoPanelTitle: String { return self._s[56]! } + public var Conversation_OpenFile: String { return self._s[57]! } + public var SecretTimer_ImageDescription: String { return self._s[58]! } + public var StickerSettings_ContextInfo: String { return self._s[59]! } + public var TwoStepAuth_GenericHelp: String { return self._s[61]! } + public var AutoDownloadSettings_Unlimited: String { return self._s[62]! } + public var PrivacyLastSeenSettings_NeverShareWith_Title: String { return self._s[63]! } public func PUSH_CHAT_MESSAGE_VIDEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[63]!, self._r[63]!, [_1, _2]) + return formatWithArgumentRanges(self._s[64]!, self._r[64]!, [_1, _2]) } - public var Notifications_AddExceptionTitle: String { return self._s[64]! } - public var Watch_MessageView_Reply: String { return self._s[65]! } - public var Tour_Text6: String { return self._s[66]! } - public var TwoStepAuth_SetupPasswordEnterPasswordChange: String { return self._s[67]! } + public var Notifications_AddExceptionTitle: String { return self._s[65]! } + public var Watch_MessageView_Reply: String { return self._s[66]! } + public var Tour_Text6: String { return self._s[67]! } + public var TwoStepAuth_SetupPasswordEnterPasswordChange: String { return self._s[68]! } public func Notification_PinnedAnimationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[68]!, self._r[68]!, [_0]) - } - public func ShareFileTip_Text(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[69]!, self._r[69]!, [_0]) } - public var AccessDenied_LocationDenied: String { return self._s[70]! } - public var CallSettings_RecentCalls: String { return self._s[71]! } - public var ConversationProfile_LeaveDeleteAndExit: String { return self._s[72]! } - public var Channel_Members_AddAdminErrorBlacklisted: String { return self._s[73]! } - public var Passport_Authorize: String { return self._s[74]! } - public var StickerPacksSettings_ArchivedMasks_Info: String { return self._s[75]! } - public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[76]! } - public var Tour_StartButton: String { return self._s[77]! } - public var Watch_AppName: String { return self._s[79]! } - public var StickerPack_ErrorNotFound: String { return self._s[80]! } - public var Channel_Info_Subscribers: String { return self._s[81]! } - public func Channel_AdminLog_MessageGroupPreHistoryVisible(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[82]!, self._r[82]!, [_0]) + public func ShareFileTip_Text(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[70]!, self._r[70]!, [_0]) } - public func DialogList_PinLimitError(_ _0: String) -> (String, [(Int, NSRange)]) { + public var AccessDenied_LocationDenied: String { return self._s[71]! } + public var CallSettings_RecentCalls: String { return self._s[72]! } + public var ConversationProfile_LeaveDeleteAndExit: String { return self._s[73]! } + public var Channel_Members_AddAdminErrorBlacklisted: String { return self._s[74]! } + public var Passport_Authorize: String { return self._s[75]! } + public var StickerPacksSettings_ArchivedMasks_Info: String { return self._s[76]! } + public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[77]! } + public var Tour_StartButton: String { return self._s[78]! } + public var Watch_AppName: String { return self._s[80]! } + public var StickerPack_ErrorNotFound: String { return self._s[81]! } + public var Channel_Info_Subscribers: String { return self._s[82]! } + public func Channel_AdminLog_MessageGroupPreHistoryVisible(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[83]!, self._r[83]!, [_0]) } - public var Conversation_StopLiveLocation: String { return self._s[85]! } - public var Channel_AdminLogFilter_EventsAll: String { return self._s[86]! } - public var GroupInfo_InviteLink_CopyAlert_Success: String { return self._s[88]! } - public var Username_LinkCopied: String { return self._s[90]! } - public var GroupRemoved_Title: String { return self._s[91]! } - public var SecretVideo_Title: String { return self._s[92]! } + public func DialogList_PinLimitError(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[84]!, self._r[84]!, [_0]) + } + public var Conversation_StopLiveLocation: String { return self._s[86]! } + public var Channel_AdminLogFilter_EventsAll: String { return self._s[87]! } + public var GroupInfo_InviteLink_CopyAlert_Success: String { return self._s[89]! } + public var Username_LinkCopied: String { return self._s[91]! } + public var GroupRemoved_Title: String { return self._s[92]! } + public var SecretVideo_Title: String { return self._s[93]! } public func PUSH_PINNED_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[93]!, self._r[93]!, [_1]) + return formatWithArgumentRanges(self._s[94]!, self._r[94]!, [_1]) } - public var AccessDenied_PhotosAndVideos: String { return self._s[94]! } + public var AccessDenied_PhotosAndVideos: String { return self._s[95]! } public func PUSH_CHANNEL_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[95]!, self._r[95]!, [_1]) + return formatWithArgumentRanges(self._s[96]!, self._r[96]!, [_1]) } - public var Map_OpenInGoogleMaps: String { return self._s[96]! } + public var Map_OpenInGoogleMaps: String { return self._s[97]! } public func Time_PreciseDate_m12(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[97]!, self._r[97]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[98]!, self._r[98]!, [_1, _2, _3]) } public func Channel_AdminLog_MessageKickedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[98]!, self._r[98]!, [_1, _2]) + return formatWithArgumentRanges(self._s[99]!, self._r[99]!, [_1, _2]) } - public var Call_StatusRinging: String { return self._s[99]! } - public var Group_Username_InvalidStartsWithNumber: String { return self._s[100]! } - public var UserInfo_NotificationsEnabled: String { return self._s[101]! } - public var Map_Search: String { return self._s[102]! } - public var Login_TermsOfServiceHeader: String { return self._s[104]! } + public var Call_StatusRinging: String { return self._s[100]! } + public var Group_Username_InvalidStartsWithNumber: String { return self._s[101]! } + public var UserInfo_NotificationsEnabled: String { return self._s[102]! } + public var Map_Search: String { return self._s[103]! } + public var Login_TermsOfServiceHeader: String { return self._s[105]! } public func Notification_PinnedVideoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[105]!, self._r[105]!, [_0]) - } - public func Channel_AdminLog_MessageToggleSignaturesOn(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[106]!, self._r[106]!, [_0]) } - public var TwoStepAuth_SetupPasswordConfirmPassword: String { return self._s[107]! } - public var Weekday_Today: String { return self._s[108]! } + public func Channel_AdminLog_MessageToggleSignaturesOn(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[107]!, self._r[107]!, [_0]) + } + public var TwoStepAuth_SetupPasswordConfirmPassword: String { return self._s[108]! } + public var Weekday_Today: String { return self._s[109]! } public func InstantPage_AuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[110]!, self._r[110]!, [_1, _2]) + return formatWithArgumentRanges(self._s[111]!, self._r[111]!, [_1, _2]) } public func Conversation_MessageDialogRetryAll(_ _1: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[111]!, self._r[111]!, ["\(_1)"]) + return formatWithArgumentRanges(self._s[112]!, self._r[112]!, ["\(_1)"]) } - public var Notification_PassportValuePersonalDetails: String { return self._s[113]! } - public var Channel_AdminLog_MessagePreviousLink: String { return self._s[114]! } - public var ChangePhoneNumberNumber_NewNumber: String { return self._s[115]! } - public var ApplyLanguage_LanguageNotSupportedError: String { return self._s[116]! } - public var TwoStepAuth_ChangePasswordDescription: String { return self._s[117]! } - public var PhotoEditor_BlurToolLinear: String { return self._s[118]! } - public var Contacts_PermissionsAllowInSettings: String { return self._s[119]! } - public var Weekday_ShortMonday: String { return self._s[120]! } - public var Cache_KeepMedia: String { return self._s[121]! } - public var Passport_FieldIdentitySelfieHelp: String { return self._s[122]! } + public var Notification_PassportValuePersonalDetails: String { return self._s[114]! } + public var Channel_AdminLog_MessagePreviousLink: String { return self._s[115]! } + public var ChangePhoneNumberNumber_NewNumber: String { return self._s[116]! } + public var ApplyLanguage_LanguageNotSupportedError: String { return self._s[117]! } + public var TwoStepAuth_ChangePasswordDescription: String { return self._s[118]! } + public var PhotoEditor_BlurToolLinear: String { return self._s[119]! } + public var Contacts_PermissionsAllowInSettings: String { return self._s[120]! } + public var Weekday_ShortMonday: String { return self._s[121]! } + public var Cache_KeepMedia: String { return self._s[122]! } + public var Passport_FieldIdentitySelfieHelp: String { return self._s[123]! } public func PUSH_PINNED_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[123]!, self._r[123]!, [_1, _2]) + return formatWithArgumentRanges(self._s[124]!, self._r[124]!, [_1, _2]) } - public var Conversation_ClousStorageInfo_Description4: String { return self._s[124]! } - public var Passport_Language_ru: String { return self._s[125]! } + public var Conversation_ClousStorageInfo_Description4: String { return self._s[125]! } + public var Passport_Language_ru: String { return self._s[126]! } public func Notification_CreatedChatWithTitle(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[126]!, self._r[126]!, [_0, _1]) + return formatWithArgumentRanges(self._s[127]!, self._r[127]!, [_0, _1]) } - public var TwoStepAuth_RecoveryUnavailable: String { return self._s[127]! } - public var EnterPasscode_TouchId: String { return self._s[128]! } - public var PhotoEditor_QualityVeryHigh: String { return self._s[131]! } - public var Checkout_NewCard_SaveInfo: String { return self._s[133]! } - public var ChatSettings_AutoDownloadEnabled: String { return self._s[136]! } - public var NetworkUsageSettings_BytesSent: String { return self._s[137]! } - public var Checkout_PasswordEntry_Pay: String { return self._s[138]! } - public var AuthSessions_TerminateSession: String { return self._s[139]! } - public var Message_File: String { return self._s[140]! } - public var MediaPicker_VideoMuteDescription: String { return self._s[141]! } - public var SocksProxySetup_ProxyStatusConnected: String { return self._s[142]! } - public var TwoStepAuth_RecoveryCode: String { return self._s[143]! } - public var EnterPasscode_EnterCurrentPasscode: String { return self._s[144]! } + public var TwoStepAuth_RecoveryUnavailable: String { return self._s[128]! } + public var EnterPasscode_TouchId: String { return self._s[129]! } + public var PhotoEditor_QualityVeryHigh: String { return self._s[132]! } + public var Checkout_NewCard_SaveInfo: String { return self._s[134]! } + public var ChatSettings_AutoDownloadEnabled: String { return self._s[137]! } + public var NetworkUsageSettings_BytesSent: String { return self._s[138]! } + public var Checkout_PasswordEntry_Pay: String { return self._s[139]! } + public var AuthSessions_TerminateSession: String { return self._s[140]! } + public var Message_File: String { return self._s[141]! } + public var MediaPicker_VideoMuteDescription: String { return self._s[142]! } + public var SocksProxySetup_ProxyStatusConnected: String { return self._s[143]! } + public var TwoStepAuth_RecoveryCode: String { return self._s[144]! } + public var EnterPasscode_EnterCurrentPasscode: String { return self._s[145]! } public func TwoStepAuth_EnterPasswordHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[145]!, self._r[145]!, [_0]) + return formatWithArgumentRanges(self._s[146]!, self._r[146]!, [_0]) } - public var Conversation_Moderate_Report: String { return self._s[147]! } - public var TwoStepAuth_EmailInvalid: String { return self._s[148]! } - public var Passport_Language_ms: String { return self._s[149]! } - public var Channel_Edit_AboutItem: String { return self._s[151]! } - public var DialogList_SearchSectionGlobal: String { return self._s[155]! } - public var AttachmentMenu_WebSearch: String { return self._s[156]! } - public var PasscodeSettings_TurnPasscodeOn: String { return self._s[157]! } - public var Channel_BanUser_Title: String { return self._s[158]! } - public var WallpaperPreview_SwipeTopText: String { return self._s[159]! } - public var ChatSearch_SearchPlaceholder: String { return self._s[161]! } - public var Passport_FieldAddressTranslationHelp: String { return self._s[162]! } - public var NotificationsSound_Aurora: String { return self._s[163]! } + public var Conversation_Moderate_Report: String { return self._s[148]! } + public var TwoStepAuth_EmailInvalid: String { return self._s[149]! } + public var Passport_Language_ms: String { return self._s[150]! } + public var Channel_Edit_AboutItem: String { return self._s[152]! } + public var DialogList_SearchSectionGlobal: String { return self._s[156]! } + public var AttachmentMenu_WebSearch: String { return self._s[157]! } + public var PasscodeSettings_TurnPasscodeOn: String { return self._s[158]! } + public var Channel_BanUser_Title: String { return self._s[159]! } + public var WallpaperPreview_SwipeTopText: String { return self._s[160]! } + public var ChatSearch_SearchPlaceholder: String { return self._s[162]! } + public var Passport_FieldAddressTranslationHelp: String { return self._s[163]! } + public var NotificationsSound_Aurora: String { return self._s[164]! } public func FileSize_GB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[164]!, self._r[164]!, [_0]) + return formatWithArgumentRanges(self._s[165]!, self._r[165]!, [_0]) } - public var AuthSessions_LoggedInWithTelegram: String { return self._s[167]! } + public var AuthSessions_LoggedInWithTelegram: String { return self._s[168]! } public func Privacy_GroupsAndChannels_InviteToGroupError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[168]!, self._r[168]!, [_0, _1]) + return formatWithArgumentRanges(self._s[169]!, self._r[169]!, [_0, _1]) } - public var Passport_PasswordNext: String { return self._s[169]! } - public var Bot_GroupStatusReadsHistory: String { return self._s[170]! } - public var EmptyGroupInfo_Line2: String { return self._s[171]! } - public var Settings_FAQ_Intro: String { return self._s[173]! } - public var PrivacySettings_PasscodeAndTouchId: String { return self._s[175]! } - public var FeaturedStickerPacks_Title: String { return self._s[176]! } - public var TwoStepAuth_PasswordRemoveConfirmation: String { return self._s[177]! } - public var Username_Title: String { return self._s[178]! } + public var Passport_PasswordNext: String { return self._s[170]! } + public var Bot_GroupStatusReadsHistory: String { return self._s[171]! } + public var EmptyGroupInfo_Line2: String { return self._s[172]! } + public var Settings_FAQ_Intro: String { return self._s[174]! } + public var PrivacySettings_PasscodeAndTouchId: String { return self._s[176]! } + public var FeaturedStickerPacks_Title: String { return self._s[177]! } + public var TwoStepAuth_PasswordRemoveConfirmation: String { return self._s[178]! } + public var Username_Title: String { return self._s[179]! } public func Message_StickerText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[179]!, self._r[179]!, [_0]) + return formatWithArgumentRanges(self._s[180]!, self._r[180]!, [_0]) } - public var Localization_LanguageOther: String { return self._s[180]! } - public var Stickers_SuggestStickers: String { return self._s[181]! } + public var Localization_LanguageOther: String { return self._s[181]! } + public var Stickers_SuggestStickers: String { return self._s[182]! } public func Channel_AdminLog_MessageRemovedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[182]!, self._r[182]!, [_0]) + return formatWithArgumentRanges(self._s[183]!, self._r[183]!, [_0]) } - public var Channel_AdminLogFilter_EventsAdmins: String { return self._s[183]! } - public var Conversation_DefaultRestrictedStickers: String { return self._s[184]! } + public var Channel_AdminLogFilter_EventsAdmins: String { return self._s[184]! } + public var Conversation_DefaultRestrictedStickers: String { return self._s[185]! } public func Notification_PinnedDeletedMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[185]!, self._r[185]!, [_0]) + return formatWithArgumentRanges(self._s[186]!, self._r[186]!, [_0]) } - public var Group_UpgradeConfirmation: String { return self._s[187]! } - public var DialogList_Unpin: String { return self._s[188]! } - public var Passport_Identity_DateOfBirth: String { return self._s[189]! } - public var Month_ShortOctober: String { return self._s[190]! } - public var Notification_CallCanceledShort: String { return self._s[191]! } - public var Passport_Phone_Help: String { return self._s[192]! } - public var Passport_Language_az: String { return self._s[194]! } - public var CreatePoll_TextPlaceholder: String { return self._s[196]! } - public var Passport_Identity_DocumentNumber: String { return self._s[197]! } - public var PhotoEditor_CurvesRed: String { return self._s[198]! } - public var PhoneNumberHelp_Alert: String { return self._s[200]! } - public var SocksProxySetup_Port: String { return self._s[201]! } - public var Checkout_PayNone: String { return self._s[202]! } - public var AutoDownloadSettings_WiFi: String { return self._s[203]! } - public var GroupInfo_GroupType: String { return self._s[204]! } - public var StickerSettings_ContextHide: String { return self._s[205]! } - public var WallpaperPreview_Still: String { return self._s[206]! } + public var Group_UpgradeConfirmation: String { return self._s[188]! } + public var DialogList_Unpin: String { return self._s[189]! } + public var Passport_Identity_DateOfBirth: String { return self._s[190]! } + public var Month_ShortOctober: String { return self._s[191]! } + public var Notification_CallCanceledShort: String { return self._s[192]! } + public var Passport_Phone_Help: String { return self._s[193]! } + public var Passport_Language_az: String { return self._s[195]! } + public var CreatePoll_TextPlaceholder: String { return self._s[197]! } + public var Passport_Identity_DocumentNumber: String { return self._s[198]! } + public var PhotoEditor_CurvesRed: String { return self._s[199]! } + public var PhoneNumberHelp_Alert: String { return self._s[201]! } + public var SocksProxySetup_Port: String { return self._s[202]! } + public var Checkout_PayNone: String { return self._s[203]! } + public var AutoDownloadSettings_WiFi: String { return self._s[204]! } + public var GroupInfo_GroupType: String { return self._s[205]! } + public var StickerSettings_ContextHide: String { return self._s[206]! } public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[207]! } public var Group_Setup_HistoryTitle: String { return self._s[209]! } public var Passport_Identity_FilesUploadNew: String { return self._s[210]! } @@ -469,7 +469,7 @@ public final class PresentationStrings { public func Conversation_EncryptedPlaceholderTitleOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[271]!, self._r[271]!, [_0]) } - public var WallpaperPreview_Perspective: String { return self._s[272]! } + public var CallFeedback_ReasonDistortedSpeech: String { return self._s[272]! } public var Watch_LastSeen_WithinAWeek: String { return self._s[273]! } public var Weekday_Tuesday: String { return self._s[275]! } public var UserInfo_StartSecretChat: String { return self._s[277]! } @@ -1044,2559 +1044,2572 @@ public final class PresentationStrings { public var SharedMedia_CategoryOther: String { return self._s[811]! } public var GroupInfo_SetGroupPhoto: String { return self._s[812]! } public var Common_NotNow: String { return self._s[813]! } - public var Map_Location: String { return self._s[814]! } - public var Invitation_JoinGroup: String { return self._s[815]! } - public var AutoDownloadSettings_Title: String { return self._s[817]! } - public var Conversation_DiscardVoiceMessageDescription: String { return self._s[818]! } - public var Channel_ErrorAddBlocked: String { return self._s[819]! } - public var Conversation_UnblockUser: String { return self._s[820]! } - public var Watch_Bot_Restart: String { return self._s[821]! } - public var TwoStepAuth_Title: String { return self._s[822]! } - public var Channel_AdminLog_BanSendMessages: String { return self._s[823]! } - public var Checkout_ShippingMethod: String { return self._s[824]! } - public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[825]! } + public var CallFeedback_IncludeLogsInfo: String { return self._s[814]! } + public var Map_Location: String { return self._s[815]! } + public var Invitation_JoinGroup: String { return self._s[816]! } + public var AutoDownloadSettings_Title: String { return self._s[818]! } + public var Conversation_DiscardVoiceMessageDescription: String { return self._s[819]! } + public var Channel_ErrorAddBlocked: String { return self._s[820]! } + public var Conversation_UnblockUser: String { return self._s[821]! } + public var Watch_Bot_Restart: String { return self._s[822]! } + public var TwoStepAuth_Title: String { return self._s[823]! } + public var Channel_AdminLog_BanSendMessages: String { return self._s[824]! } + public var Checkout_ShippingMethod: String { return self._s[825]! } + public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[826]! } public func PUSH_CHAT_MESSAGE_STICKER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[826]!, self._r[826]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[827]!, self._r[827]!, [_1, _2, _3]) } public func Channel_Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[828]!, self._r[828]!, [_0]) + return formatWithArgumentRanges(self._s[829]!, self._r[829]!, [_0]) } - public var AuthSessions_TerminateOtherSessions: String { return self._s[829]! } - public var Contacts_FailedToSendInvitesMessage: String { return self._s[830]! } - public var PrivacySettings_TwoStepAuth: String { return self._s[831]! } - public var Conversation_EditingMessagePanelMedia: String { return self._s[832]! } - public var Checkout_PaymentMethod_Title: String { return self._s[833]! } - public var SocksProxySetup_Connection: String { return self._s[834]! } - public var Group_MessagePhotoRemoved: String { return self._s[835]! } - public var Channel_Stickers_NotFound: String { return self._s[837]! } - public var Group_About_Help: String { return self._s[838]! } - public var Notification_PassportValueProofOfIdentity: String { return self._s[839]! } + public var AuthSessions_TerminateOtherSessions: String { return self._s[830]! } + public var Contacts_FailedToSendInvitesMessage: String { return self._s[831]! } + public var PrivacySettings_TwoStepAuth: String { return self._s[832]! } + public var Conversation_EditingMessagePanelMedia: String { return self._s[833]! } + public var Checkout_PaymentMethod_Title: String { return self._s[834]! } + public var SocksProxySetup_Connection: String { return self._s[835]! } + public var Group_MessagePhotoRemoved: String { return self._s[836]! } + public var Channel_Stickers_NotFound: String { return self._s[838]! } + public var Group_About_Help: String { return self._s[839]! } + public var Notification_PassportValueProofOfIdentity: String { return self._s[840]! } public func ApplyLanguage_ChangeLanguageOfficialText(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[841]!, self._r[841]!, [_1]) + return formatWithArgumentRanges(self._s[842]!, self._r[842]!, [_1]) } - public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[843]! } - public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[844]! } - public var SocksProxySetup_Password: String { return self._s[845]! } - public var Notifications_PermissionsEnable: String { return self._s[846]! } - public var TwoStepAuth_ChangeEmail: String { return self._s[848]! } + public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[844]! } + public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[845]! } + public var SocksProxySetup_Password: String { return self._s[846]! } + public var Notifications_PermissionsEnable: String { return self._s[847]! } + public var TwoStepAuth_ChangeEmail: String { return self._s[849]! } public func Channel_AdminLog_MessageInvitedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[849]!, self._r[849]!, [_1]) + return formatWithArgumentRanges(self._s[850]!, self._r[850]!, [_1]) } public func Time_MonthOfYear_m10(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[851]!, self._r[851]!, [_0]) + return formatWithArgumentRanges(self._s[852]!, self._r[852]!, [_0]) } - public var Passport_Identity_TypeDriversLicense: String { return self._s[852]! } - public var ArchivedPacksAlert_Title: String { return self._s[853]! } + public var Passport_Identity_TypeDriversLicense: String { return self._s[853]! } + public var ArchivedPacksAlert_Title: String { return self._s[854]! } public func Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[854]!, self._r[854]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[855]!, self._r[855]!, [_1, _2, _3]) } - public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[855]! } - public var Privacy_Calls_NeverAllow_Placeholder: String { return self._s[857]! } - public var Conversation_StatusTyping: String { return self._s[858]! } - public var Broadcast_AdminLog_EmptyText: String { return self._s[859]! } - public var Notification_PassportValueProofOfAddress: String { return self._s[860]! } - public var UserInfo_CreateNewContact: String { return self._s[861]! } - public var Passport_Identity_FrontSide: String { return self._s[862]! } - public var Calls_CallTabTitle: String { return self._s[863]! } - public var Channel_AdminLog_ChannelEmptyText: String { return self._s[864]! } + public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[856]! } + public var Privacy_Calls_NeverAllow_Placeholder: String { return self._s[858]! } + public var Conversation_StatusTyping: String { return self._s[859]! } + public var Broadcast_AdminLog_EmptyText: String { return self._s[860]! } + public var Notification_PassportValueProofOfAddress: String { return self._s[861]! } + public var UserInfo_CreateNewContact: String { return self._s[862]! } + public var Passport_Identity_FrontSide: String { return self._s[863]! } + public var Calls_CallTabTitle: String { return self._s[864]! } + public var Channel_AdminLog_ChannelEmptyText: String { return self._s[865]! } public func Login_BannedPhoneBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[865]!, self._r[865]!, [_0]) + return formatWithArgumentRanges(self._s[866]!, self._r[866]!, [_0]) } - public var Watch_UserInfo_MuteTitle: String { return self._s[866]! } - public var SharedMedia_EmptyMusicText: String { return self._s[867]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[868]! } - public var Paint_Stickers: String { return self._s[869]! } - public var Privacy_GroupsAndChannels: String { return self._s[870]! } - public var UserInfo_AddContact: String { return self._s[872]! } + public var Watch_UserInfo_MuteTitle: String { return self._s[867]! } + public var SharedMedia_EmptyMusicText: String { return self._s[868]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[869]! } + public var Paint_Stickers: String { return self._s[870]! } + public var Privacy_GroupsAndChannels: String { return self._s[871]! } + public var UserInfo_AddContact: String { return self._s[873]! } public func Conversation_MessageViaUser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[873]!, self._r[873]!, [_0]) + return formatWithArgumentRanges(self._s[874]!, self._r[874]!, [_0]) } - public var PhoneNumberHelp_ChangeNumber: String { return self._s[875]! } - public var DialogList_NoMessagesTitle: String { return self._s[877]! } - public var EditProfile_NameAndPhotoHelp: String { return self._s[878]! } - public var BlockedUsers_BlockUser: String { return self._s[879]! } - public var Notifications_PermissionsOpenSettings: String { return self._s[880]! } - public var MediaPicker_UngroupDescription: String { return self._s[881]! } - public var Watch_NoConnection: String { return self._s[882]! } - public var Month_GenSeptember: String { return self._s[883]! } - public var Conversation_ViewGroup: String { return self._s[884]! } - public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[887]! } - public var Passport_FieldOneOf_FinalDelimeter: String { return self._s[888]! } - public var MediaPicker_CameraRoll: String { return self._s[890]! } - public var Month_GenAugust: String { return self._s[891]! } - public var AccessDenied_VideoMessageMicrophone: String { return self._s[892]! } - public var SharedMedia_EmptyText: String { return self._s[893]! } - public var Map_ShareLiveLocation: String { return self._s[894]! } - public var Calls_All: String { return self._s[895]! } - public var Appearance_ThemeNight: String { return self._s[898]! } - public var Conversation_HoldForAudio: String { return self._s[899]! } - public var GroupInfo_GroupHistoryHidden: String { return self._s[902]! } - public var SocksProxySetup_Secret: String { return self._s[903]! } - public var Channel_BanList_RestrictedTitle: String { return self._s[905]! } - public var Conversation_Location: String { return self._s[906]! } - public var ChatSettings_AutoDownloadPhotos: String { return self._s[908]! } - public var Notifications_PermissionsText: String { return self._s[909]! } - public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[910]! } - public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[912]! } - public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[914]! } - public var Passport_DeletePassportConfirmation: String { return self._s[916]! } - public var Login_InvalidCodeError: String { return self._s[917]! } - public var StickerPacksSettings_FeaturedPacks: String { return self._s[918]! } + public var PhoneNumberHelp_ChangeNumber: String { return self._s[876]! } + public var DialogList_NoMessagesTitle: String { return self._s[878]! } + public var EditProfile_NameAndPhotoHelp: String { return self._s[879]! } + public var BlockedUsers_BlockUser: String { return self._s[880]! } + public var Notifications_PermissionsOpenSettings: String { return self._s[881]! } + public var MediaPicker_UngroupDescription: String { return self._s[882]! } + public var Watch_NoConnection: String { return self._s[883]! } + public var Month_GenSeptember: String { return self._s[884]! } + public var Conversation_ViewGroup: String { return self._s[885]! } + public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[888]! } + public var Passport_FieldOneOf_FinalDelimeter: String { return self._s[889]! } + public var MediaPicker_CameraRoll: String { return self._s[891]! } + public var Month_GenAugust: String { return self._s[892]! } + public var AccessDenied_VideoMessageMicrophone: String { return self._s[893]! } + public var SharedMedia_EmptyText: String { return self._s[894]! } + public var Map_ShareLiveLocation: String { return self._s[895]! } + public var Calls_All: String { return self._s[896]! } + public var Appearance_ThemeNight: String { return self._s[899]! } + public var Conversation_HoldForAudio: String { return self._s[900]! } + public var GroupInfo_GroupHistoryHidden: String { return self._s[903]! } + public var SocksProxySetup_Secret: String { return self._s[904]! } + public var Channel_BanList_RestrictedTitle: String { return self._s[906]! } + public var Conversation_Location: String { return self._s[907]! } + public var ChatSettings_AutoDownloadPhotos: String { return self._s[909]! } + public var Notifications_PermissionsText: String { return self._s[910]! } + public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[911]! } + public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[913]! } + public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[915]! } + public var Passport_DeletePassportConfirmation: String { return self._s[917]! } + public var Login_InvalidCodeError: String { return self._s[918]! } + public var StickerPacksSettings_FeaturedPacks: String { return self._s[919]! } public func ChatList_DeleteSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[919]!, self._r[919]!, [_0]) - } - public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[920]!, self._r[920]!, [_0]) } - public var Call_CallInProgressTitle: String { return self._s[921]! } - public var Month_ShortSeptember: String { return self._s[922]! } - public var Watch_ChannelInfo_Title: String { return self._s[923]! } - public var DialogList_PasscodeLockHelp: String { return self._s[926]! } - public var Notifications_Badge_IncludePublicGroups: String { return self._s[927]! } - public var Channel_AdminLogFilter_EventsTitle: String { return self._s[928]! } - public var PhotoEditor_CropReset: String { return self._s[929]! } - public var Group_Username_CreatePrivateLinkHelp: String { return self._s[931]! } - public var Channel_Management_LabelEditor: String { return self._s[932]! } - public var Passport_Identity_LatinNameHelp: String { return self._s[934]! } - public var PhotoEditor_HighlightsTool: String { return self._s[935]! } - public var UserInfo_Title: String { return self._s[936]! } - public var AccessDenied_Title: String { return self._s[937]! } - public var DialogList_SearchLabel: String { return self._s[938]! } - public var Group_Setup_HistoryHidden: String { return self._s[939]! } - public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[940]! } - public var State_Updating: String { return self._s[942]! } - public var Contacts_TabTitle: String { return self._s[943]! } - public var Notifications_Badge_CountUnreadMessages: String { return self._s[945]! } - public var GroupInfo_GroupHistory: String { return self._s[946]! } - public var Conversation_UnsupportedMediaPlaceholder: String { return self._s[947]! } - public var Wallpaper_SetColor: String { return self._s[948]! } - public var CheckoutInfo_ShippingInfoCountry: String { return self._s[949]! } - public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[950]! } - public var Contacts_NotRegisteredSection: String { return self._s[951]! } + public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[921]!, self._r[921]!, [_0]) + } + public var Call_CallInProgressTitle: String { return self._s[922]! } + public var Month_ShortSeptember: String { return self._s[923]! } + public var Watch_ChannelInfo_Title: String { return self._s[924]! } + public var DialogList_PasscodeLockHelp: String { return self._s[927]! } + public var Notifications_Badge_IncludePublicGroups: String { return self._s[928]! } + public var Channel_AdminLogFilter_EventsTitle: String { return self._s[929]! } + public var PhotoEditor_CropReset: String { return self._s[930]! } + public var Group_Username_CreatePrivateLinkHelp: String { return self._s[932]! } + public var Channel_Management_LabelEditor: String { return self._s[933]! } + public var Passport_Identity_LatinNameHelp: String { return self._s[935]! } + public var PhotoEditor_HighlightsTool: String { return self._s[936]! } + public var UserInfo_Title: String { return self._s[937]! } + public var AccessDenied_Title: String { return self._s[938]! } + public var DialogList_SearchLabel: String { return self._s[939]! } + public var Group_Setup_HistoryHidden: String { return self._s[940]! } + public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[941]! } + public var State_Updating: String { return self._s[943]! } + public var Contacts_TabTitle: String { return self._s[944]! } + public var Notifications_Badge_CountUnreadMessages: String { return self._s[946]! } + public var GroupInfo_GroupHistory: String { return self._s[947]! } + public var Conversation_UnsupportedMediaPlaceholder: String { return self._s[948]! } + public var Wallpaper_SetColor: String { return self._s[949]! } + public var CheckoutInfo_ShippingInfoCountry: String { return self._s[950]! } + public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[951]! } + public var Contacts_NotRegisteredSection: String { return self._s[952]! } public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[952]!, self._r[952]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[953]!, self._r[953]!, [_1, _2, _3]) } - public var Paint_Clear: String { return self._s[953]! } - public var StickerPacksSettings_ArchivedMasks: String { return self._s[954]! } - public var SocksProxySetup_Connecting: String { return self._s[955]! } - public var ExplicitContent_AlertChannel: String { return self._s[956]! } - public var CreatePoll_AllOptionsAdded: String { return self._s[957]! } - public var Conversation_Contact: String { return self._s[958]! } - public var Login_CodeExpired: String { return self._s[959]! } - public var Passport_DiscardMessageAction: String { return self._s[960]! } - public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[961]! } - public var Channel_AdminLog_EmptyMessageText: String { return self._s[962]! } - public var Month_ShortApril: String { return self._s[963]! } - public var AuthSessions_CurrentSession: String { return self._s[964]! } - public var WallpaperPreview_CropTopText: String { return self._s[968]! } - public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[969]! } - public var CheckoutInfo_ShippingInfoTitle: String { return self._s[970]! } - public var Channel_Setup_TypePrivate: String { return self._s[972]! } - public var Forward_ChannelReadOnly: String { return self._s[975]! } - public var PhotoEditor_CurvesBlue: String { return self._s[976]! } - public var UserInfo_BotPrivacy: String { return self._s[977]! } - public var Notification_PassportValueEmail: String { return self._s[978]! } - public var EmptyGroupInfo_Subtitle: String { return self._s[979]! } - public var GroupPermission_NewTitle: String { return self._s[980]! } - public var GroupInfo_Permissions_AddException: String { return self._s[981]! } - public var Channel_SignMessages_Help: String { return self._s[983]! } - public var Undo_ChatDeleted: String { return self._s[985]! } - public var Conversation_ChatBackground: String { return self._s[986]! } - public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[987]! } - public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[988]! } - public var Passport_Language_pt: String { return self._s[989]! } - public var NotificationsSound_Popcorn: String { return self._s[992]! } - public var AutoNightTheme_Disabled: String { return self._s[993]! } - public var BlockedUsers_LeavePrefix: String { return self._s[994]! } - public var WallpaperPreview_CustomColorTopText: String { return self._s[995]! } - public var Contacts_PermissionsSuppressWarningText: String { return self._s[996]! } - public var WallpaperSearch_ColorBlue: String { return self._s[997]! } + public var Paint_Clear: String { return self._s[954]! } + public var StickerPacksSettings_ArchivedMasks: String { return self._s[955]! } + public var SocksProxySetup_Connecting: String { return self._s[956]! } + public var ExplicitContent_AlertChannel: String { return self._s[957]! } + public var CreatePoll_AllOptionsAdded: String { return self._s[958]! } + public var Conversation_Contact: String { return self._s[959]! } + public var Login_CodeExpired: String { return self._s[960]! } + public var Passport_DiscardMessageAction: String { return self._s[961]! } + public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[962]! } + public var Channel_AdminLog_EmptyMessageText: String { return self._s[963]! } + public var Month_ShortApril: String { return self._s[964]! } + public var AuthSessions_CurrentSession: String { return self._s[965]! } + public var WallpaperPreview_CropTopText: String { return self._s[969]! } + public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[970]! } + public var CheckoutInfo_ShippingInfoTitle: String { return self._s[971]! } + public var Channel_Setup_TypePrivate: String { return self._s[973]! } + public var Forward_ChannelReadOnly: String { return self._s[976]! } + public var PhotoEditor_CurvesBlue: String { return self._s[977]! } + public var UserInfo_BotPrivacy: String { return self._s[978]! } + public var Notification_PassportValueEmail: String { return self._s[979]! } + public var EmptyGroupInfo_Subtitle: String { return self._s[980]! } + public var GroupPermission_NewTitle: String { return self._s[981]! } + public var CallFeedback_ReasonDropped: String { return self._s[982]! } + public var GroupInfo_Permissions_AddException: String { return self._s[983]! } + public var Channel_SignMessages_Help: String { return self._s[985]! } + public var Undo_ChatDeleted: String { return self._s[987]! } + public var Conversation_ChatBackground: String { return self._s[988]! } + public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[989]! } + public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[990]! } + public var Passport_Language_pt: String { return self._s[991]! } + public var NotificationsSound_Popcorn: String { return self._s[994]! } + public var AutoNightTheme_Disabled: String { return self._s[995]! } + public var BlockedUsers_LeavePrefix: String { return self._s[996]! } + public var WallpaperPreview_CustomColorTopText: String { return self._s[997]! } + public var Contacts_PermissionsSuppressWarningText: String { return self._s[998]! } + public var WallpaperSearch_ColorBlue: String { return self._s[999]! } public func CancelResetAccount_TextSMS(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[998]!, self._r[998]!, [_0]) + return formatWithArgumentRanges(self._s[1000]!, self._r[1000]!, [_0]) } - public var CheckoutInfo_ErrorNameInvalid: String { return self._s[999]! } - public var SocksProxySetup_UseForCalls: String { return self._s[1000]! } - public var Passport_DeleteDocumentConfirmation: String { return self._s[1002]! } + public var CheckoutInfo_ErrorNameInvalid: String { return self._s[1001]! } + public var SocksProxySetup_UseForCalls: String { return self._s[1002]! } + public var Passport_DeleteDocumentConfirmation: String { return self._s[1004]! } public func Conversation_Megabytes(_ _0: Float) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1003]!, self._r[1003]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1005]!, self._r[1005]!, ["\(_0)"]) } - public var SocksProxySetup_Hostname: String { return self._s[1005]! } - public var Compose_NewEncryptedChat: String { return self._s[1006]! } - public var Login_CodeFloodError: String { return self._s[1007]! } - public var Calls_TabTitle: String { return self._s[1008]! } - public var Passport_Language_he: String { return self._s[1009]! } - public var GroupPermission_Title: String { return self._s[1010]! } + public var SocksProxySetup_Hostname: String { return self._s[1007]! } + public var Compose_NewEncryptedChat: String { return self._s[1008]! } + public var Login_CodeFloodError: String { return self._s[1009]! } + public var Calls_TabTitle: String { return self._s[1010]! } + public var Passport_Language_he: String { return self._s[1011]! } + public var GroupPermission_Title: String { return self._s[1012]! } public func Channel_AdminLog_MessageGroupPreHistoryHidden(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1011]!, self._r[1011]!, [_0]) + return formatWithArgumentRanges(self._s[1013]!, self._r[1013]!, [_0]) } - public var GroupPermission_NoChangeInfo: String { return self._s[1012]! } - public var Tour_Text1: String { return self._s[1013]! } - public var Month_ShortFebruary: String { return self._s[1014]! } - public var TwoStepAuth_EmailSkip: String { return self._s[1015]! } - public var NotificationsSound_Glass: String { return self._s[1016]! } - public var Appearance_ThemeNightBlue: String { return self._s[1017]! } - public var CheckoutInfo_Pay: String { return self._s[1018]! } - public var Invite_LargeRecipientsCountWarning: String { return self._s[1020]! } - public var Call_CallAgain: String { return self._s[1022]! } - public var AttachmentMenu_SendAsFile: String { return self._s[1023]! } - public var Watch_Message_Game: String { return self._s[1024]! } - public var AccessDenied_MicrophoneRestricted: String { return self._s[1025]! } - public var Passport_InvalidPasswordError: String { return self._s[1026]! } - public var Stickers_Install: String { return self._s[1027]! } - public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1028]! } - public var Passport_Identity_ResidenceCountry: String { return self._s[1030]! } - public var Notifications_GroupNotificationsHelp: String { return self._s[1031]! } - public var AuthSessions_OtherSessions: String { return self._s[1032]! } - public var Channel_Username_Help: String { return self._s[1033]! } - public var Camera_Title: String { return self._s[1034]! } - public var GroupInfo_SetGroupPhotoDelete: String { return self._s[1036]! } - public var Channel_AdminLog_SendPolls: String { return self._s[1037]! } - public var Channel_AdminLog_TitleAllEvents: String { return self._s[1038]! } - public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[1039]! } - public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[1040]! } - public var Conversation_RestrictedStickers: String { return self._s[1041]! } - public var Notifications_ExceptionsResetToDefaults: String { return self._s[1043]! } - public var UserInfo_TelegramCall: String { return self._s[1045]! } - public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1046]! } - public var CreatePoll_OptionsHeader: String { return self._s[1047]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[1048]! } - public var Passport_Identity_EditPersonalDetails: String { return self._s[1049]! } + public var GroupPermission_NoChangeInfo: String { return self._s[1014]! } + public var Tour_Text1: String { return self._s[1015]! } + public var Month_ShortFebruary: String { return self._s[1016]! } + public var TwoStepAuth_EmailSkip: String { return self._s[1017]! } + public var NotificationsSound_Glass: String { return self._s[1018]! } + public var Appearance_ThemeNightBlue: String { return self._s[1019]! } + public var CheckoutInfo_Pay: String { return self._s[1020]! } + public var Invite_LargeRecipientsCountWarning: String { return self._s[1022]! } + public var Call_CallAgain: String { return self._s[1024]! } + public var AttachmentMenu_SendAsFile: String { return self._s[1025]! } + public var Watch_Message_Game: String { return self._s[1026]! } + public var AccessDenied_MicrophoneRestricted: String { return self._s[1027]! } + public var Passport_InvalidPasswordError: String { return self._s[1028]! } + public var Stickers_Install: String { return self._s[1029]! } + public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1030]! } + public var Passport_Identity_ResidenceCountry: String { return self._s[1032]! } + public var Notifications_GroupNotificationsHelp: String { return self._s[1033]! } + public var AuthSessions_OtherSessions: String { return self._s[1034]! } + public var Channel_Username_Help: String { return self._s[1035]! } + public var Camera_Title: String { return self._s[1036]! } + public var GroupInfo_SetGroupPhotoDelete: String { return self._s[1038]! } + public var Channel_AdminLog_SendPolls: String { return self._s[1039]! } + public var Channel_AdminLog_TitleAllEvents: String { return self._s[1040]! } + public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[1041]! } + public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[1042]! } + public var Conversation_RestrictedStickers: String { return self._s[1043]! } + public var Notifications_ExceptionsResetToDefaults: String { return self._s[1045]! } + public var UserInfo_TelegramCall: String { return self._s[1047]! } + public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1048]! } + public var CreatePoll_OptionsHeader: String { return self._s[1049]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[1050]! } + public var Passport_Identity_EditPersonalDetails: String { return self._s[1051]! } public func Time_PreciseDate_m1(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1050]!, self._r[1050]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1052]!, self._r[1052]!, [_1, _2, _3]) } - public var Settings_SaveEditedPhotos: String { return self._s[1051]! } - public var TwoStepAuth_ConfirmationTitle: String { return self._s[1052]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[1053]! } - public var Conversation_MessageDialogRetry: String { return self._s[1054]! } - public var Conversation_DiscardVoiceMessageAction: String { return self._s[1055]! } - public var Group_Setup_TypeHeader: String { return self._s[1056]! } - public var Paint_RecentStickers: String { return self._s[1057]! } - public var PhotoEditor_GrainTool: String { return self._s[1058]! } - public var CheckoutInfo_ShippingInfoState: String { return self._s[1059]! } - public var EmptyGroupInfo_Line4: String { return self._s[1060]! } - public var Watch_AuthRequired: String { return self._s[1062]! } + public var Settings_SaveEditedPhotos: String { return self._s[1053]! } + public var TwoStepAuth_ConfirmationTitle: String { return self._s[1054]! } + public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[1055]! } + public var Conversation_MessageDialogRetry: String { return self._s[1056]! } + public var Conversation_DiscardVoiceMessageAction: String { return self._s[1057]! } + public var Group_Setup_TypeHeader: String { return self._s[1058]! } + public var Paint_RecentStickers: String { return self._s[1059]! } + public var PhotoEditor_GrainTool: String { return self._s[1060]! } + public var CheckoutInfo_ShippingInfoState: String { return self._s[1061]! } + public var EmptyGroupInfo_Line4: String { return self._s[1062]! } + public var Watch_AuthRequired: String { return self._s[1064]! } public func Passport_Email_UseTelegramEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1063]!, self._r[1063]!, [_0]) + return formatWithArgumentRanges(self._s[1065]!, self._r[1065]!, [_0]) } - public var Conversation_EncryptedDescriptionTitle: String { return self._s[1064]! } - public var ChannelIntro_Text: String { return self._s[1065]! } - public var DialogList_DeleteBotConfirmation: String { return self._s[1066]! } - public var GroupPermission_NoSendMedia: String { return self._s[1067]! } - public var Calls_AddTab: String { return self._s[1068]! } - public var Message_ReplyActionButtonShowReceipt: String { return self._s[1069]! } - public var Channel_AdminLog_EmptyFilterText: String { return self._s[1070]! } - public var Notification_MessageLifetime1d: String { return self._s[1071]! } - public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[1072]! } - public var Channel_BanUser_PermissionsHeader: String { return self._s[1073]! } - public var Passport_Identity_GenderFemale: String { return self._s[1074]! } - public var BlockedUsers_BlockTitle: String { return self._s[1075]! } + public var Conversation_EncryptedDescriptionTitle: String { return self._s[1066]! } + public var ChannelIntro_Text: String { return self._s[1067]! } + public var DialogList_DeleteBotConfirmation: String { return self._s[1068]! } + public var GroupPermission_NoSendMedia: String { return self._s[1069]! } + public var Calls_AddTab: String { return self._s[1070]! } + public var Message_ReplyActionButtonShowReceipt: String { return self._s[1071]! } + public var Channel_AdminLog_EmptyFilterText: String { return self._s[1072]! } + public var Notification_MessageLifetime1d: String { return self._s[1073]! } + public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[1074]! } + public var Channel_BanUser_PermissionsHeader: String { return self._s[1075]! } + public var Passport_Identity_GenderFemale: String { return self._s[1076]! } + public var BlockedUsers_BlockTitle: String { return self._s[1077]! } public func PUSH_CHANNEL_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1076]!, self._r[1076]!, [_1]) + return formatWithArgumentRanges(self._s[1078]!, self._r[1078]!, [_1]) } - public var Weekday_Yesterday: String { return self._s[1077]! } - public var WallpaperSearch_ColorBlack: String { return self._s[1078]! } - public var AutoNightTheme_Scheduled: String { return self._s[1079]! } + public var Weekday_Yesterday: String { return self._s[1079]! } + public var WallpaperSearch_ColorBlack: String { return self._s[1080]! } + public var AutoNightTheme_Scheduled: String { return self._s[1081]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1080]!, self._r[1080]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[1082]!, self._r[1082]!, [_1, _2, _3, _4, _5, _6]) } - public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[1081]! } + public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[1083]! } public func PUSH_CHAT_JOINED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1082]!, self._r[1082]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1084]!, self._r[1084]!, [_1, _2]) } - public var CreatePoll_Create: String { return self._s[1083]! } - public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1084]! } + public var CreatePoll_Create: String { return self._s[1085]! } + public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1086]! } public func Notification_CallFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1085]!, self._r[1085]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1087]!, self._r[1087]!, [_1, _2]) } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[1086]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[1088]! } - public var Preview_OpenInInstagram: String { return self._s[1089]! } - public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[1090]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[1088]! } + public var Notifications_InAppNotificationsSounds: String { return self._s[1090]! } + public var Preview_OpenInInstagram: String { return self._s[1091]! } + public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[1092]! } public func PUSH_CHAT_ADD_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1091]!, self._r[1091]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1093]!, self._r[1093]!, [_1, _2, _3]) } public func Passport_PrivacyPolicy(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1092]!, self._r[1092]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1094]!, self._r[1094]!, [_1, _2]) } - public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[1093]! } - public var NetworkUsageSettings_TotalSection: String { return self._s[1094]! } - public var Channel_Setup_TypePrivateHelp: String { return self._s[1095]! } + public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[1095]! } + public var NetworkUsageSettings_TotalSection: String { return self._s[1096]! } + public var Channel_Setup_TypePrivateHelp: String { return self._s[1097]! } public func PUSH_CHAT_MESSAGE_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1096]!, self._r[1096]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1098]!, self._r[1098]!, [_1, _2]) } - public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[1098]! } - public var FastTwoStepSetup_HintSection: String { return self._s[1099]! } - public var Wallpaper_PhotoLibrary: String { return self._s[1100]! } - public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[1101]! } - public var Watch_LastSeen_WithinAMonth: String { return self._s[1102]! } - public var GroupInfo_ActionPromote: String { return self._s[1103]! } - public var PasscodeSettings_SimplePasscode: String { return self._s[1104]! } - public var GroupInfo_Permissions_Title: String { return self._s[1105]! } - public var Permissions_ContactsText_v0: String { return self._s[1106]! } - public var PrivacySettings_DataSettingsHelp: String { return self._s[1109]! } - public var Passport_FieldEmailHelp: String { return self._s[1110]! } - public var Passport_Identity_GenderPlaceholder: String { return self._s[1111]! } - public var Weekday_ShortSaturday: String { return self._s[1112]! } - public var ContactInfo_PhoneLabelMain: String { return self._s[1113]! } - public var Watch_Conversation_UserInfo: String { return self._s[1114]! } - public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[1115]! } - public var PrivacyLastSeenSettings_Title: String { return self._s[1116]! } - public var Conversation_ShareBotLocationConfirmation: String { return self._s[1117]! } - public var PhotoEditor_VignetteTool: String { return self._s[1118]! } - public var Passport_Address_Street1Placeholder: String { return self._s[1119]! } - public var Passport_Language_et: String { return self._s[1120]! } - public var Passport_Language_bg: String { return self._s[1122]! } - public var Stickers_NoStickersFound: String { return self._s[1124]! } + public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[1100]! } + public var FastTwoStepSetup_HintSection: String { return self._s[1101]! } + public var Wallpaper_PhotoLibrary: String { return self._s[1102]! } + public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[1103]! } + public var Watch_LastSeen_WithinAMonth: String { return self._s[1104]! } + public var GroupInfo_ActionPromote: String { return self._s[1105]! } + public var PasscodeSettings_SimplePasscode: String { return self._s[1106]! } + public var GroupInfo_Permissions_Title: String { return self._s[1107]! } + public var Permissions_ContactsText_v0: String { return self._s[1108]! } + public var PrivacySettings_DataSettingsHelp: String { return self._s[1111]! } + public var Passport_FieldEmailHelp: String { return self._s[1112]! } + public var Passport_Identity_GenderPlaceholder: String { return self._s[1113]! } + public var Weekday_ShortSaturday: String { return self._s[1114]! } + public var ContactInfo_PhoneLabelMain: String { return self._s[1115]! } + public var Watch_Conversation_UserInfo: String { return self._s[1116]! } + public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[1117]! } + public var PrivacyLastSeenSettings_Title: String { return self._s[1118]! } + public var Conversation_ShareBotLocationConfirmation: String { return self._s[1119]! } + public var PhotoEditor_VignetteTool: String { return self._s[1120]! } + public var Passport_Address_Street1Placeholder: String { return self._s[1121]! } + public var Passport_Language_et: String { return self._s[1122]! } + public var Passport_Language_bg: String { return self._s[1124]! } + public var Stickers_NoStickersFound: String { return self._s[1126]! } public func PUSH_CHANNEL_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1126]!, self._r[1126]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1128]!, self._r[1128]!, [_1, _2]) } - public var Settings_About: String { return self._s[1127]! } + public var Settings_About: String { return self._s[1129]! } public func Channel_AdminLog_MessageRestricted(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1128]!, self._r[1128]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1130]!, self._r[1130]!, [_0, _1, _2]) } - public var KeyCommand_NewMessage: String { return self._s[1130]! } - public var Group_ErrorAddBlocked: String { return self._s[1131]! } + public var KeyCommand_NewMessage: String { return self._s[1132]! } + public var Group_ErrorAddBlocked: String { return self._s[1133]! } public func Message_PaymentSent(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1132]!, self._r[1132]!, [_0]) + return formatWithArgumentRanges(self._s[1134]!, self._r[1134]!, [_0]) } - public var Map_LocationTitle: String { return self._s[1133]! } - public var CallSettings_UseLessDataLongDescription: String { return self._s[1134]! } - public var Cache_ClearProgress: String { return self._s[1135]! } + public var Map_LocationTitle: String { return self._s[1135]! } + public var CallSettings_UseLessDataLongDescription: String { return self._s[1136]! } + public var Cache_ClearProgress: String { return self._s[1137]! } public func Channel_Management_ErrorNotMember(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1136]!, self._r[1136]!, [_0]) + return formatWithArgumentRanges(self._s[1138]!, self._r[1138]!, [_0]) } - public var GroupRemoved_AddToGroup: String { return self._s[1137]! } - public var Passport_UpdateRequiredError: String { return self._s[1138]! } + public var GroupRemoved_AddToGroup: String { return self._s[1139]! } + public var Passport_UpdateRequiredError: String { return self._s[1140]! } public func PUSH_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1139]!, self._r[1139]!, [_1]) + return formatWithArgumentRanges(self._s[1141]!, self._r[1141]!, [_1]) } - public var Notifications_PermissionsSuppressWarningText: String { return self._s[1141]! } - public var Passport_Identity_MainPageHelp: String { return self._s[1142]! } - public var Conversation_StatusKickedFromGroup: String { return self._s[1143]! } - public var Passport_Language_ka: String { return self._s[1144]! } - public var Call_Decline: String { return self._s[1145]! } - public var SocksProxySetup_ProxyEnabled: String { return self._s[1146]! } + public var Notifications_PermissionsSuppressWarningText: String { return self._s[1143]! } + public var Passport_Identity_MainPageHelp: String { return self._s[1144]! } + public var Conversation_StatusKickedFromGroup: String { return self._s[1145]! } + public var Passport_Language_ka: String { return self._s[1146]! } + public var Call_Decline: String { return self._s[1147]! } + public var SocksProxySetup_ProxyEnabled: String { return self._s[1148]! } public func AuthCode_Alert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1149]!, self._r[1149]!, [_0]) + return formatWithArgumentRanges(self._s[1151]!, self._r[1151]!, [_0]) } + public var CallFeedback_Send: String { return self._s[1152]! } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1150]!, self._r[1150]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1153]!, self._r[1153]!, [_1, _2]) } - public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1151]! } - public var Passport_DeletePassport: String { return self._s[1153]! } - public var Privacy_Calls_P2PAlways: String { return self._s[1154]! } - public var Month_ShortDecember: String { return self._s[1155]! } - public var Channel_AdminLog_CanEditMessages: String { return self._s[1157]! } + public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1154]! } + public var Passport_DeletePassport: String { return self._s[1156]! } + public var Privacy_Calls_P2PAlways: String { return self._s[1157]! } + public var Month_ShortDecember: String { return self._s[1158]! } + public var Channel_AdminLog_CanEditMessages: String { return self._s[1160]! } public func Contacts_AccessDeniedHelpLandscape(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1158]!, self._r[1158]!, [_0]) + return formatWithArgumentRanges(self._s[1161]!, self._r[1161]!, [_0]) } - public var Channel_Stickers_Searching: String { return self._s[1159]! } - public var Conversation_EncryptedDescription1: String { return self._s[1160]! } - public var Conversation_EncryptedDescription2: String { return self._s[1161]! } - public var Conversation_EncryptedDescription3: String { return self._s[1162]! } - public var PhotoEditor_SharpenTool: String { return self._s[1163]! } - public var Conversation_EncryptedDescription4: String { return self._s[1165]! } - public var Channel_Members_AddMembers: String { return self._s[1166]! } - public var Wallpaper_Search: String { return self._s[1167]! } - public var Weekday_Friday: String { return self._s[1168]! } - public var Privacy_ContactsSync: String { return self._s[1169]! } - public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1170]! } + public var Channel_Stickers_Searching: String { return self._s[1162]! } + public var Conversation_EncryptedDescription1: String { return self._s[1163]! } + public var Conversation_EncryptedDescription2: String { return self._s[1164]! } + public var Conversation_EncryptedDescription3: String { return self._s[1165]! } + public var PhotoEditor_SharpenTool: String { return self._s[1166]! } + public var Conversation_EncryptedDescription4: String { return self._s[1168]! } + public var Channel_Members_AddMembers: String { return self._s[1169]! } + public var Wallpaper_Search: String { return self._s[1170]! } + public var Weekday_Friday: String { return self._s[1171]! } + public var Privacy_ContactsSync: String { return self._s[1172]! } + public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1173]! } public func Channel_Management_RestrictedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1171]!, self._r[1171]!, [_0]) - } - public var GroupInfo_Permissions_Removed: String { return self._s[1172]! } - public var Passport_Identity_GenderMale: String { return self._s[1173]! } - public func Call_StatusBar(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1174]!, self._r[1174]!, [_0]) } - public var Notifications_PermissionsKeepDisabled: String { return self._s[1175]! } - public var Conversation_JumpToDate: String { return self._s[1176]! } - public var Contacts_GlobalSearch: String { return self._s[1177]! } - public var AutoDownloadSettings_ResetHelp: String { return self._s[1178]! } - public var Profile_MessageLifetime1d: String { return self._s[1179]! } + public var GroupInfo_Permissions_Removed: String { return self._s[1175]! } + public var Passport_Identity_GenderMale: String { return self._s[1176]! } + public func Call_StatusBar(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1177]!, self._r[1177]!, [_0]) + } + public var Notifications_PermissionsKeepDisabled: String { return self._s[1178]! } + public var Conversation_JumpToDate: String { return self._s[1179]! } + public var Contacts_GlobalSearch: String { return self._s[1180]! } + public var AutoDownloadSettings_ResetHelp: String { return self._s[1181]! } + public var Profile_MessageLifetime1d: String { return self._s[1182]! } public func MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1180]!, self._r[1180]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1183]!, self._r[1183]!, [_1, _2]) } - public var StickerPack_BuiltinPackName: String { return self._s[1183]! } + public var StickerPack_BuiltinPackName: String { return self._s[1186]! } public func PUSH_CHAT_MESSAGE_AUDIO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1184]!, self._r[1184]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1187]!, self._r[1187]!, [_1, _2]) } - public var Passport_InfoTitle: String { return self._s[1186]! } - public var Notifications_PermissionsUnreachableText: String { return self._s[1187]! } + public var Passport_InfoTitle: String { return self._s[1189]! } + public var Notifications_PermissionsUnreachableText: String { return self._s[1190]! } public func NetworkUsageSettings_CellularUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1191]!, self._r[1191]!, [_0]) + return formatWithArgumentRanges(self._s[1194]!, self._r[1194]!, [_0]) } public func PUSH_CHAT_MESSAGE_GEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1192]!, self._r[1192]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1195]!, self._r[1195]!, [_1, _2]) } - public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[1193]! } - public var Profile_BotInfo: String { return self._s[1194]! } - public var Watch_Compose_CreateMessage: String { return self._s[1195]! } - public var Month_ShortNovember: String { return self._s[1196]! } - public var Wallpaper_SetCustomBackground: String { return self._s[1197]! } - public var Passport_Identity_TranslationsHelp: String { return self._s[1198]! } - public var NotificationsSound_Chime: String { return self._s[1199]! } - public var Passport_Language_ko: String { return self._s[1201]! } - public var InviteText_URL: String { return self._s[1202]! } - public var TextFormat_Monospace: String { return self._s[1203]! } + public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[1196]! } + public var Profile_BotInfo: String { return self._s[1197]! } + public var Watch_Compose_CreateMessage: String { return self._s[1198]! } + public var Month_ShortNovember: String { return self._s[1199]! } + public var Wallpaper_SetCustomBackground: String { return self._s[1200]! } + public var Passport_Identity_TranslationsHelp: String { return self._s[1201]! } + public var NotificationsSound_Chime: String { return self._s[1202]! } + public var Passport_Language_ko: String { return self._s[1204]! } + public var InviteText_URL: String { return self._s[1205]! } + public var TextFormat_Monospace: String { return self._s[1206]! } public func Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1204]!, self._r[1204]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1207]!, self._r[1207]!, [_1, _2, _3]) } public func Login_WillSendSms(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1205]!, self._r[1205]!, [_0]) + return formatWithArgumentRanges(self._s[1208]!, self._r[1208]!, [_0]) } public func Watch_Time_ShortWeekdayAt(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1206]!, self._r[1206]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1209]!, self._r[1209]!, [_1, _2]) } - public var Passport_InfoLearnMore: String { return self._s[1208]! } - public var TwoStepAuth_EmailPlaceholder: String { return self._s[1209]! } - public var Passport_Identity_AddIdentityCard: String { return self._s[1210]! } - public var Your_card_has_expired: String { return self._s[1211]! } - public var StickerPacksSettings_StickerPacksSection: String { return self._s[1212]! } - public var GroupInfo_InviteLink_Help: String { return self._s[1213]! } - public var Conversation_Report: String { return self._s[1216]! } - public var Notifications_MessageNotificationsSound: String { return self._s[1217]! } - public var Notification_MessageLifetime1m: String { return self._s[1218]! } - public var Privacy_ContactsTitle: String { return self._s[1219]! } - public var Conversation_ShareMyContactInfo: String { return self._s[1220]! } - public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[1221]! } - public var Channel_Members_Title: String { return self._s[1222]! } - public var Map_OpenInWaze: String { return self._s[1223]! } - public var Login_PhoneBannedError: String { return self._s[1224]! } + public var Passport_InfoLearnMore: String { return self._s[1211]! } + public var TwoStepAuth_EmailPlaceholder: String { return self._s[1212]! } + public var Passport_Identity_AddIdentityCard: String { return self._s[1213]! } + public var Your_card_has_expired: String { return self._s[1214]! } + public var StickerPacksSettings_StickerPacksSection: String { return self._s[1215]! } + public var GroupInfo_InviteLink_Help: String { return self._s[1216]! } + public var Conversation_Report: String { return self._s[1219]! } + public var Notifications_MessageNotificationsSound: String { return self._s[1220]! } + public var Notification_MessageLifetime1m: String { return self._s[1221]! } + public var Privacy_ContactsTitle: String { return self._s[1222]! } + public var Conversation_ShareMyContactInfo: String { return self._s[1223]! } + public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[1224]! } + public var Channel_Members_Title: String { return self._s[1225]! } + public var Map_OpenInWaze: String { return self._s[1226]! } + public var Login_PhoneBannedError: String { return self._s[1227]! } public func LiveLocationUpdated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1225]!, self._r[1225]!, [_0]) + return formatWithArgumentRanges(self._s[1228]!, self._r[1228]!, [_0]) } - public var Group_Management_AddModeratorHelp: String { return self._s[1226]! } - public var Common_OK: String { return self._s[1227]! } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[1228]! } - public var Cache_Music: String { return self._s[1229]! } - public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1230]! } - public var TwoStepAuth_HintPlaceholder: String { return self._s[1231]! } + public var Group_Management_AddModeratorHelp: String { return self._s[1229]! } + public var Common_OK: String { return self._s[1230]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[1231]! } + public var Cache_Music: String { return self._s[1232]! } + public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1233]! } + public var TwoStepAuth_HintPlaceholder: String { return self._s[1234]! } public func PUSH_PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1232]!, self._r[1232]!, [_1]) + return formatWithArgumentRanges(self._s[1235]!, self._r[1235]!, [_1]) } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1233]!, self._r[1233]!, [_0]) + return formatWithArgumentRanges(self._s[1236]!, self._r[1236]!, [_0]) } - public var Watch_MessageView_ViewOnPhone: String { return self._s[1235]! } - public var Privacy_Calls_CustomShareHelp: String { return self._s[1236]! } - public var ChangePhoneNumberNumber_Title: String { return self._s[1238]! } - public var State_ConnectingToProxyInfo: String { return self._s[1239]! } - public var Message_VideoMessage: String { return self._s[1241]! } - public var ChannelInfo_DeleteChannel: String { return self._s[1242]! } - public var ContactInfo_PhoneLabelOther: String { return self._s[1243]! } - public var Channel_EditAdmin_CannotEdit: String { return self._s[1244]! } - public var Passport_DeleteAddressConfirmation: String { return self._s[1245]! } - public var WallpaperPreview_SwipeBottomText: String { return self._s[1246]! } - public var Activity_RecordingAudio: String { return self._s[1247]! } - public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[1248]! } + public var Watch_MessageView_ViewOnPhone: String { return self._s[1238]! } + public var Privacy_Calls_CustomShareHelp: String { return self._s[1239]! } + public var ChangePhoneNumberNumber_Title: String { return self._s[1241]! } + public var State_ConnectingToProxyInfo: String { return self._s[1242]! } + public var Message_VideoMessage: String { return self._s[1244]! } + public var ChannelInfo_DeleteChannel: String { return self._s[1245]! } + public var ContactInfo_PhoneLabelOther: String { return self._s[1246]! } + public var Channel_EditAdmin_CannotEdit: String { return self._s[1247]! } + public var Passport_DeleteAddressConfirmation: String { return self._s[1248]! } + public var WallpaperPreview_SwipeBottomText: String { return self._s[1249]! } + public var Activity_RecordingAudio: String { return self._s[1250]! } + public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[1251]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1250]!, self._r[1250]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1253]!, self._r[1253]!, [_0, _1]) } public func EmptyGroupInfo_Line1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1253]!, self._r[1253]!, [_0]) + return formatWithArgumentRanges(self._s[1256]!, self._r[1256]!, [_0]) } - public var Conversation_ApplyLocalization: String { return self._s[1254]! } - public var UserInfo_AddPhone: String { return self._s[1255]! } - public var Map_ShareLiveLocationHelp: String { return self._s[1256]! } + public var Conversation_ApplyLocalization: String { return self._s[1257]! } + public var UserInfo_AddPhone: String { return self._s[1258]! } + public var Map_ShareLiveLocationHelp: String { return self._s[1259]! } public func Passport_Identity_NativeNameGenericHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1257]!, self._r[1257]!, [_0]) + return formatWithArgumentRanges(self._s[1260]!, self._r[1260]!, [_0]) } - public var Passport_Scans: String { return self._s[1259]! } - public var BlockedUsers_Unblock: String { return self._s[1260]! } + public var Passport_Scans: String { return self._s[1262]! } + public var BlockedUsers_Unblock: String { return self._s[1263]! } public func PUSH_ENCRYPTION_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1261]!, self._r[1261]!, [_1]) + return formatWithArgumentRanges(self._s[1264]!, self._r[1264]!, [_1]) } - public var Channel_Management_LabelCreator: String { return self._s[1262]! } - public var Passport_Identity_NativeNameGenericTitle: String { return self._s[1263]! } + public var Channel_Management_LabelCreator: String { return self._s[1265]! } + public var Passport_Identity_NativeNameGenericTitle: String { return self._s[1266]! } public func Login_EmailPhoneBody(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1264]!, self._r[1264]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1267]!, self._r[1267]!, [_0, _1, _2]) } - public var Login_PhoneNumberHelp: String { return self._s[1265]! } - public var LastSeen_ALongTimeAgo: String { return self._s[1266]! } - public var Channel_AdminLog_CanPinMessages: String { return self._s[1267]! } - public var ChannelIntro_CreateChannel: String { return self._s[1268]! } - public var Conversation_UnreadMessages: String { return self._s[1269]! } - public var Channel_AdminLog_EmptyText: String { return self._s[1270]! } - public var Notification_GroupActivated: String { return self._s[1271]! } - public var NotificationSettings_ContactJoinedInfo: String { return self._s[1272]! } + public var Login_PhoneNumberHelp: String { return self._s[1268]! } + public var LastSeen_ALongTimeAgo: String { return self._s[1269]! } + public var Channel_AdminLog_CanPinMessages: String { return self._s[1270]! } + public var ChannelIntro_CreateChannel: String { return self._s[1271]! } + public var Conversation_UnreadMessages: String { return self._s[1272]! } + public var Channel_AdminLog_EmptyText: String { return self._s[1273]! } + public var Notification_GroupActivated: String { return self._s[1274]! } + public var NotificationSettings_ContactJoinedInfo: String { return self._s[1275]! } public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1273]!, self._r[1273]!, [_0]) + return formatWithArgumentRanges(self._s[1276]!, self._r[1276]!, [_0]) } public func DownloadingStatus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1274]!, self._r[1274]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1277]!, self._r[1277]!, [_0, _1]) } - public var GroupInfo_ConvertToSupergroup: String { return self._s[1276]! } + public var GroupInfo_ConvertToSupergroup: String { return self._s[1279]! } public func PrivacyPolicy_AgeVerificationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1277]!, self._r[1277]!, [_0]) - } - public var Undo_DeletedChannel: String { return self._s[1278]! } - public var Document_TargetConfirmationFormat: String { return self._s[1279]! } - public func Call_StatusOngoing(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1280]!, self._r[1280]!, [_0]) } - public var Contacts_SortByName: String { return self._s[1281]! } - public func CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1283]!, self._r[1283]!, [_1, _2, _3]) + public var Undo_DeletedChannel: String { return self._s[1281]! } + public var CallFeedback_AddComment: String { return self._s[1282]! } + public var Document_TargetConfirmationFormat: String { return self._s[1283]! } + public func Call_StatusOngoing(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1284]!, self._r[1284]!, [_0]) } - public var Conversation_ClearSelfHistory: String { return self._s[1284]! } - public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[1285]! } - public var Stickers_SuggestNone: String { return self._s[1286]! } - public var ChatSettings_Cache: String { return self._s[1287]! } - public var Settings_SaveIncomingPhotos: String { return self._s[1288]! } - public var Media_ShareThisPhoto: String { return self._s[1289]! } - public var InfoPlist_NSContactsUsageDescription: String { return self._s[1290]! } - public var Conversation_ContextMenuCopyLink: String { return self._s[1291]! } - public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[1292]! } - public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[1293]! } - public var Permissions_CellularDataTitle_v0: String { return self._s[1294]! } - public var WallpaperSearch_ColorWhite: String { return self._s[1296]! } - public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1297]! } - public var Map_OpenIn: String { return self._s[1298]! } + public var Contacts_SortByName: String { return self._s[1285]! } + public func CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1287]!, self._r[1287]!, [_1, _2, _3]) + } + public var Conversation_ClearSelfHistory: String { return self._s[1288]! } + public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[1289]! } + public var Stickers_SuggestNone: String { return self._s[1290]! } + public var ChatSettings_Cache: String { return self._s[1291]! } + public var Settings_SaveIncomingPhotos: String { return self._s[1292]! } + public var Media_ShareThisPhoto: String { return self._s[1293]! } + public var InfoPlist_NSContactsUsageDescription: String { return self._s[1294]! } + public var Conversation_ContextMenuCopyLink: String { return self._s[1295]! } + public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[1296]! } + public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[1297]! } + public var Permissions_CellularDataTitle_v0: String { return self._s[1298]! } + public var WallpaperSearch_ColorWhite: String { return self._s[1300]! } + public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1301]! } + public var Map_OpenIn: String { return self._s[1302]! } public func PUSH_PHONE_CALL_MISSED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1301]!, self._r[1301]!, [_1]) + return formatWithArgumentRanges(self._s[1305]!, self._r[1305]!, [_1]) } public func ChannelInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1302]!, self._r[1302]!, [_0]) + return formatWithArgumentRanges(self._s[1306]!, self._r[1306]!, [_0]) } - public var MessagePoll_LabelClosed: String { return self._s[1303]! } - public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[1305]! } - public var UserInfo_FirstNamePlaceholder: String { return self._s[1306]! } - public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[1307]! } - public var Login_SelectCountry_Title: String { return self._s[1308]! } - public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[1309]! } - public var Channel_AdminLog_ChangeInfo: String { return self._s[1310]! } - public var Watch_Suggestion_BRB: String { return self._s[1311]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[1312]! } - public var Contacts_PermissionsTitle: String { return self._s[1313]! } - public var Conversation_RestrictedInline: String { return self._s[1314]! } - public var StickerPack_ViewPack: String { return self._s[1316]! } + public var MessagePoll_LabelClosed: String { return self._s[1307]! } + public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[1309]! } + public var UserInfo_FirstNamePlaceholder: String { return self._s[1310]! } + public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[1311]! } + public var Login_SelectCountry_Title: String { return self._s[1312]! } + public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[1313]! } + public var Channel_AdminLog_ChangeInfo: String { return self._s[1314]! } + public var Watch_Suggestion_BRB: String { return self._s[1315]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[1316]! } + public var Contacts_PermissionsTitle: String { return self._s[1317]! } + public var Conversation_RestrictedInline: String { return self._s[1318]! } + public var StickerPack_ViewPack: String { return self._s[1320]! } public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1317]!, self._r[1317]!, [_0]) + return formatWithArgumentRanges(self._s[1321]!, self._r[1321]!, [_0]) } - public var Compose_NewChannel: String { return self._s[1319]! } - public var Channel_Info_Stickers: String { return self._s[1323]! } - public var AutoNightTheme_PreferredTheme: String { return self._s[1324]! } - public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[1325]! } - public var Passport_DeletePersonalDetails: String { return self._s[1326]! } - public var Conversation_SearchNoResults: String { return self._s[1328]! } - public var MessagePoll_LabelAnonymous: String { return self._s[1329]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[1330]! } - public var Login_Code: String { return self._s[1331]! } - public var Watch_Suggestion_WhatsUp: String { return self._s[1332]! } - public var Weekday_ShortThursday: String { return self._s[1333]! } - public var Resolve_ErrorNotFound: String { return self._s[1335]! } - public var LastSeen_Offline: String { return self._s[1336]! } - public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[1337]! } - public var Channel_AdminLog_CanChangeInviteLink: String { return self._s[1338]! } - public var GroupInfo_Title: String { return self._s[1339]! } - public var NotificationsSound_Note: String { return self._s[1340]! } - public var Conversation_EditingMessagePanelTitle: String { return self._s[1341]! } - public var Watch_Message_Poll: String { return self._s[1342]! } - public var Privacy_Calls: String { return self._s[1343]! } - public var Month_ShortAugust: String { return self._s[1344]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[1345]! } - public var Notifications_Reset: String { return self._s[1346]! } - public var Conversation_Pin: String { return self._s[1347]! } - public var Passport_Language_lv: String { return self._s[1348]! } - public var BlockedUsers_Info: String { return self._s[1349]! } - public var Watch_Conversation_Unblock: String { return self._s[1352]! } + public var Compose_NewChannel: String { return self._s[1323]! } + public var Channel_Info_Stickers: String { return self._s[1327]! } + public var AutoNightTheme_PreferredTheme: String { return self._s[1328]! } + public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[1329]! } + public var Passport_DeletePersonalDetails: String { return self._s[1330]! } + public var Conversation_SearchNoResults: String { return self._s[1332]! } + public var MessagePoll_LabelAnonymous: String { return self._s[1333]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[1334]! } + public var Login_Code: String { return self._s[1335]! } + public var Watch_Suggestion_WhatsUp: String { return self._s[1336]! } + public var Weekday_ShortThursday: String { return self._s[1337]! } + public var Resolve_ErrorNotFound: String { return self._s[1339]! } + public var LastSeen_Offline: String { return self._s[1340]! } + public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[1341]! } + public var Channel_AdminLog_CanChangeInviteLink: String { return self._s[1342]! } + public var GroupInfo_Title: String { return self._s[1343]! } + public var NotificationsSound_Note: String { return self._s[1344]! } + public var Conversation_EditingMessagePanelTitle: String { return self._s[1345]! } + public var Watch_Message_Poll: String { return self._s[1346]! } + public var Privacy_Calls: String { return self._s[1347]! } + public var Month_ShortAugust: String { return self._s[1348]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[1349]! } + public var Notifications_Reset: String { return self._s[1350]! } + public var Conversation_Pin: String { return self._s[1351]! } + public var Passport_Language_lv: String { return self._s[1352]! } + public var BlockedUsers_Info: String { return self._s[1353]! } + public var Watch_Conversation_Unblock: String { return self._s[1356]! } public func Time_MonthOfYear_m9(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1353]!, self._r[1353]!, [_0]) + return formatWithArgumentRanges(self._s[1357]!, self._r[1357]!, [_0]) } - public var CloudStorage_Title: String { return self._s[1354]! } - public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[1355]! } + public var CloudStorage_Title: String { return self._s[1358]! } + public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[1359]! } public func NetworkUsageSettings_WifiUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1356]!, self._r[1356]!, [_0]) + return formatWithArgumentRanges(self._s[1360]!, self._r[1360]!, [_0]) } - public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[1357]! } - public var Watch_Suggestion_OnMyWay: String { return self._s[1358]! } - public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[1359]! } - public var Passport_Address_EditBankStatement: String { return self._s[1360]! } - public var ChatSettings_DownloadInBackgroundInfo: String { return self._s[1361]! } - public var ShareMenu_Comment: String { return self._s[1362]! } - public var Permissions_ContactsTitle_v0: String { return self._s[1363]! } - public var Notifications_PermissionsTitle: String { return self._s[1364]! } - public var GroupPermission_NoSendLinks: String { return self._s[1365]! } - public var Settings_Support: String { return self._s[1366]! } - public var Notifications_ChannelNotificationsSound: String { return self._s[1367]! } - public var GroupPermission_ApplyAlertAction: String { return self._s[1368]! } - public var Watch_Stickers_StickerPacks: String { return self._s[1369]! } - public var Common_Select: String { return self._s[1371]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[1372]! } - public var WallpaperSearch_ColorGray: String { return self._s[1374]! } - public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[1375]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[1376]! } - public var Appearance_PreviewReplyAuthor: String { return self._s[1377]! } - public var TwoStepAuth_RecoveryTitle: String { return self._s[1378]! } - public var Widget_AuthRequired: String { return self._s[1379]! } - public var Camera_FlashOn: String { return self._s[1380]! } - public var Channel_Stickers_NotFoundHelp: String { return self._s[1381]! } - public var Watch_Suggestion_OK: String { return self._s[1382]! } + public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[1361]! } + public var Watch_Suggestion_OnMyWay: String { return self._s[1362]! } + public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[1363]! } + public var Passport_Address_EditBankStatement: String { return self._s[1364]! } + public var ChatSettings_DownloadInBackgroundInfo: String { return self._s[1365]! } + public var ShareMenu_Comment: String { return self._s[1366]! } + public var Permissions_ContactsTitle_v0: String { return self._s[1367]! } + public var Notifications_PermissionsTitle: String { return self._s[1368]! } + public var GroupPermission_NoSendLinks: String { return self._s[1369]! } + public var Settings_Support: String { return self._s[1370]! } + public var Notifications_ChannelNotificationsSound: String { return self._s[1371]! } + public var GroupPermission_ApplyAlertAction: String { return self._s[1372]! } + public var Watch_Stickers_StickerPacks: String { return self._s[1373]! } + public var Common_Select: String { return self._s[1375]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[1376]! } + public var WallpaperSearch_ColorGray: String { return self._s[1378]! } + public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[1379]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[1380]! } + public var Appearance_PreviewReplyAuthor: String { return self._s[1381]! } + public var TwoStepAuth_RecoveryTitle: String { return self._s[1382]! } + public var Widget_AuthRequired: String { return self._s[1383]! } + public var Camera_FlashOn: String { return self._s[1384]! } + public var Channel_Stickers_NotFoundHelp: String { return self._s[1385]! } + public var Watch_Suggestion_OK: String { return self._s[1386]! } public func Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1384]!, self._r[1384]!, [_0]) + return formatWithArgumentRanges(self._s[1388]!, self._r[1388]!, [_0]) } public func Notification_PinnedLiveLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1386]!, self._r[1386]!, [_0]) + return formatWithArgumentRanges(self._s[1390]!, self._r[1390]!, [_0]) } - public var DialogList_AdLabel: String { return self._s[1387]! } - public var WatchRemote_NotificationText: String { return self._s[1388]! } - public var Conversation_ReportSpam: String { return self._s[1389]! } - public var Settings_LogoutConfirmationTitle: String { return self._s[1391]! } - public var PhoneLabel_Title: String { return self._s[1392]! } - public var Passport_Address_EditRentalAgreement: String { return self._s[1393]! } - public var Notifications_ExceptionsTitle: String { return self._s[1394]! } - public var Notifications_AlertTones: String { return self._s[1395]! } - public var Call_ReportIncludeLogDescription: String { return self._s[1396]! } - public var AutoDownloadSettings_PrivateChats: String { return self._s[1397]! } - public var TwoStepAuth_AddHintTitle: String { return self._s[1399]! } - public var ReportPeer_ReasonOther: String { return self._s[1400]! } - public var KeyCommand_ScrollDown: String { return self._s[1402]! } + public var DialogList_AdLabel: String { return self._s[1391]! } + public var WatchRemote_NotificationText: String { return self._s[1392]! } + public var Conversation_ReportSpam: String { return self._s[1393]! } + public var Settings_LogoutConfirmationTitle: String { return self._s[1395]! } + public var PhoneLabel_Title: String { return self._s[1396]! } + public var Passport_Address_EditRentalAgreement: String { return self._s[1397]! } + public var Notifications_ExceptionsTitle: String { return self._s[1398]! } + public var Notifications_AlertTones: String { return self._s[1399]! } + public var Call_ReportIncludeLogDescription: String { return self._s[1400]! } + public var AutoDownloadSettings_PrivateChats: String { return self._s[1401]! } + public var TwoStepAuth_AddHintTitle: String { return self._s[1403]! } + public var ReportPeer_ReasonOther: String { return self._s[1404]! } + public var KeyCommand_ScrollDown: String { return self._s[1406]! } public func Login_BannedPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1403]!, self._r[1403]!, [_0]) + return formatWithArgumentRanges(self._s[1407]!, self._r[1407]!, [_0]) } - public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[1404]! } - public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[1405]! } - public var AuthSessions_LogOut: String { return self._s[1406]! } - public var Passport_Identity_TypeInternalPassport: String { return self._s[1407]! } - public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[1408]! } - public var Passport_Phone_Title: String { return self._s[1409]! } - public var Settings_PhoneNumber: String { return self._s[1410]! } - public var NotificationsSound_Alert: String { return self._s[1411]! } - public var PhotoEditor_CurvesTool: String { return self._s[1413]! } - public var Checkout_PaymentMethod: String { return self._s[1415]! } + public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[1408]! } + public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[1409]! } + public var AuthSessions_LogOut: String { return self._s[1410]! } + public var Passport_Identity_TypeInternalPassport: String { return self._s[1411]! } + public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[1412]! } + public var Passport_Phone_Title: String { return self._s[1413]! } + public var Settings_PhoneNumber: String { return self._s[1414]! } + public var NotificationsSound_Alert: String { return self._s[1415]! } + public var PhotoEditor_CurvesTool: String { return self._s[1417]! } + public var Checkout_PaymentMethod: String { return self._s[1419]! } public func PUSH_CHAT_ADD_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1416]!, self._r[1416]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1420]!, self._r[1420]!, [_1, _2]) } - public var Contacts_AccessDeniedError: String { return self._s[1417]! } - public var Camera_PhotoMode: String { return self._s[1420]! } - public var Passport_Address_AddUtilityBill: String { return self._s[1421]! } - public var CallSettings_OnMobile: String { return self._s[1422]! } - public var Tour_Text2: String { return self._s[1423]! } + public var Contacts_AccessDeniedError: String { return self._s[1421]! } + public var Camera_PhotoMode: String { return self._s[1424]! } + public var Passport_Address_AddUtilityBill: String { return self._s[1425]! } + public var CallSettings_OnMobile: String { return self._s[1426]! } + public var Tour_Text2: String { return self._s[1427]! } public func PUSH_CHAT_MESSAGE_ROUND(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1424]!, self._r[1424]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1428]!, self._r[1428]!, [_1, _2]) } - public var DialogList_EncryptionProcessing: String { return self._s[1426]! } - public var Permissions_Skip: String { return self._s[1427]! } - public var SecretImage_Title: String { return self._s[1428]! } - public var Watch_MessageView_Title: String { return self._s[1429]! } - public var AttachmentMenu_Poll: String { return self._s[1430]! } + public var DialogList_EncryptionProcessing: String { return self._s[1430]! } + public var Permissions_Skip: String { return self._s[1431]! } + public var SecretImage_Title: String { return self._s[1432]! } + public var Watch_MessageView_Title: String { return self._s[1433]! } + public var AttachmentMenu_Poll: String { return self._s[1434]! } public func Notification_GroupInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1431]!, self._r[1431]!, [_0]) + return formatWithArgumentRanges(self._s[1435]!, self._r[1435]!, [_0]) } - public var Notification_CallCanceled: String { return self._s[1432]! } - public var WallpaperPreview_Title: String { return self._s[1433]! } - public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[1434]! } - public var Settings_ProxyConnecting: String { return self._s[1435]! } - public var Profile_MessageLifetime5s: String { return self._s[1437]! } - public var Username_InvalidCharacters: String { return self._s[1438]! } - public var WallpaperPreview_CropBottomText: String { return self._s[1439]! } - public var AutoDownloadSettings_LimitBySize: String { return self._s[1440]! } - public var Notification_CreatedChannel: String { return self._s[1443]! } + public var Notification_CallCanceled: String { return self._s[1436]! } + public var WallpaperPreview_Title: String { return self._s[1437]! } + public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[1438]! } + public var Settings_ProxyConnecting: String { return self._s[1439]! } + public var Profile_MessageLifetime5s: String { return self._s[1441]! } + public var Username_InvalidCharacters: String { return self._s[1442]! } + public var WallpaperPreview_CropBottomText: String { return self._s[1443]! } + public var AutoDownloadSettings_LimitBySize: String { return self._s[1444]! } + public var Notification_CreatedChannel: String { return self._s[1447]! } public func PUSH_CHAT_DELETE_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1444]!, self._r[1444]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1448]!, self._r[1448]!, [_1, _2, _3]) } - public var Passcode_AppLockedAlert: String { return self._s[1446]! } - public var Contacts_TopSection: String { return self._s[1447]! } + public var Passcode_AppLockedAlert: String { return self._s[1450]! } + public var Contacts_TopSection: String { return self._s[1451]! } public func Time_MonthOfYear_m6(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1448]!, self._r[1448]!, [_0]) + return formatWithArgumentRanges(self._s[1452]!, self._r[1452]!, [_0]) } - public var ReportPeer_ReasonSpam: String { return self._s[1449]! } - public var UserInfo_TapToCall: String { return self._s[1450]! } - public var Common_Search: String { return self._s[1452]! } - public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1453]! } - public var Message_InvoiceLabel: String { return self._s[1454]! } - public var Conversation_InputTextPlaceholder: String { return self._s[1455]! } - public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[1456]! } + public var ReportPeer_ReasonSpam: String { return self._s[1453]! } + public var UserInfo_TapToCall: String { return self._s[1454]! } + public var Common_Search: String { return self._s[1456]! } + public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1457]! } + public var Message_InvoiceLabel: String { return self._s[1458]! } + public var Conversation_InputTextPlaceholder: String { return self._s[1459]! } + public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[1460]! } public func Passport_Address_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1457]!, self._r[1457]!, [_0]) + return formatWithArgumentRanges(self._s[1461]!, self._r[1461]!, [_0]) } - public var Conversation_Info: String { return self._s[1458]! } - public var Login_InfoDeletePhoto: String { return self._s[1459]! } - public var Passport_Language_vi: String { return self._s[1461]! } - public var Conversation_Search: String { return self._s[1462]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[1463]! } - public var ReportPeer_ReasonPornography: String { return self._s[1464]! } - public var AutoDownloadSettings_PhotosTitle: String { return self._s[1465]! } - public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[1466]! } - public var Map_LiveLocationGroupDescription: String { return self._s[1467]! } - public var Channel_Setup_TypeHeader: String { return self._s[1468]! } - public var AuthSessions_LoggedIn: String { return self._s[1469]! } - public var Login_SmsRequestState3: String { return self._s[1470]! } - public var Passport_Address_EditUtilityBill: String { return self._s[1471]! } - public var Appearance_ReduceMotionInfo: String { return self._s[1472]! } - public var Channel_Edit_LinkItem: String { return self._s[1473]! } - public var Privacy_Calls_P2PNever: String { return self._s[1474]! } - public var Conversation_AddToReadingList: String { return self._s[1476]! } - public var Message_Animation: String { return self._s[1477]! } - public var Conversation_DefaultRestrictedMedia: String { return self._s[1478]! } - public var Map_Unknown: String { return self._s[1479]! } + public var Conversation_Info: String { return self._s[1462]! } + public var Login_InfoDeletePhoto: String { return self._s[1463]! } + public var Passport_Language_vi: String { return self._s[1465]! } + public var Conversation_Search: String { return self._s[1466]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[1467]! } + public var ReportPeer_ReasonPornography: String { return self._s[1468]! } + public var AutoDownloadSettings_PhotosTitle: String { return self._s[1469]! } + public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[1470]! } + public var Map_LiveLocationGroupDescription: String { return self._s[1471]! } + public var Channel_Setup_TypeHeader: String { return self._s[1472]! } + public var AuthSessions_LoggedIn: String { return self._s[1473]! } + public var Login_SmsRequestState3: String { return self._s[1474]! } + public var Passport_Address_EditUtilityBill: String { return self._s[1475]! } + public var Appearance_ReduceMotionInfo: String { return self._s[1476]! } + public var Channel_Edit_LinkItem: String { return self._s[1477]! } + public var Privacy_Calls_P2PNever: String { return self._s[1478]! } + public var Conversation_AddToReadingList: String { return self._s[1480]! } + public var Message_Animation: String { return self._s[1481]! } + public var Conversation_DefaultRestrictedMedia: String { return self._s[1482]! } + public var Map_Unknown: String { return self._s[1483]! } public func PUSH_PINNED_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1480]!, self._r[1480]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1484]!, self._r[1484]!, [_1, _2]) } public func Passport_FieldOneOf_Or(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1481]!, self._r[1481]!, [_1, _2]) - } - public var Call_StatusRequesting: String { return self._s[1482]! } - public var Conversation_SecretChatContextBotAlert: String { return self._s[1483]! } - public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1484]! } - public func PUSH_CHAT_MESSAGE_DOC(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1485]!, self._r[1485]!, [_1, _2]) } - public var Weekday_Monday: String { return self._s[1486]! } - public var Update_Skip: String { return self._s[1487]! } - public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1488]! } - public var Message_PinnedPollMessage: String { return self._s[1489]! } - public var BlockedUsers_Title: String { return self._s[1490]! } + public var Call_StatusRequesting: String { return self._s[1486]! } + public var Conversation_SecretChatContextBotAlert: String { return self._s[1487]! } + public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1488]! } + public func PUSH_CHAT_MESSAGE_DOC(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1489]!, self._r[1489]!, [_1, _2]) + } + public var Weekday_Monday: String { return self._s[1490]! } + public var Update_Skip: String { return self._s[1491]! } + public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1492]! } + public var Message_PinnedPollMessage: String { return self._s[1493]! } + public var BlockedUsers_Title: String { return self._s[1494]! } public func PUSH_CHANNEL_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1491]!, self._r[1491]!, [_1]) + return formatWithArgumentRanges(self._s[1495]!, self._r[1495]!, [_1]) } - public var Username_CheckingUsername: String { return self._s[1492]! } - public var NotificationsSound_Bell: String { return self._s[1493]! } - public var Conversation_SendMessageErrorFlood: String { return self._s[1494]! } + public var Username_CheckingUsername: String { return self._s[1496]! } + public var NotificationsSound_Bell: String { return self._s[1497]! } + public var Conversation_SendMessageErrorFlood: String { return self._s[1498]! } public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1495]!, self._r[1495]!, [_0]) + return formatWithArgumentRanges(self._s[1499]!, self._r[1499]!, [_0]) } - public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1496]! } - public var ChatSettings_Groups: String { return self._s[1497]! } - public var Your_card_was_declined: String { return self._s[1498]! } - public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1500]! } - public var ChatList_Unmute: String { return self._s[1501]! } - public var PhotoEditor_CurvesAll: String { return self._s[1502]! } - public var Weekday_ShortTuesday: String { return self._s[1503]! } - public var DialogList_Read: String { return self._s[1504]! } - public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1505]! } - public var Passport_Identity_Gender: String { return self._s[1506]! } + public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1500]! } + public var ChatSettings_Groups: String { return self._s[1501]! } + public var Your_card_was_declined: String { return self._s[1502]! } + public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1504]! } + public var ChatList_Unmute: String { return self._s[1505]! } + public var PhotoEditor_CurvesAll: String { return self._s[1506]! } + public var Weekday_ShortTuesday: String { return self._s[1507]! } + public var DialogList_Read: String { return self._s[1508]! } + public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1509]! } + public var Passport_Identity_Gender: String { return self._s[1510]! } public func Target_ShareGameConfirmationPrivate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1507]!, self._r[1507]!, [_0]) + return formatWithArgumentRanges(self._s[1511]!, self._r[1511]!, [_0]) } - public var Target_SelectGroup: String { return self._s[1508]! } + public var Target_SelectGroup: String { return self._s[1512]! } public func DialogList_EncryptedChatStartedIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1510]!, self._r[1510]!, [_0]) + return formatWithArgumentRanges(self._s[1514]!, self._r[1514]!, [_0]) } - public var Passport_Language_en: String { return self._s[1511]! } - public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1512]! } - public var Login_CancelPhoneVerificationContinue: String { return self._s[1513]! } - public var Checkout_NewCard_PaymentCard: String { return self._s[1515]! } - public var Login_InfoHelp: String { return self._s[1516]! } - public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1517]! } - public var SocksProxySetup_AddProxy: String { return self._s[1520]! } - public var CreatePoll_Title: String { return self._s[1521]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1522]! } - public var UserInfo_GroupsInCommon: String { return self._s[1523]! } - public var Call_AudioRouteHide: String { return self._s[1524]! } - public var ContactInfo_PhoneLabelMobile: String { return self._s[1526]! } + public var Passport_Language_en: String { return self._s[1515]! } + public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1516]! } + public var Login_CancelPhoneVerificationContinue: String { return self._s[1517]! } + public var Checkout_NewCard_PaymentCard: String { return self._s[1519]! } + public var Login_InfoHelp: String { return self._s[1520]! } + public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1521]! } + public var SocksProxySetup_AddProxy: String { return self._s[1524]! } + public var CreatePoll_Title: String { return self._s[1525]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1526]! } + public var UserInfo_GroupsInCommon: String { return self._s[1527]! } + public var Call_AudioRouteHide: String { return self._s[1528]! } + public var ContactInfo_PhoneLabelMobile: String { return self._s[1530]! } public func ChatList_LeaveGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1527]!, self._r[1527]!, [_0]) + return formatWithArgumentRanges(self._s[1531]!, self._r[1531]!, [_0]) } - public var TextFormat_Bold: String { return self._s[1528]! } - public var FastTwoStepSetup_EmailSection: String { return self._s[1529]! } - public var Notifications_Title: String { return self._s[1530]! } - public var Group_Username_InvalidTooShort: String { return self._s[1531]! } - public var Channel_ErrorAddTooMuch: String { return self._s[1532]! } + public var TextFormat_Bold: String { return self._s[1532]! } + public var FastTwoStepSetup_EmailSection: String { return self._s[1533]! } + public var Notifications_Title: String { return self._s[1534]! } + public var Group_Username_InvalidTooShort: String { return self._s[1535]! } + public var Channel_ErrorAddTooMuch: String { return self._s[1536]! } public func DialogList_MultipleTypingSuffix(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1533]!, self._r[1533]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1537]!, self._r[1537]!, ["\(_0)"]) } - public var Stickers_SuggestAdded: String { return self._s[1535]! } - public var Login_CountryCode: String { return self._s[1536]! } - public var Map_GetDirections: String { return self._s[1537]! } - public var Login_PhoneFloodError: String { return self._s[1538]! } + public var Stickers_SuggestAdded: String { return self._s[1539]! } + public var Login_CountryCode: String { return self._s[1540]! } + public var Map_GetDirections: String { return self._s[1541]! } + public var Login_PhoneFloodError: String { return self._s[1542]! } public func Time_MonthOfYear_m3(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1539]!, self._r[1539]!, [_0]) + return formatWithArgumentRanges(self._s[1543]!, self._r[1543]!, [_0]) } - public var Settings_SetUsername: String { return self._s[1541]! } - public var Notification_GroupInviterSelf: String { return self._s[1542]! } - public var InstantPage_TapToOpenLink: String { return self._s[1543]! } + public var Settings_SetUsername: String { return self._s[1545]! } + public var Notification_GroupInviterSelf: String { return self._s[1546]! } + public var InstantPage_TapToOpenLink: String { return self._s[1547]! } public func Notification_ChannelInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1544]!, self._r[1544]!, [_0]) + return formatWithArgumentRanges(self._s[1548]!, self._r[1548]!, [_0]) } - public var Watch_Suggestion_TalkLater: String { return self._s[1545]! } - public var SecretChat_Title: String { return self._s[1546]! } - public var Group_UpgradeNoticeText1: String { return self._s[1547]! } - public var AuthSessions_Title: String { return self._s[1548]! } - public var PhotoEditor_CropAuto: String { return self._s[1549]! } - public var Channel_About_Title: String { return self._s[1550]! } - public var FastTwoStepSetup_EmailHelp: String { return self._s[1551]! } + public var Watch_Suggestion_TalkLater: String { return self._s[1549]! } + public var SecretChat_Title: String { return self._s[1550]! } + public var Group_UpgradeNoticeText1: String { return self._s[1551]! } + public var AuthSessions_Title: String { return self._s[1552]! } + public var PhotoEditor_CropAuto: String { return self._s[1553]! } + public var Channel_About_Title: String { return self._s[1554]! } + public var FastTwoStepSetup_EmailHelp: String { return self._s[1555]! } public func Conversation_Bytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1553]!, self._r[1553]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1557]!, self._r[1557]!, ["\(_0)"]) } - public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1555]! } - public var Group_Setup_HistoryVisibleHelp: String { return self._s[1556]! } + public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1559]! } + public var Group_Setup_HistoryVisibleHelp: String { return self._s[1560]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1557]!, self._r[1557]!, [_1]) + return formatWithArgumentRanges(self._s[1561]!, self._r[1561]!, [_1]) } public func SharedMedia_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1559]!, self._r[1559]!, [_0]) + return formatWithArgumentRanges(self._s[1563]!, self._r[1563]!, [_0]) } public func TwoStepAuth_RecoveryEmailUnavailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1560]!, self._r[1560]!, [_0]) + return formatWithArgumentRanges(self._s[1564]!, self._r[1564]!, [_0]) } - public var Privacy_PaymentsClearInfoHelp: String { return self._s[1561]! } - public var Undo_MessagesDeleted: String { return self._s[1562]! } - public var Presence_online: String { return self._s[1564]! } - public var PasscodeSettings_Title: String { return self._s[1565]! } - public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1566]! } - public var Web_OpenExternal: String { return self._s[1567]! } + public var Privacy_PaymentsClearInfoHelp: String { return self._s[1565]! } + public var Undo_MessagesDeleted: String { return self._s[1566]! } + public var Presence_online: String { return self._s[1568]! } + public var PasscodeSettings_Title: String { return self._s[1569]! } + public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1570]! } + public var Web_OpenExternal: String { return self._s[1571]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1569]!, self._r[1569]!, [_0]) - } - public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1570]! } - public var Map_YouAreHere: String { return self._s[1571]! } - public func AuthSessions_Message(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1572]!, self._r[1572]!, [_0]) - } - public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1573]!, self._r[1573]!, [_0]) } - public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1574]! } - public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1575]! } - public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { + public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1574]! } + public var Map_YouAreHere: String { return self._s[1575]! } + public func AuthSessions_Message(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1576]!, self._r[1576]!, [_0]) } - public func DialogList_LiveLocationSharingTo(_ _0: String) -> (String, [(Int, NSRange)]) { + public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1577]!, self._r[1577]!, [_0]) } - public var SocksProxySetup_Username: String { return self._s[1578]! } - public var Bot_Start: String { return self._s[1579]! } - public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { + public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1578]! } + public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1579]! } + public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1580]!, self._r[1580]!, [_0]) } - public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { + public func DialogList_LiveLocationSharingTo(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1581]!, self._r[1581]!, [_0]) } - public var Contacts_SortByPresence: String { return self._s[1582]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1584]! } + public var SocksProxySetup_Username: String { return self._s[1582]! } + public var Bot_Start: String { return self._s[1583]! } + public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1584]!, self._r[1584]!, [_0]) + } + public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1585]!, self._r[1585]!, [_0]) + } + public var Contacts_SortByPresence: String { return self._s[1586]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1588]! } public func PUSH_CHAT_CREATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1585]!, self._r[1585]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1589]!, self._r[1589]!, [_1, _2]) } public func PrivacySettings_LastSeenContactsMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1586]!, self._r[1586]!, [_0]) + return formatWithArgumentRanges(self._s[1590]!, self._r[1590]!, [_0]) } - public var Passport_Email_EnterOtherEmail: String { return self._s[1587]! } - public var Login_InfoAvatarPhoto: String { return self._s[1588]! } - public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1589]! } - public var Tour_Title4: String { return self._s[1590]! } - public var Passport_Identity_Translation: String { return self._s[1591]! } - public var Login_TermsOfServiceLabel: String { return self._s[1593]! } - public var Passport_Language_it: String { return self._s[1594]! } - public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1595]! } - public var Passport_Identity_SelfieHelp: String { return self._s[1596]! } - public var Conversation_ClearAll: String { return self._s[1598]! } - public var TwoStepAuth_FloodError: String { return self._s[1600]! } + public var Passport_Email_EnterOtherEmail: String { return self._s[1591]! } + public var Login_InfoAvatarPhoto: String { return self._s[1592]! } + public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1593]! } + public var Tour_Title4: String { return self._s[1594]! } + public var Passport_Identity_Translation: String { return self._s[1595]! } + public var Login_TermsOfServiceLabel: String { return self._s[1597]! } + public var Passport_Language_it: String { return self._s[1598]! } + public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1599]! } + public var Passport_Identity_SelfieHelp: String { return self._s[1600]! } + public var Conversation_ClearAll: String { return self._s[1602]! } + public var TwoStepAuth_FloodError: String { return self._s[1604]! } public func PUSH_CHANNEL_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1601]!, self._r[1601]!, [_1]) + return formatWithArgumentRanges(self._s[1605]!, self._r[1605]!, [_1]) } - public var Paint_Delete: String { return self._s[1602]! } + public var Paint_Delete: String { return self._s[1606]! } public func Passport_AcceptHelp(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1603]!, self._r[1603]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1607]!, self._r[1607]!, [_1, _2]) } - public var Message_PinnedAudioMessage: String { return self._s[1604]! } + public var Message_PinnedAudioMessage: String { return self._s[1608]! } public func Watch_Time_ShortTodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1605]!, self._r[1605]!, [_0]) + return formatWithArgumentRanges(self._s[1609]!, self._r[1609]!, [_0]) } - public var Notification_Mute1hMin: String { return self._s[1606]! } - public var Notifications_GroupNotificationsSound: String { return self._s[1607]! } - public var SocksProxySetup_ShareProxyList: String { return self._s[1608]! } - public var Conversation_MessageEditedLabel: String { return self._s[1609]! } - public var Notification_Exceptions_AlwaysOff: String { return self._s[1610]! } + public var Notification_Mute1hMin: String { return self._s[1610]! } + public var Notifications_GroupNotificationsSound: String { return self._s[1611]! } + public var SocksProxySetup_ShareProxyList: String { return self._s[1612]! } + public var Conversation_MessageEditedLabel: String { return self._s[1613]! } + public var Notification_Exceptions_AlwaysOff: String { return self._s[1614]! } public func Channel_AdminLog_MessageAdmin(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1611]!, self._r[1611]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1615]!, self._r[1615]!, [_0, _1, _2]) } - public var NetworkUsageSettings_ResetStats: String { return self._s[1612]! } + public var NetworkUsageSettings_ResetStats: String { return self._s[1616]! } public func PUSH_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1613]!, self._r[1613]!, [_1]) + return formatWithArgumentRanges(self._s[1617]!, self._r[1617]!, [_1]) } - public var AccessDenied_LocationTracking: String { return self._s[1614]! } - public var Month_GenOctober: String { return self._s[1615]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1616]! } - public var EnterPasscode_EnterPasscode: String { return self._s[1617]! } - public var MediaPicker_TimerTooltip: String { return self._s[1619]! } - public var SharedMedia_TitleAll: String { return self._s[1620]! } - public var Conversation_RestrictedMedia: String { return self._s[1623]! } - public var AccessDenied_PhotosRestricted: String { return self._s[1624]! } - public var ChangePhoneNumberCode_Called: String { return self._s[1626]! } + public var AccessDenied_LocationTracking: String { return self._s[1618]! } + public var Month_GenOctober: String { return self._s[1619]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1620]! } + public var EnterPasscode_EnterPasscode: String { return self._s[1621]! } + public var MediaPicker_TimerTooltip: String { return self._s[1623]! } + public var SharedMedia_TitleAll: String { return self._s[1624]! } + public var Conversation_RestrictedMedia: String { return self._s[1627]! } + public var AccessDenied_PhotosRestricted: String { return self._s[1628]! } + public var ChangePhoneNumberCode_Called: String { return self._s[1630]! } public func Notification_PinnedDocumentMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1627]!, self._r[1627]!, [_0]) + return formatWithArgumentRanges(self._s[1631]!, self._r[1631]!, [_0]) } - public var Conversation_SavedMessages: String { return self._s[1630]! } - public var Your_cards_expiration_month_is_invalid: String { return self._s[1632]! } - public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1633]! } + public var Conversation_SavedMessages: String { return self._s[1634]! } + public var Your_cards_expiration_month_is_invalid: String { return self._s[1636]! } + public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1637]! } public func Target_ShareGameConfirmationGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1635]!, self._r[1635]!, [_0]) + return formatWithArgumentRanges(self._s[1639]!, self._r[1639]!, [_0]) } - public var ReportPeer_AlertSuccess: String { return self._s[1636]! } - public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1637]! } + public var ReportPeer_AlertSuccess: String { return self._s[1640]! } + public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1641]! } public func InstantPage_RelatedArticleAuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1638]!, self._r[1638]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1642]!, self._r[1642]!, [_1, _2]) } - public var Checkout_PasswordEntry_Title: String { return self._s[1639]! } - public var PhotoEditor_FadeTool: String { return self._s[1640]! } - public var Privacy_ContactsReset: String { return self._s[1641]! } + public var Checkout_PasswordEntry_Title: String { return self._s[1643]! } + public var PhotoEditor_FadeTool: String { return self._s[1644]! } + public var Privacy_ContactsReset: String { return self._s[1645]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1643]!, self._r[1643]!, [_0]) + return formatWithArgumentRanges(self._s[1647]!, self._r[1647]!, [_0]) } - public var Message_PinnedVideoMessage: String { return self._s[1644]! } - public var ChatList_Mute: String { return self._s[1645]! } - public var Permissions_CellularDataText_v0: String { return self._s[1646]! } - public var ShareMenu_SelectChats: String { return self._s[1648]! } - public var MusicPlayer_VoiceNote: String { return self._s[1649]! } - public var Conversation_RestrictedText: String { return self._s[1650]! } - public var TwoStepAuth_DisableSuccess: String { return self._s[1651]! } - public var Cache_Videos: String { return self._s[1652]! } - public var FeatureDisabled_Oops: String { return self._s[1654]! } - public var Passport_Address_PostcodePlaceholder: String { return self._s[1655]! } - public var Stickers_GroupStickersHelp: String { return self._s[1656]! } - public var GroupPermission_NoSendPolls: String { return self._s[1657]! } - public var Message_VideoExpired: String { return self._s[1659]! } - public var Notifications_Badge: String { return self._s[1660]! } - public var GroupInfo_GroupHistoryVisible: String { return self._s[1661]! } - public var CreatePoll_OptionPlaceholder: String { return self._s[1662]! } - public var Username_InvalidTooShort: String { return self._s[1663]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[1664]! } - public var Channel_AdminLog_PinMessages: String { return self._s[1665]! } + public var Message_PinnedVideoMessage: String { return self._s[1648]! } + public var ChatList_Mute: String { return self._s[1649]! } + public var Permissions_CellularDataText_v0: String { return self._s[1650]! } + public var ShareMenu_SelectChats: String { return self._s[1652]! } + public var MusicPlayer_VoiceNote: String { return self._s[1653]! } + public var Conversation_RestrictedText: String { return self._s[1654]! } + public var TwoStepAuth_DisableSuccess: String { return self._s[1655]! } + public var Cache_Videos: String { return self._s[1656]! } + public var FeatureDisabled_Oops: String { return self._s[1658]! } + public var Passport_Address_PostcodePlaceholder: String { return self._s[1659]! } + public var Stickers_GroupStickersHelp: String { return self._s[1660]! } + public var GroupPermission_NoSendPolls: String { return self._s[1661]! } + public var Message_VideoExpired: String { return self._s[1663]! } + public var Notifications_Badge: String { return self._s[1664]! } + public var GroupInfo_GroupHistoryVisible: String { return self._s[1665]! } + public var CreatePoll_OptionPlaceholder: String { return self._s[1666]! } + public var Username_InvalidTooShort: String { return self._s[1667]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[1668]! } + public var Channel_AdminLog_PinMessages: String { return self._s[1669]! } public func Notification_MessageLifetimeRemoved(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1666]!, self._r[1666]!, [_1]) + return formatWithArgumentRanges(self._s[1670]!, self._r[1670]!, [_1]) } - public var Permissions_SiriAllowInSettings_v0: String { return self._s[1667]! } - public var Conversation_DefaultRestrictedText: String { return self._s[1668]! } - public var SharedMedia_CategoryDocs: String { return self._s[1671]! } + public var Permissions_SiriAllowInSettings_v0: String { return self._s[1671]! } + public var Conversation_DefaultRestrictedText: String { return self._s[1672]! } + public var SharedMedia_CategoryDocs: String { return self._s[1675]! } public func PUSH_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1672]!, self._r[1672]!, [_1]) + return formatWithArgumentRanges(self._s[1676]!, self._r[1676]!, [_1]) } public func Notification_MessageLifetimeChangedOutgoing(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1674]!, self._r[1674]!, [_1]) + return formatWithArgumentRanges(self._s[1678]!, self._r[1678]!, [_1]) } - public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[1675]! } + public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[1679]! } public func Time_MonthOfYear_m12(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1676]!, self._r[1676]!, [_0]) + return formatWithArgumentRanges(self._s[1680]!, self._r[1680]!, [_0]) } - public var ChatSettings_PrivateChats: String { return self._s[1677]! } - public var Channel_UpdatePhotoItem: String { return self._s[1678]! } - public var GroupInfo_LeftStatus: String { return self._s[1679]! } - public var Watch_MessageView_Forward: String { return self._s[1681]! } - public var ReportPeer_ReasonChildAbuse: String { return self._s[1682]! } - public var Cache_ClearEmpty: String { return self._s[1684]! } - public var Localization_LanguageName: String { return self._s[1685]! } - public var WebSearch_GIFs: String { return self._s[1686]! } - public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1687]! } - public var Username_InvalidStartsWithNumber: String { return self._s[1688]! } - public var Common_Back: String { return self._s[1689]! } - public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[1690]! } + public var ChatSettings_PrivateChats: String { return self._s[1681]! } + public var Channel_UpdatePhotoItem: String { return self._s[1682]! } + public var GroupInfo_LeftStatus: String { return self._s[1683]! } + public var Watch_MessageView_Forward: String { return self._s[1685]! } + public var ReportPeer_ReasonChildAbuse: String { return self._s[1686]! } + public var Cache_ClearEmpty: String { return self._s[1688]! } + public var Localization_LanguageName: String { return self._s[1689]! } + public var WebSearch_GIFs: String { return self._s[1690]! } + public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1691]! } + public var Username_InvalidStartsWithNumber: String { return self._s[1692]! } + public var Common_Back: String { return self._s[1693]! } + public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[1694]! } public func PUSH_CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1691]!, self._r[1691]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1695]!, self._r[1695]!, [_1, _2]) } - public var Passport_Email_Help: String { return self._s[1692]! } - public var Watch_Conversation_Reply: String { return self._s[1694]! } - public var Conversation_EditingMessageMediaChange: String { return self._s[1696]! } - public var Passport_Identity_IssueDatePlaceholder: String { return self._s[1697]! } - public var Channel_BanUser_Unban: String { return self._s[1699]! } - public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[1700]! } - public var Group_Username_CreatePublicLinkHelp: String { return self._s[1701]! } - public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[1703]! } - public var Passport_Identity_Name: String { return self._s[1704]! } - public var GroupRemoved_ViewUserInfo: String { return self._s[1705]! } - public var Conversation_BlockUser: String { return self._s[1706]! } - public var Month_GenJanuary: String { return self._s[1707]! } - public var ChatSettings_TextSize: String { return self._s[1708]! } - public var Notification_PassportValuePhone: String { return self._s[1709]! } - public var Passport_Language_ne: String { return self._s[1710]! } - public var Notification_CallBack: String { return self._s[1711]! } - public var TwoStepAuth_EmailHelp: String { return self._s[1712]! } + public var Passport_Email_Help: String { return self._s[1696]! } + public var Watch_Conversation_Reply: String { return self._s[1698]! } + public var Conversation_EditingMessageMediaChange: String { return self._s[1700]! } + public var Passport_Identity_IssueDatePlaceholder: String { return self._s[1701]! } + public var Channel_BanUser_Unban: String { return self._s[1703]! } + public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[1704]! } + public var Group_Username_CreatePublicLinkHelp: String { return self._s[1705]! } + public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[1707]! } + public var Passport_Identity_Name: String { return self._s[1708]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[1709]! } + public var Conversation_BlockUser: String { return self._s[1710]! } + public var Month_GenJanuary: String { return self._s[1711]! } + public var ChatSettings_TextSize: String { return self._s[1712]! } + public var Notification_PassportValuePhone: String { return self._s[1713]! } + public var Passport_Language_ne: String { return self._s[1714]! } + public var Notification_CallBack: String { return self._s[1715]! } + public var TwoStepAuth_EmailHelp: String { return self._s[1716]! } public func Time_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1713]!, self._r[1713]!, [_0]) + return formatWithArgumentRanges(self._s[1717]!, self._r[1717]!, [_0]) } - public var Channel_Info_Management: String { return self._s[1714]! } - public var Passport_FieldIdentityUploadHelp: String { return self._s[1715]! } - public var Stickers_FrequentlyUsed: String { return self._s[1716]! } - public var Channel_BanUser_PermissionSendMessages: String { return self._s[1717]! } - public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1719]! } + public var Channel_Info_Management: String { return self._s[1718]! } + public var Passport_FieldIdentityUploadHelp: String { return self._s[1719]! } + public var Stickers_FrequentlyUsed: String { return self._s[1720]! } + public var Channel_BanUser_PermissionSendMessages: String { return self._s[1721]! } + public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1723]! } public func LOCAL_CHANNEL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1720]!, self._r[1720]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[1724]!, self._r[1724]!, [_1, "\(_2)"]) } - public var Passport_Address_EditResidentialAddress: String { return self._s[1721]! } - public var PrivacyPolicy_DeclineTitle: String { return self._s[1722]! } - public var CreatePoll_TextHeader: String { return self._s[1723]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[1725]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[1726]! } + public var CreatePoll_TextHeader: String { return self._s[1727]! } public func Checkout_SavePasswordTimeoutAndTouchId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1724]!, self._r[1724]!, [_0]) + return formatWithArgumentRanges(self._s[1728]!, self._r[1728]!, [_0]) } - public var PhotoEditor_QualityMedium: String { return self._s[1725]! } - public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[1726]! } - public var Conversation_StatusKickedFromChannel: String { return self._s[1728]! } - public var CheckoutInfo_ReceiverInfoName: String { return self._s[1729]! } - public var Group_ErrorSendRestrictedStickers: String { return self._s[1730]! } + public var PhotoEditor_QualityMedium: String { return self._s[1729]! } + public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[1730]! } + public var Conversation_StatusKickedFromChannel: String { return self._s[1732]! } + public var CheckoutInfo_ReceiverInfoName: String { return self._s[1733]! } + public var Group_ErrorSendRestrictedStickers: String { return self._s[1734]! } public func Conversation_RestrictedInlineTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1731]!, self._r[1731]!, [_0]) + return formatWithArgumentRanges(self._s[1735]!, self._r[1735]!, [_0]) } - public var Conversation_LinkDialogOpen: String { return self._s[1733]! } + public var Conversation_LinkDialogOpen: String { return self._s[1737]! } public func PUSH_CHAT_MESSAGES(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1734]!, self._r[1734]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1738]!, self._r[1738]!, [_1, _2, _3]) } - public var Settings_Username: String { return self._s[1735]! } - public var Wallpaper_Wallpaper: String { return self._s[1737]! } - public var SocksProxySetup_UseProxy: String { return self._s[1739]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[1740]! } - public var MessageTimer_Forever: String { return self._s[1741]! } - public var Privacy_Calls_WhoCanCallMe: String { return self._s[1742]! } - public var PhotoEditor_DiscardChanges: String { return self._s[1743]! } - public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1744]! } - public var Passport_Language_da: String { return self._s[1745]! } - public var SocksProxySetup_PortPlaceholder: String { return self._s[1746]! } + public var Settings_Username: String { return self._s[1739]! } + public var Wallpaper_Wallpaper: String { return self._s[1741]! } + public var SocksProxySetup_UseProxy: String { return self._s[1743]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[1744]! } + public var MessageTimer_Forever: String { return self._s[1745]! } + public var Privacy_Calls_WhoCanCallMe: String { return self._s[1746]! } + public var PhotoEditor_DiscardChanges: String { return self._s[1747]! } + public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1748]! } + public var Passport_Language_da: String { return self._s[1749]! } + public var SocksProxySetup_PortPlaceholder: String { return self._s[1750]! } public func SecretGIF_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1747]!, self._r[1747]!, [_0]) + return formatWithArgumentRanges(self._s[1751]!, self._r[1751]!, [_0]) } - public var Passport_Address_EditPassportRegistration: String { return self._s[1748]! } + public var Passport_Address_EditPassportRegistration: String { return self._s[1752]! } public func Channel_AdminLog_MessageChangedGroupAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1750]!, self._r[1750]!, [_0]) + return formatWithArgumentRanges(self._s[1754]!, self._r[1754]!, [_0]) } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[1752]! } - public var Conversation_SearchByName_Prefix: String { return self._s[1753]! } - public var Conversation_PinnedPoll: String { return self._s[1754]! } - public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[1755]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[1756]! } + public var Conversation_SearchByName_Prefix: String { return self._s[1757]! } + public var Conversation_PinnedPoll: String { return self._s[1758]! } + public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[1759]! } public func PUSH_ENCRYPTION_ACCEPT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1756]!, self._r[1756]!, [_1]) + return formatWithArgumentRanges(self._s[1760]!, self._r[1760]!, [_1]) } - public var WallpaperSearch_ColorPurple: String { return self._s[1757]! } - public var Cache_ByPeerHeader: String { return self._s[1758]! } + public var WallpaperSearch_ColorPurple: String { return self._s[1761]! } + public var Cache_ByPeerHeader: String { return self._s[1762]! } public func Conversation_EncryptedPlaceholderTitleIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1759]!, self._r[1759]!, [_0]) + return formatWithArgumentRanges(self._s[1763]!, self._r[1763]!, [_0]) } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[1760]! } - public var Notification_PinnedMessage: String { return self._s[1763]! } - public var Contacts_SortBy: String { return self._s[1765]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[1764]! } + public var Notification_PinnedMessage: String { return self._s[1767]! } + public var Contacts_SortBy: String { return self._s[1769]! } public func PUSH_CHANNEL_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1766]!, self._r[1766]!, [_1]) + return formatWithArgumentRanges(self._s[1770]!, self._r[1770]!, [_1]) } public func PUSH_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1768]!, self._r[1768]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1772]!, self._r[1772]!, [_1, _2]) } - public var Call_EncryptionKey_Title: String { return self._s[1769]! } - public var Watch_UserInfo_Service: String { return self._s[1770]! } - public var Conversation_Unpin: String { return self._s[1773]! } - public var CancelResetAccount_Title: String { return self._s[1774]! } - public var Map_LiveLocationFor15Minutes: String { return self._s[1775]! } + public var Call_EncryptionKey_Title: String { return self._s[1773]! } + public var Watch_UserInfo_Service: String { return self._s[1774]! } + public var Conversation_Unpin: String { return self._s[1777]! } + public var CancelResetAccount_Title: String { return self._s[1778]! } + public var Map_LiveLocationFor15Minutes: String { return self._s[1779]! } public func Time_PreciseDate_m8(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1777]!, self._r[1777]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1781]!, self._r[1781]!, [_1, _2, _3]) } - public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[1778]! } - public var CallSettings_Title: String { return self._s[1779]! } - public var PasscodeSettings_EncryptDataHelp: String { return self._s[1781]! } - public var AutoDownloadSettings_Contacts: String { return self._s[1782]! } - public var Passport_Identity_DocumentDetails: String { return self._s[1783]! } - public var LoginPassword_PasswordHelp: String { return self._s[1784]! } - public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[1785]! } - public var Checkout_TotalPaidAmount: String { return self._s[1786]! } + public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[1782]! } + public var CallSettings_Title: String { return self._s[1783]! } + public var PasscodeSettings_EncryptDataHelp: String { return self._s[1785]! } + public var AutoDownloadSettings_Contacts: String { return self._s[1786]! } + public var Passport_Identity_DocumentDetails: String { return self._s[1787]! } + public var LoginPassword_PasswordHelp: String { return self._s[1788]! } + public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[1789]! } + public var Checkout_TotalPaidAmount: String { return self._s[1790]! } public func FileSize_KB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1787]!, self._r[1787]!, [_0]) + return formatWithArgumentRanges(self._s[1791]!, self._r[1791]!, [_0]) } - public var PasscodeSettings_ChangePasscode: String { return self._s[1788]! } - public var Conversation_SecretLinkPreviewAlert: String { return self._s[1790]! } - public var Privacy_SecretChatsLinkPreviews: String { return self._s[1791]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[1792]! } + public var Conversation_SecretLinkPreviewAlert: String { return self._s[1794]! } + public var Privacy_SecretChatsLinkPreviews: String { return self._s[1795]! } public func PUSH_CHANNEL_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1792]!, self._r[1792]!, [_1]) + return formatWithArgumentRanges(self._s[1796]!, self._r[1796]!, [_1]) } - public var Contacts_InviteFriends: String { return self._s[1794]! } - public var Map_ChooseLocationTitle: String { return self._s[1795]! } - public var Conversation_StopPoll: String { return self._s[1797]! } - public var Calls_RatingFeedback: String { return self._s[1798]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[1799]! } - public var NotificationsSound_Pulse: String { return self._s[1800]! } - public var Watch_LastSeen_Lately: String { return self._s[1801]! } - public var Widget_NoUsers: String { return self._s[1804]! } - public var Conversation_UnvotePoll: String { return self._s[1805]! } - public var NotificationsSound_Circles: String { return self._s[1807]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[1809]! } - public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[1810]! } - public var Passport_Identity_CountryPlaceholder: String { return self._s[1812]! } - public var Conversation_FileDropbox: String { return self._s[1814]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[1815]! } - public var Tour_Text3: String { return self._s[1817]! } - public var Login_ResetAccountProtected_Title: String { return self._s[1819]! } - public var GroupPermission_NoSendMessages: String { return self._s[1820]! } - public var WallpaperSearch_ColorTitle: String { return self._s[1821]! } - public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[1822]! } + public var Contacts_InviteFriends: String { return self._s[1798]! } + public var Map_ChooseLocationTitle: String { return self._s[1799]! } + public var Conversation_StopPoll: String { return self._s[1801]! } + public var Calls_RatingFeedback: String { return self._s[1802]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[1803]! } + public var NotificationsSound_Pulse: String { return self._s[1804]! } + public var Watch_LastSeen_Lately: String { return self._s[1805]! } + public var Widget_NoUsers: String { return self._s[1808]! } + public var Conversation_UnvotePoll: String { return self._s[1809]! } + public var NotificationsSound_Circles: String { return self._s[1811]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[1813]! } + public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[1814]! } + public var Passport_Identity_CountryPlaceholder: String { return self._s[1816]! } + public var Conversation_FileDropbox: String { return self._s[1818]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[1819]! } + public var Tour_Text3: String { return self._s[1821]! } + public var Login_ResetAccountProtected_Title: String { return self._s[1823]! } + public var GroupPermission_NoSendMessages: String { return self._s[1824]! } + public var WallpaperSearch_ColorTitle: String { return self._s[1825]! } + public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[1826]! } public func Conversation_LiveLocationYouAnd(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1824]!, self._r[1824]!, [_0]) - } - public var GroupInfo_AddParticipantTitle: String { return self._s[1825]! } - public var Checkout_ShippingOption_Title: String { return self._s[1826]! } - public var ChatSettings_AutoDownloadTitle: String { return self._s[1827]! } - public func DialogList_SingleTypingSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1828]!, self._r[1828]!, [_0]) } - public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[1829]! } - public var Appearance_PreviewIncomingText: String { return self._s[1831]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[1832]! } - public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[1833]! } - public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[1834]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[1835]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[1836]! } - public var GroupInfo_SetGroupPhotoStop: String { return self._s[1837]! } - public var Notification_SecretChatScreenshot: String { return self._s[1838]! } - public var AccessDenied_Wallpapers: String { return self._s[1839]! } - public var Passport_Address_City: String { return self._s[1841]! } - public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[1842]! } - public var SocksProxySetup_SecretPlaceholder: String { return self._s[1843]! } - public var AccessDenied_LocationDisabled: String { return self._s[1844]! } - public var SocksProxySetup_HostnamePlaceholder: String { return self._s[1846]! } - public var GroupInfo_Sound: String { return self._s[1847]! } - public var Stickers_RemoveFromFavorites: String { return self._s[1848]! } - public var Contacts_Title: String { return self._s[1849]! } - public var Passport_Language_fr: String { return self._s[1850]! } - public var Notifications_ResetAllNotifications: String { return self._s[1851]! } - public var PrivacySettings_SecurityTitle: String { return self._s[1854]! } - public var Checkout_NewCard_Title: String { return self._s[1855]! } - public var Login_HaveNotReceivedCodeInternal: String { return self._s[1856]! } - public var Conversation_ForwardChats: String { return self._s[1857]! } - public var Settings_FAQ: String { return self._s[1860]! } - public var AutoDownloadSettings_DocumentsTitle: String { return self._s[1861]! } - public var Conversation_ContextMenuForward: String { return self._s[1862]! } - public var PrivacyPolicy_Title: String { return self._s[1867]! } - public var Notifications_TextTone: String { return self._s[1868]! } - public var Profile_CreateNewContact: String { return self._s[1869]! } - public var AutoNightTheme_AutomaticSection: String { return self._s[1871]! } - public var Channel_Username_InvalidCharacters: String { return self._s[1873]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[1829]! } + public var Checkout_ShippingOption_Title: String { return self._s[1830]! } + public var ChatSettings_AutoDownloadTitle: String { return self._s[1831]! } + public func DialogList_SingleTypingSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1832]!, self._r[1832]!, [_0]) + } + public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[1833]! } + public var Appearance_PreviewIncomingText: String { return self._s[1835]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[1836]! } + public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[1837]! } + public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[1838]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[1839]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[1840]! } + public var GroupInfo_SetGroupPhotoStop: String { return self._s[1841]! } + public var Notification_SecretChatScreenshot: String { return self._s[1842]! } + public var AccessDenied_Wallpapers: String { return self._s[1843]! } + public var Passport_Address_City: String { return self._s[1845]! } + public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[1846]! } + public var SocksProxySetup_SecretPlaceholder: String { return self._s[1847]! } + public var AccessDenied_LocationDisabled: String { return self._s[1848]! } + public var SocksProxySetup_HostnamePlaceholder: String { return self._s[1850]! } + public var GroupInfo_Sound: String { return self._s[1851]! } + public var Stickers_RemoveFromFavorites: String { return self._s[1852]! } + public var Contacts_Title: String { return self._s[1853]! } + public var Passport_Language_fr: String { return self._s[1854]! } + public var Notifications_ResetAllNotifications: String { return self._s[1855]! } + public var PrivacySettings_SecurityTitle: String { return self._s[1858]! } + public var Checkout_NewCard_Title: String { return self._s[1859]! } + public var Login_HaveNotReceivedCodeInternal: String { return self._s[1860]! } + public var Conversation_ForwardChats: String { return self._s[1861]! } + public var Settings_FAQ: String { return self._s[1864]! } + public var AutoDownloadSettings_DocumentsTitle: String { return self._s[1865]! } + public var Conversation_ContextMenuForward: String { return self._s[1866]! } + public var PrivacyPolicy_Title: String { return self._s[1871]! } + public var Notifications_TextTone: String { return self._s[1872]! } + public var Profile_CreateNewContact: String { return self._s[1873]! } + public var AutoNightTheme_AutomaticSection: String { return self._s[1875]! } + public var Channel_Username_InvalidCharacters: String { return self._s[1877]! } public func Channel_AdminLog_MessageChangedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1874]!, self._r[1874]!, [_0]) + return formatWithArgumentRanges(self._s[1878]!, self._r[1878]!, [_0]) } - public var PrivacySettings_LastSeenTitle: String { return self._s[1875]! } - public var Channel_AdminLog_CanInviteUsers: String { return self._s[1876]! } - public var Conversation_MessageDeliveryFailed: String { return self._s[1877]! } - public var Watch_ChatList_NoConversationsText: String { return self._s[1878]! } - public var Bot_Unblock: String { return self._s[1879]! } - public var TextFormat_Italic: String { return self._s[1880]! } - public var WallpaperSearch_ColorPink: String { return self._s[1881]! } - public var Weekday_Wednesday: String { return self._s[1882]! } - public var Settings_About_Help: String { return self._s[1883]! } - public var SearchImages_Title: String { return self._s[1884]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[1885]! } - public var ExplicitContent_AlertTitle: String { return self._s[1886]! } + public var PrivacySettings_LastSeenTitle: String { return self._s[1879]! } + public var Channel_AdminLog_CanInviteUsers: String { return self._s[1880]! } + public var Conversation_MessageDeliveryFailed: String { return self._s[1881]! } + public var Watch_ChatList_NoConversationsText: String { return self._s[1882]! } + public var Bot_Unblock: String { return self._s[1883]! } + public var TextFormat_Italic: String { return self._s[1884]! } + public var WallpaperSearch_ColorPink: String { return self._s[1885]! } + public var Weekday_Wednesday: String { return self._s[1886]! } + public var Settings_About_Help: String { return self._s[1887]! } + public var SearchImages_Title: String { return self._s[1888]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[1889]! } + public var ExplicitContent_AlertTitle: String { return self._s[1890]! } public func Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1887]!, self._r[1887]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1891]!, self._r[1891]!, [_1, _2, _3]) } - public var Weekday_Thursday: String { return self._s[1888]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[1889]! } - public var Channel_Members_AddMembersHelp: String { return self._s[1890]! } + public var Weekday_Thursday: String { return self._s[1892]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[1893]! } + public var Channel_Members_AddMembersHelp: String { return self._s[1894]! } public func Checkout_SavePasswordTimeout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1891]!, self._r[1891]!, [_0]) + return formatWithArgumentRanges(self._s[1895]!, self._r[1895]!, [_0]) } - public var Passport_RequestedInformation: String { return self._s[1892]! } - public var Login_PhoneAndCountryHelp: String { return self._s[1893]! } - public var Conversation_EncryptionProcessing: String { return self._s[1895]! } - public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[1896]! } - public var PhotoEditor_EnhanceTool: String { return self._s[1898]! } - public var Channel_Setup_Title: String { return self._s[1899]! } - public var Conversation_SearchPlaceholder: String { return self._s[1900]! } - public var AccessDenied_LocationAlwaysDenied: String { return self._s[1901]! } - public var Checkout_ErrorGeneric: String { return self._s[1902]! } - public var Passport_Language_hu: String { return self._s[1903]! } + public var Passport_RequestedInformation: String { return self._s[1896]! } + public var Login_PhoneAndCountryHelp: String { return self._s[1897]! } + public var Conversation_EncryptionProcessing: String { return self._s[1899]! } + public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[1900]! } + public var PhotoEditor_EnhanceTool: String { return self._s[1902]! } + public var Channel_Setup_Title: String { return self._s[1903]! } + public var Conversation_SearchPlaceholder: String { return self._s[1904]! } + public var AccessDenied_LocationAlwaysDenied: String { return self._s[1905]! } + public var Checkout_ErrorGeneric: String { return self._s[1906]! } + public var Passport_Language_hu: String { return self._s[1907]! } public func Passport_Identity_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1905]!, self._r[1905]!, [_0]) + return formatWithArgumentRanges(self._s[1909]!, self._r[1909]!, [_0]) } public func PUSH_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1908]!, self._r[1908]!, [_1]) + return formatWithArgumentRanges(self._s[1912]!, self._r[1912]!, [_1]) } - public var Conversation_CloudStorageInfo_Title: String { return self._s[1909]! } - public var PhotoEditor_CropAspectRatioSquare: String { return self._s[1910]! } + public var Conversation_CloudStorageInfo_Title: String { return self._s[1913]! } + public var PhotoEditor_CropAspectRatioSquare: String { return self._s[1914]! } public func Notification_Exceptions_MutedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1911]!, self._r[1911]!, [_0]) - } - public var Conversation_ClearPrivateHistory: String { return self._s[1912]! } - public var ContactInfo_PhoneLabelHome: String { return self._s[1913]! } - public var PrivacySettings_LastSeenContacts: String { return self._s[1914]! } - public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1915]!, self._r[1915]!, [_0]) } - public var Passport_Language_cs: String { return self._s[1916]! } - public var Message_PinnedAnimationMessage: String { return self._s[1918]! } - public var Passport_Identity_ReverseSideHelp: String { return self._s[1920]! } - public var Embed_PlayingInPIP: String { return self._s[1922]! } - public var AutoNightTheme_ScheduleSection: String { return self._s[1923]! } + public var Conversation_ClearPrivateHistory: String { return self._s[1916]! } + public var ContactInfo_PhoneLabelHome: String { return self._s[1917]! } + public var PrivacySettings_LastSeenContacts: String { return self._s[1918]! } + public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1919]!, self._r[1919]!, [_0]) + } + public var Passport_Language_cs: String { return self._s[1920]! } + public var Message_PinnedAnimationMessage: String { return self._s[1922]! } + public var Passport_Identity_ReverseSideHelp: String { return self._s[1924]! } + public var Embed_PlayingInPIP: String { return self._s[1926]! } + public var AutoNightTheme_ScheduleSection: String { return self._s[1927]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1924]!, self._r[1924]!, [_0]) + return formatWithArgumentRanges(self._s[1928]!, self._r[1928]!, [_0]) } - public var MediaPicker_LivePhotoDescription: String { return self._s[1925]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[1929]! } public func Channel_AdminLog_MessageRestrictedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1926]!, self._r[1926]!, [_1]) + return formatWithArgumentRanges(self._s[1930]!, self._r[1930]!, [_1]) } - public var Notification_PaymentSent: String { return self._s[1927]! } - public var PhotoEditor_CurvesGreen: String { return self._s[1928]! } - public var SaveIncomingPhotosSettings_Title: String { return self._s[1929]! } + public var Notification_PaymentSent: String { return self._s[1931]! } + public var PhotoEditor_CurvesGreen: String { return self._s[1932]! } + public var SaveIncomingPhotosSettings_Title: String { return self._s[1933]! } public func PUSH_MESSAGE_SCREENSHOT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1932]!, self._r[1932]!, [_1]) + return formatWithArgumentRanges(self._s[1936]!, self._r[1936]!, [_1]) } public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1933]!, self._r[1933]!, [_1]) + return formatWithArgumentRanges(self._s[1937]!, self._r[1937]!, [_1]) } public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1934]!, self._r[1934]!, [_1]) + return formatWithArgumentRanges(self._s[1938]!, self._r[1938]!, [_1]) } - public var NetworkUsageSettings_CallDataSection: String { return self._s[1936]! } - public var PasscodeSettings_HelpTop: String { return self._s[1937]! } - public var Passport_Address_TypeRentalAgreement: String { return self._s[1938]! } - public var ReportPeer_ReasonOther_Placeholder: String { return self._s[1939]! } - public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[1940]! } - public var Call_Accept: String { return self._s[1942]! } - public var GroupRemoved_RemoveInfo: String { return self._s[1943]! } - public var Month_GenMarch: String { return self._s[1944]! } - public var PhotoEditor_ShadowsTool: String { return self._s[1945]! } - public var LoginPassword_Title: String { return self._s[1946]! } - public var Watch_Conversation_GroupInfo: String { return self._s[1947]! } - public var CallSettings_Always: String { return self._s[1948]! } - public var TwoStepAuth_SetupHint: String { return self._s[1949]! } - public var ConversationProfile_UsersTooMuchError: String { return self._s[1950]! } - public var Login_PhoneTitle: String { return self._s[1951]! } - public var Passport_FieldPhoneHelp: String { return self._s[1952]! } - public var Weekday_ShortSunday: String { return self._s[1953]! } - public var Passport_InfoFAQ_URL: String { return self._s[1954]! } - public var ContactInfo_Job: String { return self._s[1956]! } - public var UserInfo_InviteBotToGroup: String { return self._s[1957]! } - public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[1958]! } - public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[1959]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[1961]! } - public var MediaPicker_AddCaption: String { return self._s[1962]! } - public var CallSettings_TabIconDescription: String { return self._s[1963]! } - public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[1964]! } - public var Passport_Identity_TypePersonalDetails: String { return self._s[1965]! } - public var DialogList_SearchSectionRecent: String { return self._s[1966]! } - public var PrivacyPolicy_DeclineMessage: String { return self._s[1967]! } - public var LastSeen_WithinAWeek: String { return self._s[1970]! } - public var ChannelMembers_GroupAdminsTitle: String { return self._s[1971]! } - public var Conversation_CloudStorage_ChatStatus: String { return self._s[1973]! } - public var Passport_Address_TypeResidentialAddress: String { return self._s[1974]! } - public var Conversation_StatusLeftGroup: String { return self._s[1975]! } - public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[1976]! } - public var GroupPermission_AddSuccess: String { return self._s[1978]! } - public var PhotoEditor_BlurToolRadial: String { return self._s[1980]! } - public var Conversation_ContextMenuCopy: String { return self._s[1981]! } - public var AccessDenied_CallMicrophone: String { return self._s[1982]! } + public var NetworkUsageSettings_CallDataSection: String { return self._s[1940]! } + public var PasscodeSettings_HelpTop: String { return self._s[1941]! } + public var Passport_Address_TypeRentalAgreement: String { return self._s[1942]! } + public var ReportPeer_ReasonOther_Placeholder: String { return self._s[1943]! } + public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[1944]! } + public var Call_Accept: String { return self._s[1946]! } + public var GroupRemoved_RemoveInfo: String { return self._s[1947]! } + public var Month_GenMarch: String { return self._s[1948]! } + public var PhotoEditor_ShadowsTool: String { return self._s[1949]! } + public var LoginPassword_Title: String { return self._s[1950]! } + public var Watch_Conversation_GroupInfo: String { return self._s[1951]! } + public var CallSettings_Always: String { return self._s[1952]! } + public var CallFeedback_Success: String { return self._s[1953]! } + public var TwoStepAuth_SetupHint: String { return self._s[1954]! } + public var ConversationProfile_UsersTooMuchError: String { return self._s[1955]! } + public var Login_PhoneTitle: String { return self._s[1956]! } + public var Passport_FieldPhoneHelp: String { return self._s[1957]! } + public var Weekday_ShortSunday: String { return self._s[1958]! } + public var Passport_InfoFAQ_URL: String { return self._s[1959]! } + public var ContactInfo_Job: String { return self._s[1961]! } + public var UserInfo_InviteBotToGroup: String { return self._s[1962]! } + public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[1963]! } + public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[1964]! } + public var CallFeedback_ReasonNoise: String { return self._s[1965]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[1967]! } + public var MediaPicker_AddCaption: String { return self._s[1968]! } + public var CallSettings_TabIconDescription: String { return self._s[1969]! } + public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[1970]! } + public var Passport_Identity_TypePersonalDetails: String { return self._s[1971]! } + public var DialogList_SearchSectionRecent: String { return self._s[1972]! } + public var PrivacyPolicy_DeclineMessage: String { return self._s[1973]! } + public var LastSeen_WithinAWeek: String { return self._s[1976]! } + public var ChannelMembers_GroupAdminsTitle: String { return self._s[1977]! } + public var Conversation_CloudStorage_ChatStatus: String { return self._s[1979]! } + public var Passport_Address_TypeResidentialAddress: String { return self._s[1980]! } + public var Conversation_StatusLeftGroup: String { return self._s[1981]! } + public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[1982]! } + public var GroupPermission_AddSuccess: String { return self._s[1984]! } + public var PhotoEditor_BlurToolRadial: String { return self._s[1986]! } + public var Conversation_ContextMenuCopy: String { return self._s[1987]! } + public var AccessDenied_CallMicrophone: String { return self._s[1988]! } public func Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1983]!, self._r[1983]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1989]!, self._r[1989]!, [_1, _2, _3]) } - public var Login_InvalidFirstNameError: String { return self._s[1984]! } - public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[1985]! } - public var Checkout_PaymentMethod_New: String { return self._s[1986]! } - public var ShareMenu_CopyShareLinkGame: String { return self._s[1987]! } - public var PhotoEditor_QualityTool: String { return self._s[1988]! } - public var Login_SendCodeViaSms: String { return self._s[1989]! } - public var Login_EmailNotConfiguredError: String { return self._s[1990]! } - public var PrivacyPolicy_Accept: String { return self._s[1991]! } - public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[1992]! } + public var Login_InvalidFirstNameError: String { return self._s[1990]! } + public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[1991]! } + public var Checkout_PaymentMethod_New: String { return self._s[1992]! } + public var ShareMenu_CopyShareLinkGame: String { return self._s[1993]! } + public var PhotoEditor_QualityTool: String { return self._s[1994]! } + public var Login_SendCodeViaSms: String { return self._s[1995]! } + public var Login_EmailNotConfiguredError: String { return self._s[1996]! } + public var PrivacyPolicy_Accept: String { return self._s[1997]! } + public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[1998]! } public func PUSH_CHAT_MESSAGE_TEXT(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1993]!, self._r[1993]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1999]!, self._r[1999]!, [_1, _2, _3]) } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[1994]! } - public var AutoNightTheme_Automatic: String { return self._s[1995]! } - public var Channel_Username_InvalidStartsWithNumber: String { return self._s[1996]! } - public var Privacy_ContactsSyncHelp: String { return self._s[1997]! } - public var Cache_Help: String { return self._s[1998]! } - public var Passport_Language_fa: String { return self._s[1999]! } - public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2000]! } - public var PrivacySettings_LastSeen: String { return self._s[2001]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2000]! } + public var AutoNightTheme_Automatic: String { return self._s[2001]! } + public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2002]! } + public var Privacy_ContactsSyncHelp: String { return self._s[2003]! } + public var Cache_Help: String { return self._s[2004]! } + public var Passport_Language_fa: String { return self._s[2005]! } + public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2006]! } + public var PrivacySettings_LastSeen: String { return self._s[2007]! } public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2002]!, self._r[2002]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2008]!, self._r[2008]!, [_0, _1]) } - public var Preview_SaveGif: String { return self._s[2006]! } - public var Profile_About: String { return self._s[2007]! } - public var Channel_About_Placeholder: String { return self._s[2008]! } - public var Login_InfoTitle: String { return self._s[2009]! } + public var Preview_SaveGif: String { return self._s[2012]! } + public var Profile_About: String { return self._s[2013]! } + public var Channel_About_Placeholder: String { return self._s[2014]! } + public var Login_InfoTitle: String { return self._s[2015]! } public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2010]!, self._r[2010]!, [_0]) + return formatWithArgumentRanges(self._s[2016]!, self._r[2016]!, [_0]) } - public var Watch_Suggestion_CantTalk: String { return self._s[2012]! } - public var ContactInfo_Title: String { return self._s[2013]! } - public var Media_ShareThisVideo: String { return self._s[2014]! } - public var Weekday_ShortFriday: String { return self._s[2015]! } - public var AccessDenied_Contacts: String { return self._s[2016]! } - public var Notification_CallIncomingShort: String { return self._s[2017]! } - public var Group_Setup_TypePublic: String { return self._s[2018]! } - public var Notifications_MessageNotificationsExceptions: String { return self._s[2019]! } - public var Notifications_Badge_IncludeChannels: String { return self._s[2020]! } - public var Notifications_MessageNotificationsPreview: String { return self._s[2023]! } - public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2024]! } - public var Group_ErrorAddTooMuchBots: String { return self._s[2025]! } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2026]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2027]! } - public var DialogList_Typing: String { return self._s[2028]! } - public var Checkout_Phone: String { return self._s[2031]! } - public var Login_InfoFirstNamePlaceholder: String { return self._s[2034]! } - public var Privacy_Calls_Integration: String { return self._s[2035]! } - public var Notifications_PermissionsAllow: String { return self._s[2036]! } - public var TwoStepAuth_AddHintDescription: String { return self._s[2040]! } - public var Settings_ChatSettings: String { return self._s[2041]! } + public var Watch_Suggestion_CantTalk: String { return self._s[2018]! } + public var ContactInfo_Title: String { return self._s[2019]! } + public var Media_ShareThisVideo: String { return self._s[2020]! } + public var Weekday_ShortFriday: String { return self._s[2021]! } + public var AccessDenied_Contacts: String { return self._s[2022]! } + public var Notification_CallIncomingShort: String { return self._s[2023]! } + public var Group_Setup_TypePublic: String { return self._s[2024]! } + public var Notifications_MessageNotificationsExceptions: String { return self._s[2025]! } + public var Notifications_Badge_IncludeChannels: String { return self._s[2026]! } + public var Notifications_MessageNotificationsPreview: String { return self._s[2029]! } + public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2030]! } + public var Group_ErrorAddTooMuchBots: String { return self._s[2031]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2032]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2033]! } + public var DialogList_Typing: String { return self._s[2034]! } + public var CallFeedback_IncludeLogs: String { return self._s[2036]! } + public var Checkout_Phone: String { return self._s[2038]! } + public var Login_InfoFirstNamePlaceholder: String { return self._s[2041]! } + public var Privacy_Calls_Integration: String { return self._s[2042]! } + public var Notifications_PermissionsAllow: String { return self._s[2043]! } + public var TwoStepAuth_AddHintDescription: String { return self._s[2047]! } + public var Settings_ChatSettings: String { return self._s[2048]! } public func Channel_AdminLog_MessageInvitedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2042]!, self._r[2042]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2049]!, self._r[2049]!, [_1, _2]) } - public var GroupRemoved_DeleteUser: String { return self._s[2044]! } + public var GroupRemoved_DeleteUser: String { return self._s[2051]! } public func Channel_AdminLog_PollStopped(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2045]!, self._r[2045]!, [_0]) + return formatWithArgumentRanges(self._s[2052]!, self._r[2052]!, [_0]) } public func PUSH_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2046]!, self._r[2046]!, [_1]) + return formatWithArgumentRanges(self._s[2053]!, self._r[2053]!, [_1]) } - public var Login_ContinueWithLocalization: String { return self._s[2047]! } - public var Watch_Message_ForwardedFrom: String { return self._s[2048]! } - public var TwoStepAuth_EnterEmailCode: String { return self._s[2050]! } - public var Conversation_Unblock: String { return self._s[2051]! } - public var PrivacySettings_DataSettings: String { return self._s[2052]! } - public var Notifications_InAppNotificationsVibrate: String { return self._s[2053]! } + public var Login_ContinueWithLocalization: String { return self._s[2054]! } + public var Watch_Message_ForwardedFrom: String { return self._s[2055]! } + public var TwoStepAuth_EnterEmailCode: String { return self._s[2057]! } + public var Conversation_Unblock: String { return self._s[2058]! } + public var PrivacySettings_DataSettings: String { return self._s[2059]! } + public var Notifications_InAppNotificationsVibrate: String { return self._s[2060]! } public func Privacy_GroupsAndChannels_InviteToChannelError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2054]!, self._r[2054]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2061]!, self._r[2061]!, [_0, _1]) } - public var PrivacySettings_Passcode: String { return self._s[2057]! } - public var Passport_Language_dz: String { return self._s[2058]! } - public var Passport_Language_tk: String { return self._s[2059]! } + public var PrivacySettings_Passcode: String { return self._s[2064]! } + public var Passport_Language_dz: String { return self._s[2065]! } + public var Passport_Language_tk: String { return self._s[2066]! } public func Login_EmailCodeSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2060]!, self._r[2060]!, [_0]) - } - public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2061]! } - public var Conversation_ContextMenuReply: String { return self._s[2062]! } - public var WallpaperSearch_ColorBrown: String { return self._s[2063]! } - public var Tour_Title1: String { return self._s[2064]! } - public var Conversation_ClearGroupHistory: String { return self._s[2066]! } - public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2067]!, self._r[2067]!, [_0]) } - public var Call_RateCall: String { return self._s[2068]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2069]! } - public var Passport_PasswordCompleteSetup: String { return self._s[2070]! } - public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2071]! } - public var UserInfo_LastNamePlaceholder: String { return self._s[2073]! } - public func Login_WillCallYou(_ _0: String) -> (String, [(Int, NSRange)]) { + public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2068]! } + public var Conversation_ContextMenuReply: String { return self._s[2069]! } + public var WallpaperSearch_ColorBrown: String { return self._s[2070]! } + public var Tour_Title1: String { return self._s[2071]! } + public var Conversation_ClearGroupHistory: String { return self._s[2073]! } + public var WallpaperPreview_Motion: String { return self._s[2074]! } + public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2075]!, self._r[2075]!, [_0]) } - public var Compose_Create: String { return self._s[2076]! } - public var Contacts_InviteToTelegram: String { return self._s[2077]! } - public var GroupInfo_Notifications: String { return self._s[2078]! } - public var Message_PinnedLiveLocationMessage: String { return self._s[2080]! } - public var Month_GenApril: String { return self._s[2081]! } - public var Appearance_AutoNightTheme: String { return self._s[2082]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[2084]! } - public var Login_CodeSentSms: String { return self._s[2086]! } + public var Call_RateCall: String { return self._s[2076]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2077]! } + public var Passport_PasswordCompleteSetup: String { return self._s[2078]! } + public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2079]! } + public var UserInfo_LastNamePlaceholder: String { return self._s[2081]! } + public func Login_WillCallYou(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2083]!, self._r[2083]!, [_0]) + } + public var Compose_Create: String { return self._s[2084]! } + public var Contacts_InviteToTelegram: String { return self._s[2085]! } + public var GroupInfo_Notifications: String { return self._s[2086]! } + public var Message_PinnedLiveLocationMessage: String { return self._s[2088]! } + public var Month_GenApril: String { return self._s[2089]! } + public var Appearance_AutoNightTheme: String { return self._s[2090]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[2092]! } + public var Login_CodeSentSms: String { return self._s[2094]! } public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2087]!, self._r[2087]!, [_0]) + return formatWithArgumentRanges(self._s[2095]!, self._r[2095]!, [_0]) } - public var EmptyGroupInfo_Line3: String { return self._s[2088]! } - public var Passport_Language_hr: String { return self._s[2089]! } + public var EmptyGroupInfo_Line3: String { return self._s[2096]! } + public var Passport_Language_hr: String { return self._s[2097]! } public func Channel_AdminLog_MessageRestrictedNewSetting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2090]!, self._r[2090]!, [_0]) + return formatWithArgumentRanges(self._s[2098]!, self._r[2098]!, [_0]) } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[2091]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2092]! } - public var Privacy_SecretChatsTitle: String { return self._s[2093]! } - public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2095]! } - public var GroupInfo_AddUserLeftError: String { return self._s[2096]! } - public var Preview_DeleteGif: String { return self._s[2097]! } - public var GroupInfo_Permissions_Exceptions: String { return self._s[2098]! } - public var Group_ErrorNotMutualContact: String { return self._s[2099]! } - public var Notification_MessageLifetime5s: String { return self._s[2100]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[2099]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2100]! } + public var Privacy_SecretChatsTitle: String { return self._s[2101]! } + public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2103]! } + public var GroupInfo_AddUserLeftError: String { return self._s[2104]! } + public var Preview_DeleteGif: String { return self._s[2105]! } + public var GroupInfo_Permissions_Exceptions: String { return self._s[2106]! } + public var Group_ErrorNotMutualContact: String { return self._s[2107]! } + public var Notification_MessageLifetime5s: String { return self._s[2108]! } public func Watch_LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2101]!, self._r[2101]!, [_0]) + return formatWithArgumentRanges(self._s[2109]!, self._r[2109]!, [_0]) } - public var Passport_Address_AddBankStatement: String { return self._s[2103]! } - public var Notification_CallIncoming: String { return self._s[2104]! } - public var Compose_NewGroupTitle: String { return self._s[2105]! } - public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2107]! } - public var Passport_Address_Postcode: String { return self._s[2109]! } + public var Passport_Address_AddBankStatement: String { return self._s[2111]! } + public var Notification_CallIncoming: String { return self._s[2112]! } + public var Compose_NewGroupTitle: String { return self._s[2113]! } + public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2115]! } + public var Passport_Address_Postcode: String { return self._s[2117]! } public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2110]!, self._r[2110]!, [_0]) + return formatWithArgumentRanges(self._s[2118]!, self._r[2118]!, [_0]) } - public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2111]! } - public var WallpaperColors_Title: String { return self._s[2112]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2113]! } - public var GroupPermission_Duration: String { return self._s[2114]! } + public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2119]! } + public var WallpaperColors_Title: String { return self._s[2120]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2121]! } + public var GroupPermission_Duration: String { return self._s[2122]! } public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2115]!, self._r[2115]!, [_0]) + return formatWithArgumentRanges(self._s[2123]!, self._r[2123]!, [_0]) } - public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2116]! } - public var Username_Placeholder: String { return self._s[2117]! } - public var Passport_FieldAddressUploadHelp: String { return self._s[2118]! } - public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2119]! } - public var Passport_PasswordDescription: String { return self._s[2121]! } - public var Channel_MessagePhotoUpdated: String { return self._s[2122]! } - public var MediaPicker_TapToUngroupDescription: String { return self._s[2123]! } - public var AttachmentMenu_PhotoOrVideo: String { return self._s[2124]! } - public var Conversation_ContextMenuMore: String { return self._s[2125]! } - public var Privacy_PaymentsClearInfo: String { return self._s[2126]! } - public var CallSettings_TabIcon: String { return self._s[2127]! } - public var KeyCommand_Find: String { return self._s[2128]! } - public var Message_PinnedGame: String { return self._s[2129]! } - public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2130]! } - public var Login_CallRequestState2: String { return self._s[2132]! } - public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2134]! } + public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2124]! } + public var Username_Placeholder: String { return self._s[2125]! } + public var CallFeedback_WhatWentWrong: String { return self._s[2126]! } + public var Passport_FieldAddressUploadHelp: String { return self._s[2127]! } + public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2128]! } + public var Passport_PasswordDescription: String { return self._s[2130]! } + public var Channel_MessagePhotoUpdated: String { return self._s[2131]! } + public var MediaPicker_TapToUngroupDescription: String { return self._s[2132]! } + public var AttachmentMenu_PhotoOrVideo: String { return self._s[2133]! } + public var Conversation_ContextMenuMore: String { return self._s[2134]! } + public var Privacy_PaymentsClearInfo: String { return self._s[2135]! } + public var CallSettings_TabIcon: String { return self._s[2136]! } + public var KeyCommand_Find: String { return self._s[2137]! } + public var Message_PinnedGame: String { return self._s[2138]! } + public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2139]! } + public var Login_CallRequestState2: String { return self._s[2141]! } + public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2143]! } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2136]!, self._r[2136]!, [_0]) + return formatWithArgumentRanges(self._s[2145]!, self._r[2145]!, [_0]) } - public var WallpaperPreview_Blurred: String { return self._s[2137]! } - public var Conversation_InstantPagePreview: String { return self._s[2138]! } + public var WallpaperPreview_Blurred: String { return self._s[2146]! } + public var Conversation_InstantPagePreview: String { return self._s[2147]! } public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2139]!, self._r[2139]!, [_0]) + return formatWithArgumentRanges(self._s[2148]!, self._r[2148]!, [_0]) } - public var SecretTimer_VideoDescription: String { return self._s[2142]! } - public var WallpaperSearch_ColorRed: String { return self._s[2143]! } - public var GroupPermission_NoPinMessages: String { return self._s[2144]! } - public var Passport_Language_es: String { return self._s[2145]! } - public var Permissions_ContactsAllow_v0: String { return self._s[2147]! } - public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2148]! } + public var SecretTimer_VideoDescription: String { return self._s[2151]! } + public var WallpaperSearch_ColorRed: String { return self._s[2152]! } + public var GroupPermission_NoPinMessages: String { return self._s[2153]! } + public var Passport_Language_es: String { return self._s[2154]! } + public var Permissions_ContactsAllow_v0: String { return self._s[2156]! } + public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2157]! } public func PUSH_CHAT_MESSAGE_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2149]!, self._r[2149]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2158]!, self._r[2158]!, [_1, _2]) } - public var WebPreview_GettingLinkInfo: String { return self._s[2150]! } - public var Watch_UserInfo_Unmute: String { return self._s[2151]! } - public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2152]! } - public var AccessDenied_CameraRestricted: String { return self._s[2154]! } + public var WebPreview_GettingLinkInfo: String { return self._s[2159]! } + public var Watch_UserInfo_Unmute: String { return self._s[2160]! } + public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2161]! } + public var AccessDenied_CameraRestricted: String { return self._s[2163]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2155]!, self._r[2155]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[2164]!, self._r[2164]!, ["\(_0)"]) } - public var ChatList_ReadAll: String { return self._s[2157]! } - public var Settings_CopyUsername: String { return self._s[2158]! } - public var Contacts_SearchLabel: String { return self._s[2159]! } - public var Map_OpenInYandexNavigator: String { return self._s[2161]! } - public var PasscodeSettings_EncryptData: String { return self._s[2162]! } - public var WallpaperSearch_ColorPrefix: String { return self._s[2163]! } - public var Notifications_GroupNotificationsPreview: String { return self._s[2164]! } - public var DialogList_AdNoticeAlert: String { return self._s[2165]! } - public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2167]! } - public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2168]! } - public var Localization_LanguageCustom: String { return self._s[2169]! } - public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2170]! } - public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2173]! } - public var Conversation_InfoGroup: String { return self._s[2174]! } - public var Compose_NewMessage: String { return self._s[2175]! } - public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2176]! } - public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2177]! } + public var ChatList_ReadAll: String { return self._s[2166]! } + public var Settings_CopyUsername: String { return self._s[2167]! } + public var Contacts_SearchLabel: String { return self._s[2168]! } + public var Map_OpenInYandexNavigator: String { return self._s[2170]! } + public var PasscodeSettings_EncryptData: String { return self._s[2171]! } + public var WallpaperSearch_ColorPrefix: String { return self._s[2172]! } + public var Notifications_GroupNotificationsPreview: String { return self._s[2173]! } + public var DialogList_AdNoticeAlert: String { return self._s[2174]! } + public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2176]! } + public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2177]! } + public var Localization_LanguageCustom: String { return self._s[2178]! } + public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2179]! } + public var CallFeedback_Title: String { return self._s[2180]! } + public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2183]! } + public var Conversation_InfoGroup: String { return self._s[2184]! } + public var Compose_NewMessage: String { return self._s[2185]! } + public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2186]! } + public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2187]! } public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2178]!, self._r[2178]!, [_0]) - } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2179]! } - public var Login_CancelSignUpConfirmation: String { return self._s[2180]! } - public var ChangePhoneNumberCode_Help: String { return self._s[2181]! } - public var PrivacySettings_DeleteAccountHelp: String { return self._s[2182]! } - public var Channel_BlackList_Title: String { return self._s[2183]! } - public var UserInfo_PhoneCall: String { return self._s[2184]! } - public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2186]! } - public var State_connecting: String { return self._s[2187]! } - public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2188]!, self._r[2188]!, [_0]) } - public var Notifications_GroupNotifications: String { return self._s[2189]! } - public var Passport_Identity_EditPassport: String { return self._s[2190]! } - public var EnterPasscode_RepeatNewPasscode: String { return self._s[2192]! } - public var Localization_EnglishLanguageName: String { return self._s[2193]! } - public var Share_AuthDescription: String { return self._s[2194]! } - public var Passport_Identity_Surname: String { return self._s[2195]! } - public var Compose_TokenListPlaceholder: String { return self._s[2196]! } - public var Passport_Identity_OneOfTypePassport: String { return self._s[2197]! } - public var Settings_AboutEmpty: String { return self._s[2198]! } - public var Conversation_Unmute: String { return self._s[2199]! } - public func PUSH_CONTACT_JOINED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2201]!, self._r[2201]!, [_1]) + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2189]! } + public var Login_CancelSignUpConfirmation: String { return self._s[2190]! } + public var ChangePhoneNumberCode_Help: String { return self._s[2191]! } + public var PrivacySettings_DeleteAccountHelp: String { return self._s[2192]! } + public var Channel_BlackList_Title: String { return self._s[2193]! } + public var UserInfo_PhoneCall: String { return self._s[2194]! } + public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2196]! } + public var State_connecting: String { return self._s[2197]! } + public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2198]!, self._r[2198]!, [_0]) } - public var Login_CodeSentCall: String { return self._s[2202]! } - public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2204]! } - public var ChatSettings_Appearance: String { return self._s[2205]! } - public var Appearance_PickAccentColor: String { return self._s[2206]! } + public var Notifications_GroupNotifications: String { return self._s[2199]! } + public var Passport_Identity_EditPassport: String { return self._s[2200]! } + public var EnterPasscode_RepeatNewPasscode: String { return self._s[2202]! } + public var Localization_EnglishLanguageName: String { return self._s[2203]! } + public var Share_AuthDescription: String { return self._s[2204]! } + public var Passport_Identity_Surname: String { return self._s[2205]! } + public var Compose_TokenListPlaceholder: String { return self._s[2206]! } + public var Passport_Identity_OneOfTypePassport: String { return self._s[2207]! } + public var Settings_AboutEmpty: String { return self._s[2208]! } + public var Conversation_Unmute: String { return self._s[2209]! } + public func PUSH_CONTACT_JOINED(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2211]!, self._r[2211]!, [_1]) + } + public var Login_CodeSentCall: String { return self._s[2212]! } + public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2214]! } + public var ChatSettings_Appearance: String { return self._s[2215]! } + public var Appearance_PickAccentColor: String { return self._s[2216]! } public func PUSH_CHAT_MESSAGE_NOTEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2207]!, self._r[2207]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2217]!, self._r[2217]!, [_1, _2]) } public func PUSH_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2208]!, self._r[2208]!, [_1]) + return formatWithArgumentRanges(self._s[2218]!, self._r[2218]!, [_1]) } - public var Notification_CallMissed: String { return self._s[2209]! } - public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2210]! } - public var ChatAdmins_AdminLabel: String { return self._s[2212]! } - public var KeyCommand_JumpToNextChat: String { return self._s[2213]! } - public var Conversation_StopPollConfirmationTitle: String { return self._s[2215]! } - public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2216]! } - public var Month_GenJune: String { return self._s[2217]! } - public var Watch_Location_Current: String { return self._s[2218]! } - public var Conversation_TitleMute: String { return self._s[2219]! } + public var Notification_CallMissed: String { return self._s[2219]! } + public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2220]! } + public var ChatAdmins_AdminLabel: String { return self._s[2222]! } + public var KeyCommand_JumpToNextChat: String { return self._s[2223]! } + public var Conversation_StopPollConfirmationTitle: String { return self._s[2225]! } + public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2226]! } + public var Month_GenJune: String { return self._s[2227]! } + public var Watch_Location_Current: String { return self._s[2228]! } + public var Conversation_TitleMute: String { return self._s[2229]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2220]!, self._r[2220]!, [_1]) + return formatWithArgumentRanges(self._s[2230]!, self._r[2230]!, [_1]) } - public var GroupInfo_DeleteAndExit: String { return self._s[2221]! } + public var GroupInfo_DeleteAndExit: String { return self._s[2231]! } public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2222]!, self._r[2222]!, [_0]) + return formatWithArgumentRanges(self._s[2232]!, self._r[2232]!, [_0]) } - public var Call_ReportPlaceholder: String { return self._s[2223]! } - public var MaskStickerSettings_Info: String { return self._s[2224]! } + public var Call_ReportPlaceholder: String { return self._s[2233]! } + public var MaskStickerSettings_Info: String { return self._s[2234]! } public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2225]!, self._r[2225]!, [_0]) + return formatWithArgumentRanges(self._s[2235]!, self._r[2235]!, [_0]) } - public var Checkout_NewCard_PostcodeTitle: String { return self._s[2226]! } - public var Passport_Address_RegionPlaceholder: String { return self._s[2228]! } - public var Contacts_ShareTelegram: String { return self._s[2229]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2230]! } - public var Channel_ErrorAccessDenied: String { return self._s[2231]! } - public var Stickers_GroupChooseStickerPack: String { return self._s[2233]! } - public var Call_ConnectionErrorTitle: String { return self._s[2234]! } - public var UserInfo_NotificationsEnable: String { return self._s[2235]! } - public var Tour_Text4: String { return self._s[2238]! } - public var WallpaperSearch_Recent: String { return self._s[2239]! } - public var Profile_MessageLifetime2s: String { return self._s[2241]! } - public var Notification_MessageLifetime2s: String { return self._s[2242]! } + public var Checkout_NewCard_PostcodeTitle: String { return self._s[2236]! } + public var Passport_Address_RegionPlaceholder: String { return self._s[2238]! } + public var Contacts_ShareTelegram: String { return self._s[2239]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2240]! } + public var Channel_ErrorAccessDenied: String { return self._s[2241]! } + public var Stickers_GroupChooseStickerPack: String { return self._s[2243]! } + public var Call_ConnectionErrorTitle: String { return self._s[2244]! } + public var UserInfo_NotificationsEnable: String { return self._s[2245]! } + public var Tour_Text4: String { return self._s[2248]! } + public var WallpaperSearch_Recent: String { return self._s[2249]! } + public var Profile_MessageLifetime2s: String { return self._s[2251]! } + public var Notification_MessageLifetime2s: String { return self._s[2252]! } public func Time_PreciseDate_m10(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2243]!, self._r[2243]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2253]!, self._r[2253]!, [_1, _2, _3]) } - public var Cache_ClearCache: String { return self._s[2244]! } - public var AutoNightTheme_UpdateLocation: String { return self._s[2245]! } - public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2246]! } + public var Cache_ClearCache: String { return self._s[2254]! } + public var AutoNightTheme_UpdateLocation: String { return self._s[2255]! } + public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2256]! } public func Channel_AdminLog_MessageChangedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2250]!, self._r[2250]!, [_0]) + return formatWithArgumentRanges(self._s[2260]!, self._r[2260]!, [_0]) } - public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2252]! } - public var SocksProxySetup_TypeSocks: String { return self._s[2253]! } - public var AutoNightTheme_Title: String { return self._s[2254]! } - public var InstantPage_FeedbackButton: String { return self._s[2255]! } - public var Passport_FieldAddress: String { return self._s[2256]! } - public var Month_ShortMarch: String { return self._s[2257]! } + public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2262]! } + public var SocksProxySetup_TypeSocks: String { return self._s[2263]! } + public var AutoNightTheme_Title: String { return self._s[2264]! } + public var InstantPage_FeedbackButton: String { return self._s[2265]! } + public var Passport_FieldAddress: String { return self._s[2266]! } + public var Month_ShortMarch: String { return self._s[2267]! } public func PUSH_MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2258]!, self._r[2258]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2268]!, self._r[2268]!, [_1, _2]) } - public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2259]! } - public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2260]! } - public var Passport_FloodError: String { return self._s[2261]! } - public var SecretGif_Title: String { return self._s[2262]! } - public var Passport_Language_th: String { return self._s[2264]! } - public var Passport_Address_Address: String { return self._s[2265]! } - public var Login_InvalidLastNameError: String { return self._s[2266]! } - public var Notifications_InAppNotificationsPreview: String { return self._s[2267]! } - public var Notifications_PermissionsUnreachableTitle: String { return self._s[2268]! } - public var ShareMenu_Send: String { return self._s[2269]! } - public var WallpaperSearch_ColorYellow: String { return self._s[2271]! } - public var Month_GenNovember: String { return self._s[2273]! } - public var Checkout_Email: String { return self._s[2275]! } - public var NotificationsSound_Tritone: String { return self._s[2276]! } - public var StickerPacksSettings_ManagingHelp: String { return self._s[2278]! } + public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2269]! } + public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2270]! } + public var Passport_FloodError: String { return self._s[2271]! } + public var SecretGif_Title: String { return self._s[2272]! } + public var Passport_Language_th: String { return self._s[2274]! } + public var Passport_Address_Address: String { return self._s[2275]! } + public var Login_InvalidLastNameError: String { return self._s[2276]! } + public var Notifications_InAppNotificationsPreview: String { return self._s[2277]! } + public var Notifications_PermissionsUnreachableTitle: String { return self._s[2278]! } + public var ShareMenu_Send: String { return self._s[2279]! } + public var WallpaperSearch_ColorYellow: String { return self._s[2281]! } + public var Month_GenNovember: String { return self._s[2283]! } + public var Checkout_Email: String { return self._s[2285]! } + public var NotificationsSound_Tritone: String { return self._s[2286]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[2288]! } public func PUSH_PINNED_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2281]!, self._r[2281]!, [_1]) + return formatWithArgumentRanges(self._s[2291]!, self._r[2291]!, [_1]) } - public var ChangePhoneNumberNumber_Help: String { return self._s[2282]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[2292]! } public func Checkout_LiabilityAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2283]!, self._r[2283]!, [_1, _1, _1, _2]) + return formatWithArgumentRanges(self._s[2293]!, self._r[2293]!, [_1, _1, _1, _2]) } - public var DialogList_You: String { return self._s[2284]! } - public var MediaPicker_Send: String { return self._s[2287]! } - public var Call_AudioRouteSpeaker: String { return self._s[2288]! } - public var Watch_UserInfo_Title: String { return self._s[2289]! } - public var Appearance_AccentColor: String { return self._s[2290]! } + public var DialogList_You: String { return self._s[2294]! } + public var MediaPicker_Send: String { return self._s[2297]! } + public var Call_AudioRouteSpeaker: String { return self._s[2298]! } + public var Watch_UserInfo_Title: String { return self._s[2299]! } + public var Appearance_AccentColor: String { return self._s[2300]! } public func Login_EmailPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2291]!, self._r[2291]!, [_0]) + return formatWithArgumentRanges(self._s[2301]!, self._r[2301]!, [_0]) } - public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2292]! } + public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2302]! } public func PUSH_CHANNEL_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2293]!, self._r[2293]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2303]!, self._r[2303]!, [_1, _2]) } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[2294]! } - public var WebSearch_RecentClearConfirmation: String { return self._s[2295]! } - public var Notification_CallOutgoing: String { return self._s[2296]! } - public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2297]! } - public var Call_RecordingDisabledMessage: String { return self._s[2298]! } - public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2299]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2300]! } - public var Date_DialogDateFormat: String { return self._s[2301]! } - public var WallpaperColors_SetCustomColor: String { return self._s[2302]! } - public var Notifications_InAppNotifications: String { return self._s[2303]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[2304]! } + public var WebSearch_RecentClearConfirmation: String { return self._s[2305]! } + public var Notification_CallOutgoing: String { return self._s[2306]! } + public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2307]! } + public var Call_RecordingDisabledMessage: String { return self._s[2308]! } + public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2309]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2310]! } + public var Date_DialogDateFormat: String { return self._s[2311]! } + public var WallpaperColors_SetCustomColor: String { return self._s[2312]! } + public var Notifications_InAppNotifications: String { return self._s[2313]! } public func Channel_Management_RemovedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2304]!, self._r[2304]!, [_0]) + return formatWithArgumentRanges(self._s[2314]!, self._r[2314]!, [_0]) } public func Settings_ApplyProxyAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2305]!, self._r[2305]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2315]!, self._r[2315]!, [_1, _2]) } - public var NewContact_Title: String { return self._s[2306]! } - public var Conversation_ViewContactDetails: String { return self._s[2307]! } + public var NewContact_Title: String { return self._s[2316]! } + public var Conversation_ViewContactDetails: String { return self._s[2317]! } public func PUSH_CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2309]!, self._r[2309]!, [_1]) + return formatWithArgumentRanges(self._s[2319]!, self._r[2319]!, [_1]) } - public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2310]! } - public var Passport_Identity_ExpiryDateNone: String { return self._s[2311]! } - public var PrivacySettings_Title: String { return self._s[2312]! } - public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2315]! } - public var GroupRemoved_UsersSectionTitle: String { return self._s[2316]! } - public var Contacts_PhoneNumber: String { return self._s[2317]! } - public var Map_ShowPlaces: String { return self._s[2319]! } - public var ChatAdmins_Title: String { return self._s[2320]! } - public var InstantPage_Reference: String { return self._s[2322]! } + public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2320]! } + public var Passport_Identity_ExpiryDateNone: String { return self._s[2321]! } + public var PrivacySettings_Title: String { return self._s[2322]! } + public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2325]! } + public var GroupRemoved_UsersSectionTitle: String { return self._s[2326]! } + public var Contacts_PhoneNumber: String { return self._s[2327]! } + public var Map_ShowPlaces: String { return self._s[2329]! } + public var ChatAdmins_Title: String { return self._s[2330]! } + public var InstantPage_Reference: String { return self._s[2332]! } public func PUSH_CHAT_MESSAGE_FWD(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2323]!, self._r[2323]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2333]!, self._r[2333]!, [_1, _2]) } - public var Camera_FlashOff: String { return self._s[2324]! } - public var Watch_UserInfo_Block: String { return self._s[2325]! } - public var ChatSettings_Stickers: String { return self._s[2326]! } - public var ChatSettings_DownloadInBackground: String { return self._s[2327]! } + public var Camera_FlashOff: String { return self._s[2334]! } + public var Watch_UserInfo_Block: String { return self._s[2335]! } + public var ChatSettings_Stickers: String { return self._s[2336]! } + public var ChatSettings_DownloadInBackground: String { return self._s[2337]! } public func UserInfo_BlockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2328]!, self._r[2328]!, [_0]) + return formatWithArgumentRanges(self._s[2338]!, self._r[2338]!, [_0]) } - public var Settings_ViewPhoto: String { return self._s[2329]! } - public var Login_CheckOtherSessionMessages: String { return self._s[2330]! } - public var AutoDownloadSettings_Cellular: String { return self._s[2331]! } + public var Settings_ViewPhoto: String { return self._s[2339]! } + public var Login_CheckOtherSessionMessages: String { return self._s[2340]! } + public var AutoDownloadSettings_Cellular: String { return self._s[2341]! } public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2333]!, self._r[2333]!, [_0]) + return formatWithArgumentRanges(self._s[2343]!, self._r[2343]!, [_0]) } - public var Privacy_DeleteDrafts: String { return self._s[2334]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2335]! } + public var Privacy_DeleteDrafts: String { return self._s[2344]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2345]! } public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2336]!, self._r[2336]!, [_0]) + return formatWithArgumentRanges(self._s[2346]!, self._r[2346]!, [_0]) } - public var DialogList_SavedMessagesHelp: String { return self._s[2337]! } - public var DialogList_SavedMessages: String { return self._s[2338]! } - public var GroupInfo_UpgradeButton: String { return self._s[2339]! } - public var DialogList_Pin: String { return self._s[2340]! } + public var DialogList_SavedMessagesHelp: String { return self._s[2347]! } + public var DialogList_SavedMessages: String { return self._s[2348]! } + public var GroupInfo_UpgradeButton: String { return self._s[2349]! } + public var DialogList_Pin: String { return self._s[2350]! } public func ForwardedAuthors2(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2341]!, self._r[2341]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2351]!, self._r[2351]!, [_0, _1]) } public func Login_PhoneGenericEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2342]!, self._r[2342]!, [_0]) + return formatWithArgumentRanges(self._s[2352]!, self._r[2352]!, [_0]) } - public var Notification_Exceptions_AlwaysOn: String { return self._s[2343]! } - public var UserInfo_NotificationsDisable: String { return self._s[2344]! } - public var Paint_Outlined: String { return self._s[2345]! } - public var Activity_PlayingGame: String { return self._s[2346]! } - public var SearchImages_NoImagesFound: String { return self._s[2347]! } - public var SocksProxySetup_ProxyType: String { return self._s[2348]! } - public var AppleWatch_ReplyPresetsHelp: String { return self._s[2350]! } - public var Settings_AppLanguage: String { return self._s[2351]! } - public var TwoStepAuth_ResetAccountHelp: String { return self._s[2352]! } - public var Common_ChoosePhoto: String { return self._s[2353]! } + public var Notification_Exceptions_AlwaysOn: String { return self._s[2353]! } + public var UserInfo_NotificationsDisable: String { return self._s[2354]! } + public var Paint_Outlined: String { return self._s[2355]! } + public var Activity_PlayingGame: String { return self._s[2356]! } + public var SearchImages_NoImagesFound: String { return self._s[2357]! } + public var SocksProxySetup_ProxyType: String { return self._s[2358]! } + public var AppleWatch_ReplyPresetsHelp: String { return self._s[2360]! } + public var Settings_AppLanguage: String { return self._s[2361]! } + public var TwoStepAuth_ResetAccountHelp: String { return self._s[2362]! } + public var Common_ChoosePhoto: String { return self._s[2363]! } + public var CallFeedback_ReasonEcho: String { return self._s[2364]! } public func PUSH_PINNED_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2354]!, self._r[2354]!, [_1]) - } - public var Privacy_Calls_AlwaysAllow: String { return self._s[2355]! } - public var Activity_UploadingVideo: String { return self._s[2356]! } - public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2357]! } - public var NetworkUsageSettings_Wifi: String { return self._s[2358]! } - public var Channel_BanUser_PermissionReadMessages: String { return self._s[2359]! } - public var Checkout_PayWithTouchId: String { return self._s[2360]! } - public func PUSH_LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2362]!, self._r[2362]!, [_1]) - } - public var Notifications_ExceptionsNone: String { return self._s[2363]! } - public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2364]!, self._r[2364]!, [_0]) - } - public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2365]!, self._r[2365]!, [_1]) } - public var AuthSessions_IncompleteAttempts: String { return self._s[2367]! } - public var Passport_Address_Region: String { return self._s[2370]! } - public var ChatList_DeleteChat: String { return self._s[2371]! } - public var PhotoEditor_TiltShift: String { return self._s[2372]! } - public var Settings_FAQ_URL: String { return self._s[2373]! } - public var Passport_Language_sl: String { return self._s[2374]! } - public var Settings_PrivacySettings: String { return self._s[2376]! } - public var SharedMedia_TitleLink: String { return self._s[2377]! } - public var Passport_Identity_TypePassportUploadScan: String { return self._s[2378]! } - public var Settings_SetProfilePhoto: String { return self._s[2379]! } - public var Channel_About_Help: String { return self._s[2380]! } - public var Contacts_PermissionsEnable: String { return self._s[2381]! } - public var AttachmentMenu_SendAsFiles: String { return self._s[2382]! } - public var Passport_Address_AddTemporaryRegistration: String { return self._s[2384]! } - public var PrivacySettings_DeleteAccountTitle: String { return self._s[2385]! } - public var AccessDenied_VideoMessageCamera: String { return self._s[2387]! } - public var Map_OpenInYandexMaps: String { return self._s[2389]! } - public var PhotoEditor_SaturationTool: String { return self._s[2390]! } + public var Privacy_Calls_AlwaysAllow: String { return self._s[2366]! } + public var Activity_UploadingVideo: String { return self._s[2367]! } + public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2368]! } + public var NetworkUsageSettings_Wifi: String { return self._s[2369]! } + public var Channel_BanUser_PermissionReadMessages: String { return self._s[2370]! } + public var Checkout_PayWithTouchId: String { return self._s[2371]! } + public func PUSH_LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2373]!, self._r[2373]!, [_1]) + } + public var Notifications_ExceptionsNone: String { return self._s[2374]! } + public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2375]!, self._r[2375]!, [_0]) + } + public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2376]!, self._r[2376]!, [_1]) + } + public var AuthSessions_IncompleteAttempts: String { return self._s[2378]! } + public var Passport_Address_Region: String { return self._s[2381]! } + public var ChatList_DeleteChat: String { return self._s[2382]! } + public var PhotoEditor_TiltShift: String { return self._s[2383]! } + public var Settings_FAQ_URL: String { return self._s[2384]! } + public var Passport_Language_sl: String { return self._s[2385]! } + public var Settings_PrivacySettings: String { return self._s[2387]! } + public var SharedMedia_TitleLink: String { return self._s[2388]! } + public var Passport_Identity_TypePassportUploadScan: String { return self._s[2389]! } + public var Settings_SetProfilePhoto: String { return self._s[2390]! } + public var Channel_About_Help: String { return self._s[2391]! } + public var Contacts_PermissionsEnable: String { return self._s[2392]! } + public var AttachmentMenu_SendAsFiles: String { return self._s[2393]! } + public var CallFeedback_ReasonInterruption: String { return self._s[2395]! } + public var Passport_Address_AddTemporaryRegistration: String { return self._s[2396]! } + public var PrivacySettings_DeleteAccountTitle: String { return self._s[2397]! } + public var AccessDenied_VideoMessageCamera: String { return self._s[2399]! } + public var Map_OpenInYandexMaps: String { return self._s[2401]! } + public var PhotoEditor_SaturationTool: String { return self._s[2402]! } public func PUSH_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2391]!, self._r[2391]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2403]!, self._r[2403]!, [_1, _2]) } - public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2392]! } - public var Appearance_TextSize: String { return self._s[2393]! } + public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2404]! } + public var Appearance_TextSize: String { return self._s[2405]! } public func LOCAL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2394]!, self._r[2394]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[2406]!, self._r[2406]!, [_1, "\(_2)"]) } - public var Channel_Username_InvalidTooShort: String { return self._s[2396]! } + public var Channel_Username_InvalidTooShort: String { return self._s[2408]! } public func PUSH_CHAT_MESSAGE_GAME(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2397]!, self._r[2397]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2409]!, self._r[2409]!, [_1, _2, _3]) } - public var Passport_PassportInformation: String { return self._s[2400]! } - public var WatchRemote_AlertTitle: String { return self._s[2401]! } - public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2402]! } - public var ConvertToSupergroup_HelpText: String { return self._s[2404]! } + public var Passport_PassportInformation: String { return self._s[2412]! } + public var WatchRemote_AlertTitle: String { return self._s[2413]! } + public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2414]! } + public var ConvertToSupergroup_HelpText: String { return self._s[2416]! } public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2405]!, self._r[2405]!, [_0]) + return formatWithArgumentRanges(self._s[2417]!, self._r[2417]!, [_0]) } public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2406]!, self._r[2406]!, [_1]) + return formatWithArgumentRanges(self._s[2418]!, self._r[2418]!, [_1]) } - public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2407]! } - public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2409]! } - public var AccessDenied_CameraDisabled: String { return self._s[2410]! } + public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2419]! } + public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2421]! } + public var AccessDenied_CameraDisabled: String { return self._s[2422]! } public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2411]!, self._r[2411]!, [_0]) + return formatWithArgumentRanges(self._s[2423]!, self._r[2423]!, [_0]) } - public var PhotoEditor_ContrastTool: String { return self._s[2414]! } + public var PhotoEditor_ContrastTool: String { return self._s[2426]! } public func PUSH_PINNED_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2415]!, self._r[2415]!, [_1]) + return formatWithArgumentRanges(self._s[2427]!, self._r[2427]!, [_1]) } - public var DialogList_Draft: String { return self._s[2416]! } - public var Privacy_TopPeersDelete: String { return self._s[2418]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[2419]! } - public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2420]! } - public var WebSearch_RecentSectionClear: String { return self._s[2421]! } - public var Watch_ChatList_NoConversationsTitle: String { return self._s[2423]! } - public var Common_Done: String { return self._s[2425]! } - public var AuthSessions_EmptyText: String { return self._s[2426]! } - public var Conversation_ShareBotContactConfirmation: String { return self._s[2427]! } - public var Tour_Title5: String { return self._s[2428]! } + public var DialogList_Draft: String { return self._s[2428]! } + public var Privacy_TopPeersDelete: String { return self._s[2430]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[2431]! } + public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2432]! } + public var WebSearch_RecentSectionClear: String { return self._s[2433]! } + public var Watch_ChatList_NoConversationsTitle: String { return self._s[2435]! } + public var Common_Done: String { return self._s[2437]! } + public var AuthSessions_EmptyText: String { return self._s[2438]! } + public var Conversation_ShareBotContactConfirmation: String { return self._s[2439]! } + public var Tour_Title5: String { return self._s[2440]! } public func Map_DirectionsDriveEta(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2429]!, self._r[2429]!, [_0]) + return formatWithArgumentRanges(self._s[2441]!, self._r[2441]!, [_0]) } - public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2430]! } - public var Conversation_LinkDialogSave: String { return self._s[2431]! } - public var GroupInfo_ActionRestrict: String { return self._s[2432]! } - public var Checkout_Title: String { return self._s[2433]! } - public var Channel_AdminLog_CanChangeInfo: String { return self._s[2436]! } - public var Notification_RenamedGroup: String { return self._s[2437]! } - public var Checkout_PayWithFaceId: String { return self._s[2438]! } - public var Channel_BanList_BlockedTitle: String { return self._s[2439]! } - public var Checkout_WebConfirmation_Title: String { return self._s[2441]! } - public var Notifications_MessageNotificationsAlert: String { return self._s[2442]! } - public var Profile_AddToExisting: String { return self._s[2444]! } + public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2442]! } + public var Conversation_LinkDialogSave: String { return self._s[2443]! } + public var GroupInfo_ActionRestrict: String { return self._s[2444]! } + public var Checkout_Title: String { return self._s[2445]! } + public var Channel_AdminLog_CanChangeInfo: String { return self._s[2448]! } + public var Notification_RenamedGroup: String { return self._s[2449]! } + public var Checkout_PayWithFaceId: String { return self._s[2450]! } + public var Channel_BanList_BlockedTitle: String { return self._s[2451]! } + public var Checkout_WebConfirmation_Title: String { return self._s[2453]! } + public var Notifications_MessageNotificationsAlert: String { return self._s[2454]! } + public var Profile_AddToExisting: String { return self._s[2456]! } public func Profile_CreateEncryptedChatOutdatedError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2445]!, self._r[2445]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2457]!, self._r[2457]!, [_0, _1]) } - public var Cache_Files: String { return self._s[2447]! } - public var Permissions_PrivacyPolicy: String { return self._s[2448]! } - public var SocksProxySetup_ConnectAndSave: String { return self._s[2449]! } - public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2450]! } - public var Calls_NoCallsPlaceholder: String { return self._s[2453]! } - public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2454]! } - public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2456]! } + public var Cache_Files: String { return self._s[2459]! } + public var Permissions_PrivacyPolicy: String { return self._s[2460]! } + public var SocksProxySetup_ConnectAndSave: String { return self._s[2461]! } + public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2462]! } + public var Calls_NoCallsPlaceholder: String { return self._s[2465]! } + public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2466]! } + public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2468]! } public func PUSH_CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2457]!, self._r[2457]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2469]!, self._r[2469]!, [_1, _2, _3]) } - public var Passport_FieldAddressHelp: String { return self._s[2458]! } - public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2459]! } + public var Passport_FieldAddressHelp: String { return self._s[2470]! } + public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2471]! } public func Login_TermsOfService_ProceedBot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2460]!, self._r[2460]!, [_0]) + return formatWithArgumentRanges(self._s[2472]!, self._r[2472]!, [_0]) } - public var Channel_AdminLog_EmptyTitle: String { return self._s[2461]! } - public var Privacy_Calls_NeverAllow_Title: String { return self._s[2463]! } - public var Login_UnknownError: String { return self._s[2464]! } - public var Group_UpgradeNoticeText2: String { return self._s[2466]! } - public var Watch_Compose_AddContact: String { return self._s[2467]! } - public var Web_Error: String { return self._s[2468]! } - public var Profile_MessageLifetime1h: String { return self._s[2469]! } - public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2470]! } - public var Channel_Username_CheckingUsername: String { return self._s[2471]! } - public var Channel_AboutItem: String { return self._s[2472]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2474]! } - public var GroupInfo_SharedMedia: String { return self._s[2475]! } + public var Channel_AdminLog_EmptyTitle: String { return self._s[2473]! } + public var Privacy_Calls_NeverAllow_Title: String { return self._s[2475]! } + public var Login_UnknownError: String { return self._s[2476]! } + public var Group_UpgradeNoticeText2: String { return self._s[2478]! } + public var Watch_Compose_AddContact: String { return self._s[2479]! } + public var Web_Error: String { return self._s[2480]! } + public var Profile_MessageLifetime1h: String { return self._s[2481]! } + public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2482]! } + public var Channel_Username_CheckingUsername: String { return self._s[2483]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[2484]! } + public var Channel_AboutItem: String { return self._s[2485]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2487]! } + public var GroupInfo_SharedMedia: String { return self._s[2488]! } public func Channel_AdminLog_MessagePromotedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2476]!, self._r[2476]!, [_1]) + return formatWithArgumentRanges(self._s[2489]!, self._r[2489]!, [_1]) } - public var Call_PhoneCallInProgressMessage: String { return self._s[2477]! } - public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2478]! } - public var Conversation_SearchByName_Placeholder: String { return self._s[2479]! } - public var CreatePoll_AddOption: String { return self._s[2480]! } - public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2481]! } - public var Group_UpgradeNoticeHeader: String { return self._s[2482]! } - public var Channel_Management_AddModerator: String { return self._s[2483]! } - public var StickerPacksSettings_ShowStickersButton: String { return self._s[2484]! } - public var NotificationsSound_Hello: String { return self._s[2485]! } - public var SocksProxySetup_SavedProxies: String { return self._s[2486]! } - public var Channel_Stickers_Placeholder: String { return self._s[2488]! } + public var Call_PhoneCallInProgressMessage: String { return self._s[2490]! } + public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2491]! } + public var Conversation_SearchByName_Placeholder: String { return self._s[2492]! } + public var CreatePoll_AddOption: String { return self._s[2493]! } + public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2494]! } + public var Group_UpgradeNoticeHeader: String { return self._s[2495]! } + public var Channel_Management_AddModerator: String { return self._s[2496]! } + public var StickerPacksSettings_ShowStickersButton: String { return self._s[2497]! } + public var NotificationsSound_Hello: String { return self._s[2498]! } + public var SocksProxySetup_SavedProxies: String { return self._s[2499]! } + public var Channel_Stickers_Placeholder: String { return self._s[2501]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2489]!, self._r[2489]!, [_0]) + return formatWithArgumentRanges(self._s[2502]!, self._r[2502]!, [_0]) } - public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2490]! } - public var Channel_Management_AddModeratorHelp: String { return self._s[2491]! } - public var ContactInfo_BirthdayLabel: String { return self._s[2492]! } - public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2493]! } - public var AutoDownloadSettings_Channels: String { return self._s[2494]! } - public var Passport_Language_mn: String { return self._s[2495]! } - public var Notifications_ResetAllNotificationsHelp: String { return self._s[2498]! } - public var Passport_Language_ja: String { return self._s[2500]! } - public var Settings_About_Title: String { return self._s[2501]! } - public var Settings_NotificationsAndSounds: String { return self._s[2502]! } - public var ChannelInfo_DeleteGroup: String { return self._s[2503]! } - public var Settings_BlockedUsers: String { return self._s[2504]! } + public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2503]! } + public var Channel_Management_AddModeratorHelp: String { return self._s[2504]! } + public var ContactInfo_BirthdayLabel: String { return self._s[2505]! } + public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2506]! } + public var AutoDownloadSettings_Channels: String { return self._s[2507]! } + public var Passport_Language_mn: String { return self._s[2508]! } + public var Notifications_ResetAllNotificationsHelp: String { return self._s[2511]! } + public var Passport_Language_ja: String { return self._s[2513]! } + public var Settings_About_Title: String { return self._s[2514]! } + public var Settings_NotificationsAndSounds: String { return self._s[2515]! } + public var ChannelInfo_DeleteGroup: String { return self._s[2516]! } + public var Settings_BlockedUsers: String { return self._s[2517]! } public func Time_MonthOfYear_m4(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2505]!, self._r[2505]!, [_0]) + return formatWithArgumentRanges(self._s[2518]!, self._r[2518]!, [_0]) } - public var Passport_Address_AddResidentialAddress: String { return self._s[2506]! } - public var Channel_Username_Title: String { return self._s[2507]! } + public var Passport_Address_AddResidentialAddress: String { return self._s[2519]! } + public var Channel_Username_Title: String { return self._s[2520]! } public func Notification_RemovedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2508]!, self._r[2508]!, [_0]) + return formatWithArgumentRanges(self._s[2521]!, self._r[2521]!, [_0]) } - public var AttachmentMenu_File: String { return self._s[2510]! } - public var AppleWatch_Title: String { return self._s[2511]! } - public var Activity_RecordingVideoMessage: String { return self._s[2512]! } - public var Weekday_Saturday: String { return self._s[2513]! } - public var WallpaperPreview_SwipeColorsTopText: String { return self._s[2514]! } - public var Profile_CreateEncryptedChatError: String { return self._s[2515]! } - public var Common_Next: String { return self._s[2517]! } - public var Channel_Stickers_YourStickers: String { return self._s[2519]! } - public var Call_AudioRouteHeadphones: String { return self._s[2520]! } - public var TwoStepAuth_EnterPasswordForgot: String { return self._s[2522]! } - public var Watch_Contacts_NoResults: String { return self._s[2524]! } - public var PhotoEditor_TintTool: String { return self._s[2527]! } - public var LoginPassword_ResetAccount: String { return self._s[2529]! } - public var Settings_SavedMessages: String { return self._s[2530]! } - public var StickerPack_Add: String { return self._s[2531]! } - public var Your_cards_number_is_invalid: String { return self._s[2532]! } - public var Checkout_TotalAmount: String { return self._s[2533]! } + public var AttachmentMenu_File: String { return self._s[2523]! } + public var AppleWatch_Title: String { return self._s[2524]! } + public var Activity_RecordingVideoMessage: String { return self._s[2525]! } + public var Weekday_Saturday: String { return self._s[2526]! } + public var WallpaperPreview_SwipeColorsTopText: String { return self._s[2527]! } + public var Profile_CreateEncryptedChatError: String { return self._s[2528]! } + public var Common_Next: String { return self._s[2530]! } + public var Channel_Stickers_YourStickers: String { return self._s[2532]! } + public var Call_AudioRouteHeadphones: String { return self._s[2533]! } + public var TwoStepAuth_EnterPasswordForgot: String { return self._s[2535]! } + public var Watch_Contacts_NoResults: String { return self._s[2537]! } + public var PhotoEditor_TintTool: String { return self._s[2540]! } + public var LoginPassword_ResetAccount: String { return self._s[2542]! } + public var Settings_SavedMessages: String { return self._s[2543]! } + public var StickerPack_Add: String { return self._s[2544]! } + public var Your_cards_number_is_invalid: String { return self._s[2545]! } + public var Checkout_TotalAmount: String { return self._s[2546]! } public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2534]!, self._r[2534]!, [_0]) + return formatWithArgumentRanges(self._s[2547]!, self._r[2547]!, [_0]) } public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2535]!, self._r[2535]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2548]!, self._r[2548]!, [_1, _2]) } - public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[2536]! } + public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[2549]! } public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2538]!, self._r[2538]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2551]!, self._r[2551]!, [_1, _2]) } public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2539]!, self._r[2539]!, [_0]) + return formatWithArgumentRanges(self._s[2552]!, self._r[2552]!, [_0]) } - public var GroupInfo_InviteLink_ShareLink: String { return self._s[2540]! } - public var StickerPack_Share: String { return self._s[2541]! } - public var Passport_DeleteAddress: String { return self._s[2542]! } - public var Settings_Passport: String { return self._s[2543]! } - public var SharedMedia_EmptyFilesText: String { return self._s[2544]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[2545]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[2546]! } - public var Contacts_PermissionsText: String { return self._s[2547]! } - public var Group_Setup_HistoryVisible: String { return self._s[2548]! } - public var Passport_Address_AddRentalAgreement: String { return self._s[2550]! } - public var SocksProxySetup_Title: String { return self._s[2551]! } - public var Notification_Mute1h: String { return self._s[2552]! } + public var GroupInfo_InviteLink_ShareLink: String { return self._s[2553]! } + public var StickerPack_Share: String { return self._s[2554]! } + public var Passport_DeleteAddress: String { return self._s[2555]! } + public var Settings_Passport: String { return self._s[2556]! } + public var SharedMedia_EmptyFilesText: String { return self._s[2557]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[2558]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[2559]! } + public var Contacts_PermissionsText: String { return self._s[2560]! } + public var Group_Setup_HistoryVisible: String { return self._s[2561]! } + public var Passport_Address_AddRentalAgreement: String { return self._s[2563]! } + public var SocksProxySetup_Title: String { return self._s[2564]! } + public var Notification_Mute1h: String { return self._s[2565]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2553]!, self._r[2553]!, [_0]) + return formatWithArgumentRanges(self._s[2566]!, self._r[2566]!, [_0]) } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2554]!, self._r[2554]!, [_1]) + return formatWithArgumentRanges(self._s[2567]!, self._r[2567]!, [_1]) } - public var FastTwoStepSetup_PasswordSection: String { return self._s[2555]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2558]! } - public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[2560]! } - public var DialogList_NoMessagesText: String { return self._s[2561]! } - public var Privacy_ContactsResetConfirmation: String { return self._s[2562]! } - public var Privacy_Calls_P2PHelp: String { return self._s[2563]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[2565]! } - public var Common_TakePhotoOrVideo: String { return self._s[2566]! } - public var Call_StatusBusy: String { return self._s[2567]! } - public var Conversation_PinnedMessage: String { return self._s[2568]! } - public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[2569]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[2570]! } - public var AppleWatch_ReplyPresets: String { return self._s[2571]! } - public var Passport_DiscardMessageDescription: String { return self._s[2573]! } - public var Login_NetworkError: String { return self._s[2574]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[2568]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2571]! } + public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[2573]! } + public var DialogList_NoMessagesText: String { return self._s[2574]! } + public var Privacy_ContactsResetConfirmation: String { return self._s[2575]! } + public var Privacy_Calls_P2PHelp: String { return self._s[2576]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[2578]! } + public var Common_TakePhotoOrVideo: String { return self._s[2579]! } + public var Call_StatusBusy: String { return self._s[2580]! } + public var Conversation_PinnedMessage: String { return self._s[2581]! } + public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[2582]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[2583]! } + public var AppleWatch_ReplyPresets: String { return self._s[2584]! } + public var Passport_DiscardMessageDescription: String { return self._s[2586]! } + public var Login_NetworkError: String { return self._s[2587]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2575]!, self._r[2575]!, [_0]) + return formatWithArgumentRanges(self._s[2588]!, self._r[2588]!, [_0]) } public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2576]!, self._r[2576]!, [_0]) + return formatWithArgumentRanges(self._s[2589]!, self._r[2589]!, [_0]) } - public var SocksProxySetup_PasswordPlaceholder: String { return self._s[2577]! } - public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2579]! } + public var SocksProxySetup_PasswordPlaceholder: String { return self._s[2590]! } + public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2592]! } public func Watch_LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2581]!, self._r[2581]!, [_0]) + return formatWithArgumentRanges(self._s[2594]!, self._r[2594]!, [_0]) } - public var Call_ConnectionErrorMessage: String { return self._s[2582]! } - public var Compose_GroupTokenListPlaceholder: String { return self._s[2584]! } - public var ConversationMedia_Title: String { return self._s[2585]! } - public var EncryptionKey_Title: String { return self._s[2587]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[2588]! } - public var Notification_Exceptions_AddException: String { return self._s[2589]! } - public var Profile_MessageLifetime1m: String { return self._s[2590]! } + public var Call_ConnectionErrorMessage: String { return self._s[2595]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[2597]! } + public var ConversationMedia_Title: String { return self._s[2598]! } + public var EncryptionKey_Title: String { return self._s[2600]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[2601]! } + public var Notification_Exceptions_AddException: String { return self._s[2602]! } + public var Profile_MessageLifetime1m: String { return self._s[2603]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2591]!, self._r[2591]!, [_1]) + return formatWithArgumentRanges(self._s[2604]!, self._r[2604]!, [_1]) } - public var Month_GenMay: String { return self._s[2592]! } + public var Month_GenMay: String { return self._s[2605]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2593]!, self._r[2593]!, [_0]) + return formatWithArgumentRanges(self._s[2606]!, self._r[2606]!, [_0]) } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2594]! } - public var Conversation_EmptyPlaceholder: String { return self._s[2596]! } - public var Passport_Address_AddPassportRegistration: String { return self._s[2597]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[2598]! } - public var Camera_TapAndHoldForVideo: String { return self._s[2599]! } - public var Channel_JoinChannel: String { return self._s[2601]! } - public var Appearance_Animations: String { return self._s[2604]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2607]! } + public var Conversation_EmptyPlaceholder: String { return self._s[2609]! } + public var Passport_Address_AddPassportRegistration: String { return self._s[2610]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[2611]! } + public var Camera_TapAndHoldForVideo: String { return self._s[2612]! } + public var Channel_JoinChannel: String { return self._s[2614]! } + public var Appearance_Animations: String { return self._s[2617]! } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2605]!, self._r[2605]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2618]!, self._r[2618]!, [_1, _2]) } - public var Stickers_GroupStickers: String { return self._s[2607]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[2609]! } - public var Passport_Address_Street: String { return self._s[2610]! } - public var Conversation_AddContact: String { return self._s[2611]! } - public var Login_PhonePlaceholder: String { return self._s[2612]! } - public var Channel_Members_InviteLink: String { return self._s[2614]! } - public var Bot_Stop: String { return self._s[2615]! } - public var Notification_PassportValueAddress: String { return self._s[2617]! } - public var Month_ShortJuly: String { return self._s[2618]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[2619]! } - public var Channel_AdminLog_BanSendMedia: String { return self._s[2620]! } - public var Passport_Identity_ReverseSide: String { return self._s[2621]! } - public var Watch_Stickers_Recents: String { return self._s[2624]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[2626]! } - public var Map_SendThisLocation: String { return self._s[2627]! } + public var Stickers_GroupStickers: String { return self._s[2620]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[2622]! } + public var Passport_Address_Street: String { return self._s[2623]! } + public var Conversation_AddContact: String { return self._s[2624]! } + public var Login_PhonePlaceholder: String { return self._s[2625]! } + public var Channel_Members_InviteLink: String { return self._s[2627]! } + public var Bot_Stop: String { return self._s[2628]! } + public var Notification_PassportValueAddress: String { return self._s[2630]! } + public var Month_ShortJuly: String { return self._s[2631]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[2632]! } + public var Channel_AdminLog_BanSendMedia: String { return self._s[2633]! } + public var Passport_Identity_ReverseSide: String { return self._s[2634]! } + public var Watch_Stickers_Recents: String { return self._s[2637]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[2639]! } + public var Map_SendThisLocation: String { return self._s[2640]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2628]!, self._r[2628]!, [_0]) + return formatWithArgumentRanges(self._s[2641]!, self._r[2641]!, [_0]) } public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2629]!, self._r[2629]!, [_0]) + return formatWithArgumentRanges(self._s[2642]!, self._r[2642]!, [_0]) } - public var ConvertToSupergroup_Note: String { return self._s[2630]! } + public var ConvertToSupergroup_Note: String { return self._s[2643]! } public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2631]!, self._r[2631]!, [_0]) - } - public var NetworkUsageSettings_GeneralDataSection: String { return self._s[2632]! } - public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2633]!, self._r[2633]!, [_0, _1]) - } - public var Login_CallRequestState3: String { return self._s[2635]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[2637]! } - public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2638]!, self._r[2638]!, [_1, _2]) - } - public var Channel_AdminLogFilter_Title: String { return self._s[2639]! } - public var Notifications_GroupNotificationsExceptions: String { return self._s[2643]! } - public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2644]!, self._r[2644]!, [_0]) } - public var Passport_CorrectErrors: String { return self._s[2645]! } - public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2646]!, self._r[2646]!, [_0]) + public var NetworkUsageSettings_GeneralDataSection: String { return self._s[2645]! } + public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2646]!, self._r[2646]!, [_0, _1]) } - public var Map_SendMyCurrentLocation: String { return self._s[2647]! } - public func PUSH_PINNED_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2648]!, self._r[2648]!, [_1]) + public var Login_CallRequestState3: String { return self._s[2648]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[2650]! } + public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2651]!, self._r[2651]!, [_1, _2]) } - public var SharedMedia_SearchNoResults: String { return self._s[2649]! } - public var Permissions_NotificationsText_v0: String { return self._s[2650]! } - public var LoginPassword_FloodError: String { return self._s[2651]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[2653]! } - public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2654]!, self._r[2654]!, [_0]) - } - public var Passport_Language_bn: String { return self._s[2655]! } - public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2656]!, self._r[2656]!, [_0]) - } - public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + public var Channel_AdminLogFilter_Title: String { return self._s[2652]! } + public var Notifications_GroupNotificationsExceptions: String { return self._s[2656]! } + public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2657]!, self._r[2657]!, [_0]) } + public var Passport_CorrectErrors: String { return self._s[2658]! } + public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2659]!, self._r[2659]!, [_0]) + } + public var Map_SendMyCurrentLocation: String { return self._s[2660]! } + public func PUSH_PINNED_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2661]!, self._r[2661]!, [_1]) + } + public var SharedMedia_SearchNoResults: String { return self._s[2662]! } + public var Permissions_NotificationsText_v0: String { return self._s[2663]! } + public var LoginPassword_FloodError: String { return self._s[2664]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[2666]! } + public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2667]!, self._r[2667]!, [_0]) + } + public var Passport_Language_bn: String { return self._s[2668]! } + public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2669]!, self._r[2669]!, [_0]) + } + public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2670]!, self._r[2670]!, [_0]) + } public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2658]!, self._r[2658]!, [_0]) + return formatWithArgumentRanges(self._s[2671]!, self._r[2671]!, [_0]) } - public var GroupInfo_InvitationLinkGroupFull: String { return self._s[2661]! } - public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[2663]! } - public var Contacts_PermissionsAllow: String { return self._s[2664]! } - public var ReportPeer_ReasonCopyright: String { return self._s[2665]! } - public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[2666]! } - public var Paint_Duplicate: String { return self._s[2667]! } - public var Passport_Address_Country: String { return self._s[2668]! } - public var Notification_RenamedChannel: String { return self._s[2670]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[2671]! } - public var Group_MessagePhotoUpdated: String { return self._s[2672]! } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[2673]! } - public var Conversation_ContextMenuBan: String { return self._s[2674]! } - public var TwoStepAuth_EmailSent: String { return self._s[2675]! } - public var MessagePoll_NoVotes: String { return self._s[2676]! } - public var Passport_Language_is: String { return self._s[2677]! } - public var Tour_Text5: String { return self._s[2679]! } + public var GroupInfo_InvitationLinkGroupFull: String { return self._s[2674]! } + public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[2676]! } + public var Contacts_PermissionsAllow: String { return self._s[2677]! } + public var ReportPeer_ReasonCopyright: String { return self._s[2678]! } + public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[2679]! } + public var Paint_Duplicate: String { return self._s[2680]! } + public var Passport_Address_Country: String { return self._s[2681]! } + public var Notification_RenamedChannel: String { return self._s[2683]! } + public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[2684]! } + public var Group_MessagePhotoUpdated: String { return self._s[2685]! } + public var Channel_BanUser_PermissionSendMedia: String { return self._s[2686]! } + public var Conversation_ContextMenuBan: String { return self._s[2687]! } + public var TwoStepAuth_EmailSent: String { return self._s[2688]! } + public var MessagePoll_NoVotes: String { return self._s[2689]! } + public var Passport_Language_is: String { return self._s[2690]! } + public var Tour_Text5: String { return self._s[2692]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2681]!, self._r[2681]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2694]!, self._r[2694]!, [_1, _2]) } - public var Undo_SecretChatDeleted: String { return self._s[2682]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[2683]! } - public var Paint_Edit: String { return self._s[2685]! } - public var Undo_DeletedGroup: String { return self._s[2688]! } - public var LoginPassword_ForgotPassword: String { return self._s[2689]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[2690]! } + public var Undo_SecretChatDeleted: String { return self._s[2695]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[2696]! } + public var Paint_Edit: String { return self._s[2698]! } + public var Undo_DeletedGroup: String { return self._s[2701]! } + public var LoginPassword_ForgotPassword: String { return self._s[2702]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[2703]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2691]!, self._r[2691]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2704]!, self._r[2704]!, [_0, _1]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[2692]! } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[2693]! } - public var Passport_Language_uz: String { return self._s[2694]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[2695]! } - public var Map_StopLiveLocation: String { return self._s[2697]! } - public var PasscodeSettings_Help: String { return self._s[2699]! } - public var NotificationsSound_Input: String { return self._s[2700]! } - public var Share_Title: String { return self._s[2703]! } - public var Login_TermsOfServiceAgree: String { return self._s[2704]! } - public var Compose_NewEncryptedChatTitle: String { return self._s[2705]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[2706]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[2707]! } - public var EnterPasscode_EnterTitle: String { return self._s[2708]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[2705]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[2706]! } + public var Passport_Language_uz: String { return self._s[2707]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[2708]! } + public var Map_StopLiveLocation: String { return self._s[2710]! } + public var PasscodeSettings_Help: String { return self._s[2712]! } + public var NotificationsSound_Input: String { return self._s[2713]! } + public var Share_Title: String { return self._s[2716]! } + public var Login_TermsOfServiceAgree: String { return self._s[2717]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[2718]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[2719]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[2720]! } + public var EnterPasscode_EnterTitle: String { return self._s[2721]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2709]!, self._r[2709]!, [_0]) + return formatWithArgumentRanges(self._s[2722]!, self._r[2722]!, [_0]) } - public var Settings_CopyPhoneNumber: String { return self._s[2710]! } - public var NotificationsSound_Keys: String { return self._s[2711]! } + public var Settings_CopyPhoneNumber: String { return self._s[2723]! } + public var NotificationsSound_Keys: String { return self._s[2724]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2712]!, self._r[2712]!, [_0]) + return formatWithArgumentRanges(self._s[2725]!, self._r[2725]!, [_0]) } - public var Notification_MessageLifetime1w: String { return self._s[2713]! } - public var Message_Video: String { return self._s[2714]! } + public var Notification_MessageLifetime1w: String { return self._s[2726]! } + public var Message_Video: String { return self._s[2727]! } public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2715]!, self._r[2715]!, [_1]) + return formatWithArgumentRanges(self._s[2728]!, self._r[2728]!, [_1]) } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2718]!, self._r[2718]!, [_0]) + return formatWithArgumentRanges(self._s[2731]!, self._r[2731]!, [_0]) } public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2719]!, self._r[2719]!, [_0]) + return formatWithArgumentRanges(self._s[2732]!, self._r[2732]!, [_0]) } - public var Passport_Language_mk: String { return self._s[2720]! } - public var CreatePoll_CancelConfirmation: String { return self._s[2721]! } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[2723]! } - public var PrivacyPolicy_Decline: String { return self._s[2724]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[2725]! } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[2726]! } - public var Permissions_SiriAllow_v0: String { return self._s[2728]! } + public var Passport_Language_mk: String { return self._s[2733]! } + public var CreatePoll_CancelConfirmation: String { return self._s[2734]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[2736]! } + public var PrivacyPolicy_Decline: String { return self._s[2737]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[2738]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[2739]! } + public var Permissions_SiriAllow_v0: String { return self._s[2741]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2729]!, self._r[2729]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[2742]!, self._r[2742]!, [_1, "\(_2)"]) } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2730]!, self._r[2730]!, [_0]) + return formatWithArgumentRanges(self._s[2743]!, self._r[2743]!, [_0]) } - public var Paint_Regular: String { return self._s[2731]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[2732]! } - public var SocksProxySetup_ShareLink: String { return self._s[2733]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[2734]! } - public var GroupInfo_InviteByLink: String { return self._s[2736]! } - public var MessageTimer_Custom: String { return self._s[2737]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2738]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[2740]! } - public var Channel_Username_InvalidTaken: String { return self._s[2741]! } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[2742]! } - public var Settings_ChatBackground: String { return self._s[2743]! } - public var Channel_Subscribers_Title: String { return self._s[2744]! } - public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[2745]! } - public var Watch_ConnectionDescription: String { return self._s[2746]! } - public var EditProfile_Title: String { return self._s[2750]! } - public var NotificationsSound_Bamboo: String { return self._s[2752]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[2754]! } - public var Login_SmsRequestState2: String { return self._s[2755]! } - public var Passport_Language_ar: String { return self._s[2756]! } - public var Conversation_MessageDialogEdit: String { return self._s[2757]! } + public var Paint_Regular: String { return self._s[2744]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[2745]! } + public var SocksProxySetup_ShareLink: String { return self._s[2746]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[2747]! } + public var GroupInfo_InviteByLink: String { return self._s[2749]! } + public var MessageTimer_Custom: String { return self._s[2750]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2751]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[2753]! } + public var Channel_Username_InvalidTaken: String { return self._s[2754]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[2755]! } + public var Settings_ChatBackground: String { return self._s[2756]! } + public var Channel_Subscribers_Title: String { return self._s[2757]! } + public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[2758]! } + public var Watch_ConnectionDescription: String { return self._s[2759]! } + public var EditProfile_Title: String { return self._s[2763]! } + public var NotificationsSound_Bamboo: String { return self._s[2765]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[2767]! } + public var Login_SmsRequestState2: String { return self._s[2768]! } + public var Passport_Language_ar: String { return self._s[2769]! } + public var Conversation_MessageDialogEdit: String { return self._s[2770]! } public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2758]!, self._r[2758]!, [_1]) + return formatWithArgumentRanges(self._s[2771]!, self._r[2771]!, [_1]) } - public var Common_Close: String { return self._s[2759]! } + public var Common_Close: String { return self._s[2772]! } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2763]!, self._r[2763]!, [_0]) + return formatWithArgumentRanges(self._s[2776]!, self._r[2776]!, [_0]) } - public var UserInfo_About_Placeholder: String { return self._s[2764]! } + public var UserInfo_About_Placeholder: String { return self._s[2777]! } public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2765]!, self._r[2765]!, [_0]) + return formatWithArgumentRanges(self._s[2778]!, self._r[2778]!, [_0]) } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[2766]! } - public var Channel_Info_Banned: String { return self._s[2768]! } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[2779]! } + public var Channel_Info_Banned: String { return self._s[2781]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2769]!, self._r[2769]!, [_0]) + return formatWithArgumentRanges(self._s[2782]!, self._r[2782]!, [_0]) } - public var Passport_Language_my: String { return self._s[2770]! } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[2771]! } + public var Passport_Language_my: String { return self._s[2783]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[2784]! } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2772]!, self._r[2772]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2785]!, self._r[2785]!, [_1, _2, _3]) } - public var Preview_CopyAddress: String { return self._s[2773]! } + public var Preview_CopyAddress: String { return self._s[2786]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2774]!, self._r[2774]!, [_0]) + return formatWithArgumentRanges(self._s[2787]!, self._r[2787]!, [_0]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[2775]! } - public var UserInfo_BotSettings: String { return self._s[2776]! } - public var LiveLocation_MenuStopAll: String { return self._s[2778]! } - public var Passport_PasswordCreate: String { return self._s[2779]! } - public var StickerSettings_MaskContextInfo: String { return self._s[2780]! } - public var Message_PinnedLocationMessage: String { return self._s[2781]! } - public var Map_Satellite: String { return self._s[2782]! } - public var Watch_Message_Unsupported: String { return self._s[2783]! } - public var Username_TooManyPublicUsernamesError: String { return self._s[2784]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[2785]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[2788]! } + public var UserInfo_BotSettings: String { return self._s[2789]! } + public var LiveLocation_MenuStopAll: String { return self._s[2791]! } + public var Passport_PasswordCreate: String { return self._s[2792]! } + public var StickerSettings_MaskContextInfo: String { return self._s[2793]! } + public var Message_PinnedLocationMessage: String { return self._s[2794]! } + public var Map_Satellite: String { return self._s[2795]! } + public var Watch_Message_Unsupported: String { return self._s[2796]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[2797]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[2798]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2786]!, self._r[2786]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2799]!, self._r[2799]!, [_0, _1]) } - public var Notifications_ChannelNotificationsHelp: String { return self._s[2787]! } - public var Privacy_Calls_P2PContacts: String { return self._s[2788]! } - public var NotificationsSound_None: String { return self._s[2789]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[2791]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[2800]! } + public var Privacy_Calls_P2PContacts: String { return self._s[2801]! } + public var NotificationsSound_None: String { return self._s[2802]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[2804]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2792]!, self._r[2792]!, [_1]) + return formatWithArgumentRanges(self._s[2805]!, self._r[2805]!, [_1]) } - public var Cache_Indexing: String { return self._s[2793]! } - public var DialogList_RecentTitlePeople: String { return self._s[2795]! } - public var DialogList_EncryptionRejected: String { return self._s[2796]! } - public var GroupInfo_Administrators: String { return self._s[2797]! } - public var Passport_ScanPassportHelp: String { return self._s[2798]! } - public var Application_Name: String { return self._s[2799]! } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[2800]! } - public var Passport_Identity_TranslationHelp: String { return self._s[2802]! } + public var Cache_Indexing: String { return self._s[2806]! } + public var DialogList_RecentTitlePeople: String { return self._s[2808]! } + public var DialogList_EncryptionRejected: String { return self._s[2809]! } + public var GroupInfo_Administrators: String { return self._s[2810]! } + public var Passport_ScanPassportHelp: String { return self._s[2811]! } + public var Application_Name: String { return self._s[2812]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[2813]! } + public var Passport_Identity_TranslationHelp: String { return self._s[2815]! } public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2803]!, self._r[2803]!, [_0]) + return formatWithArgumentRanges(self._s[2816]!, self._r[2816]!, [_0]) } public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2804]!, self._r[2804]!, [_0]) + return formatWithArgumentRanges(self._s[2817]!, self._r[2817]!, [_0]) } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[2805]! } - public var Privacy_ChatsTitle: String { return self._s[2806]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[2807]! } - public var Watch_Suggestion_HoldOn: String { return self._s[2808]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[2809]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2810]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[2811]! } - public var Channel_Setup_TypePublic: String { return self._s[2814]! } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[2818]! } + public var Privacy_ChatsTitle: String { return self._s[2819]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[2820]! } + public var Watch_Suggestion_HoldOn: String { return self._s[2821]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[2822]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2823]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[2824]! } + public var Channel_Setup_TypePublic: String { return self._s[2827]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2815]!, self._r[2815]!, [_0]) + return formatWithArgumentRanges(self._s[2828]!, self._r[2828]!, [_0]) } - public var Channel_TypeSetup_Title: String { return self._s[2817]! } - public var Map_OpenInMaps: String { return self._s[2819]! } + public var Channel_TypeSetup_Title: String { return self._s[2830]! } + public var Map_OpenInMaps: String { return self._s[2832]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2820]!, self._r[2820]!, [_1]) + return formatWithArgumentRanges(self._s[2833]!, self._r[2833]!, [_1]) } - public var NotificationsSound_Tremolo: String { return self._s[2822]! } + public var NotificationsSound_Tremolo: String { return self._s[2835]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2823]!, self._r[2823]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2836]!, self._r[2836]!, [_1, _2, _3]) } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[2824]! } - public var Passport_PasswordHelp: String { return self._s[2825]! } - public var Login_CodeExpiredError: String { return self._s[2826]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[2827]! } - public var Conversation_TitleUnmute: String { return self._s[2828]! } - public var Passport_Identity_ScansHelp: String { return self._s[2829]! } - public var Passport_Language_lo: String { return self._s[2830]! } - public var Camera_FlashAuto: String { return self._s[2831]! } - public var Common_Cancel: String { return self._s[2832]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[2833]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2834]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[2837]! } + public var Passport_PasswordHelp: String { return self._s[2838]! } + public var Login_CodeExpiredError: String { return self._s[2839]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[2840]! } + public var Conversation_TitleUnmute: String { return self._s[2841]! } + public var Passport_Identity_ScansHelp: String { return self._s[2842]! } + public var Passport_Language_lo: String { return self._s[2843]! } + public var Camera_FlashAuto: String { return self._s[2844]! } + public var Common_Cancel: String { return self._s[2845]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[2846]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2847]! } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2835]!, self._r[2835]!, [_1]) + return formatWithArgumentRanges(self._s[2848]!, self._r[2848]!, [_1]) } - public var Conversation_ReportSpamConfirmation: String { return self._s[2836]! } - public var ChatSettings_Title: String { return self._s[2838]! } - public var Passport_PasswordReset: String { return self._s[2839]! } - public var SocksProxySetup_TypeNone: String { return self._s[2840]! } - public var PhoneNumberHelp_Help: String { return self._s[2842]! } - public var Checkout_EnterPassword: String { return self._s[2843]! } - public var Share_AuthTitle: String { return self._s[2845]! } - public var Activity_UploadingDocument: String { return self._s[2846]! } - public var State_Connecting: String { return self._s[2847]! } - public var Profile_MessageLifetime1w: String { return self._s[2848]! } - public var Conversation_ContextMenuReport: String { return self._s[2849]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[2850]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[2851]! } - public var AuthSessions_Terminate: String { return self._s[2852]! } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[2853]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[2854]! } - public var PhotoEditor_Set: String { return self._s[2855]! } - public var EmptyGroupInfo_Title: String { return self._s[2856]! } - public var Login_PadPhoneHelp: String { return self._s[2857]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[2860]! } - public var NotificationsSound_Complete: String { return self._s[2861]! } - public var Group_Info_AdminLog: String { return self._s[2862]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[2863]! } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[2864]! } - public var Conversation_Admin: String { return self._s[2866]! } - public var Conversation_GifTooltip: String { return self._s[2867]! } - public var Passport_NotLoggedInMessage: String { return self._s[2868]! } - public var Profile_MessageLifetimeForever: String { return self._s[2869]! } - public var SharedMedia_EmptyTitle: String { return self._s[2871]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[2873]! } - public var Username_Help: String { return self._s[2874]! } - public var DialogList_LanguageTooltip: String { return self._s[2876]! } - public var Map_LoadError: String { return self._s[2877]! } - public var Channel_AdminLog_AddMembers: String { return self._s[2878]! } - public var Notification_Exceptions_NewException: String { return self._s[2879]! } - public var TwoStepAuth_EmailTitle: String { return self._s[2880]! } - public var WatchRemote_AlertText: String { return self._s[2881]! } - public var ChatSettings_ConnectionType_Title: String { return self._s[2884]! } - public var Passport_Address_CountryPlaceholder: String { return self._s[2885]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[2849]! } + public var ChatSettings_Title: String { return self._s[2851]! } + public var Passport_PasswordReset: String { return self._s[2852]! } + public var SocksProxySetup_TypeNone: String { return self._s[2853]! } + public var PhoneNumberHelp_Help: String { return self._s[2855]! } + public var Checkout_EnterPassword: String { return self._s[2856]! } + public var Share_AuthTitle: String { return self._s[2858]! } + public var Activity_UploadingDocument: String { return self._s[2859]! } + public var State_Connecting: String { return self._s[2860]! } + public var Profile_MessageLifetime1w: String { return self._s[2861]! } + public var Conversation_ContextMenuReport: String { return self._s[2862]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[2863]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[2864]! } + public var AuthSessions_Terminate: String { return self._s[2865]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[2866]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[2867]! } + public var PhotoEditor_Set: String { return self._s[2868]! } + public var EmptyGroupInfo_Title: String { return self._s[2869]! } + public var Login_PadPhoneHelp: String { return self._s[2870]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[2873]! } + public var NotificationsSound_Complete: String { return self._s[2874]! } + public var Group_Info_AdminLog: String { return self._s[2875]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[2876]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[2877]! } + public var Conversation_Admin: String { return self._s[2879]! } + public var Conversation_GifTooltip: String { return self._s[2880]! } + public var Passport_NotLoggedInMessage: String { return self._s[2881]! } + public var Profile_MessageLifetimeForever: String { return self._s[2882]! } + public var SharedMedia_EmptyTitle: String { return self._s[2884]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[2886]! } + public var Username_Help: String { return self._s[2887]! } + public var DialogList_LanguageTooltip: String { return self._s[2889]! } + public var Map_LoadError: String { return self._s[2890]! } + public var Channel_AdminLog_AddMembers: String { return self._s[2891]! } + public var Notification_Exceptions_NewException: String { return self._s[2892]! } + public var TwoStepAuth_EmailTitle: String { return self._s[2893]! } + public var WatchRemote_AlertText: String { return self._s[2894]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[2897]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[2898]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2886]!, self._r[2886]!, [_0]) + return formatWithArgumentRanges(self._s[2899]!, self._r[2899]!, [_0]) } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2887]!, self._r[2887]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2900]!, self._r[2900]!, [_1, _2, _3]) } - public var Group_AdminLog_EmptyText: String { return self._s[2888]! } - public var AccessDenied_VideoMicrophone: String { return self._s[2890]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[2891]! } - public var Cache_ClearNone: String { return self._s[2892]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[2893]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[2894]! } + public var Group_AdminLog_EmptyText: String { return self._s[2901]! } + public var AccessDenied_VideoMicrophone: String { return self._s[2903]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[2904]! } + public var Cache_ClearNone: String { return self._s[2905]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[2906]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[2907]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2895]!, self._r[2895]!, [_0]) + return formatWithArgumentRanges(self._s[2908]!, self._r[2908]!, [_0]) } - public var Passport_Identity_Country: String { return self._s[2896]! } + public var Passport_Identity_Country: String { return self._s[2909]! } public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2897]!, self._r[2897]!, [_0]) + return formatWithArgumentRanges(self._s[2910]!, self._r[2910]!, [_0]) } - public var AccessDenied_Settings: String { return self._s[2898]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2899]! } - public var Month_ShortMay: String { return self._s[2900]! } - public var Compose_NewGroup: String { return self._s[2901]! } - public var Group_Setup_TypePrivate: String { return self._s[2903]! } - public var Login_PadPhoneHelpTitle: String { return self._s[2905]! } - public var Appearance_ThemeDayClassic: String { return self._s[2906]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[2907]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[2908]! } - public var Conversation_typing: String { return self._s[2910]! } - public var Paint_Masks: String { return self._s[2911]! } - public var Username_InvalidTaken: String { return self._s[2912]! } - public var Call_StatusNoAnswer: String { return self._s[2913]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[2914]! } - public var Passport_Identity_Selfie: String { return self._s[2915]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[2916]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2917]! } - public var Conversation_ClearSecretHistory: String { return self._s[2918]! } - public var NetworkUsageSettings_Title: String { return self._s[2920]! } - public var Your_cards_security_code_is_invalid: String { return self._s[2922]! } + public var AccessDenied_Settings: String { return self._s[2911]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2912]! } + public var Month_ShortMay: String { return self._s[2913]! } + public var Compose_NewGroup: String { return self._s[2914]! } + public var Group_Setup_TypePrivate: String { return self._s[2916]! } + public var Login_PadPhoneHelpTitle: String { return self._s[2918]! } + public var Appearance_ThemeDayClassic: String { return self._s[2919]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[2920]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[2921]! } + public var Conversation_typing: String { return self._s[2923]! } + public var Paint_Masks: String { return self._s[2924]! } + public var Username_InvalidTaken: String { return self._s[2925]! } + public var Call_StatusNoAnswer: String { return self._s[2926]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[2927]! } + public var Passport_Identity_Selfie: String { return self._s[2928]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[2929]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2930]! } + public var Conversation_ClearSecretHistory: String { return self._s[2931]! } + public var NetworkUsageSettings_Title: String { return self._s[2933]! } + public var Your_cards_security_code_is_invalid: String { return self._s[2935]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2924]!, self._r[2924]!, [_0]) + return formatWithArgumentRanges(self._s[2937]!, self._r[2937]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2925]!, self._r[2925]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2938]!, self._r[2938]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[2927]! } - public var Map_LiveLocationTitle: String { return self._s[2928]! } - public var Login_InfoAvatarAdd: String { return self._s[2929]! } - public var Passport_Identity_FilesView: String { return self._s[2930]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[2931]! } - public var Privacy_Calls_NeverAllow: String { return self._s[2932]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[2940]! } + public var Map_LiveLocationTitle: String { return self._s[2941]! } + public var Login_InfoAvatarAdd: String { return self._s[2942]! } + public var Passport_Identity_FilesView: String { return self._s[2943]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[2944]! } + public var Privacy_Calls_NeverAllow: String { return self._s[2945]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2933]!, self._r[2933]!, [_0]) + return formatWithArgumentRanges(self._s[2946]!, self._r[2946]!, [_0]) } - public var TwoStepAuth_ConfirmationText: String { return self._s[2934]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[2935]! } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2936]! } - public var Tour_Title2: String { return self._s[2937]! } - public var Conversation_FileOpenIn: String { return self._s[2938]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[2939]! } - public var Wallpaper_Set: String { return self._s[2940]! } - public var Passport_Identity_Translations: String { return self._s[2942]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[2947]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[2948]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2949]! } + public var Tour_Title2: String { return self._s[2950]! } + public var Conversation_FileOpenIn: String { return self._s[2951]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[2952]! } + public var Wallpaper_Set: String { return self._s[2953]! } + public var Passport_Identity_Translations: String { return self._s[2955]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2943]!, self._r[2943]!, [_0]) + return formatWithArgumentRanges(self._s[2956]!, self._r[2956]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[2944]! } + public var Channel_LeaveChannel: String { return self._s[2957]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2945]!, self._r[2945]!, [_1]) + return formatWithArgumentRanges(self._s[2958]!, self._r[2958]!, [_1]) } - public var PhotoEditor_HighlightsTint: String { return self._s[2946]! } - public var Passport_Email_Delete: String { return self._s[2947]! } - public var Conversation_Mute: String { return self._s[2949]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[2951]! } + public var PhotoEditor_HighlightsTint: String { return self._s[2959]! } + public var Passport_Email_Delete: String { return self._s[2960]! } + public var Conversation_Mute: String { return self._s[2962]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[2964]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2953]!, self._r[2953]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2966]!, self._r[2966]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[2954]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[2955]! } - public var Common_No: String { return self._s[2956]! } - public var Weekday_Sunday: String { return self._s[2957]! } - public var Notification_Reply: String { return self._s[2958]! } - public var Conversation_ViewMessage: String { return self._s[2959]! } + public var Calls_CallTabDescription: String { return self._s[2967]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[2968]! } + public var Common_No: String { return self._s[2969]! } + public var Weekday_Sunday: String { return self._s[2970]! } + public var Notification_Reply: String { return self._s[2971]! } + public var Conversation_ViewMessage: String { return self._s[2972]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2960]!, self._r[2960]!, [_0]) + return formatWithArgumentRanges(self._s[2973]!, self._r[2973]!, [_0]) } public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2961]!, self._r[2961]!, [_0]) + return formatWithArgumentRanges(self._s[2974]!, self._r[2974]!, [_0]) } - public var Message_PinnedDocumentMessage: String { return self._s[2962]! } - public var DialogList_TabTitle: String { return self._s[2964]! } - public var Passport_FieldEmail: String { return self._s[2965]! } - public var Conversation_UnpinMessageAlert: String { return self._s[2966]! } - public var Passport_Address_TypeBankStatement: String { return self._s[2967]! } - public var Passport_Identity_ExpiryDate: String { return self._s[2968]! } - public var Privacy_Calls_P2P: String { return self._s[2969]! } + public var Message_PinnedDocumentMessage: String { return self._s[2975]! } + public var DialogList_TabTitle: String { return self._s[2977]! } + public var Passport_FieldEmail: String { return self._s[2978]! } + public var Conversation_UnpinMessageAlert: String { return self._s[2979]! } + public var Passport_Address_TypeBankStatement: String { return self._s[2980]! } + public var Passport_Identity_ExpiryDate: String { return self._s[2981]! } + public var Privacy_Calls_P2P: String { return self._s[2982]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2971]!, self._r[2971]!, [_0]) + return formatWithArgumentRanges(self._s[2984]!, self._r[2984]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[2972]! } - public var EnterPasscode_ChangeTitle: String { return self._s[2973]! } - public var Passport_InfoText: String { return self._s[2974]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[2975]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[2985]! } + public var EnterPasscode_ChangeTitle: String { return self._s[2986]! } + public var Passport_InfoText: String { return self._s[2987]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[2988]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2976]!, self._r[2976]!, [_0]) - } - public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2977]!, self._r[2977]!, [_1, _2, _3]) - } - public var Passport_Identity_EditDriversLicense: String { return self._s[2978]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[2980]! } - public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2981]!, self._r[2981]!, [_1, _2]) - } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[2983]! } - public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2985]!, self._r[2985]!, [_0]) - } - public var DialogList_Unread: String { return self._s[2986]! } - public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2987]!, self._r[2987]!, [_1, _2]) - } - public var User_DeletedAccount: String { return self._s[2988]! } - public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2989]!, self._r[2989]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[2990]! } - public var SharedMedia_CategoryMedia: String { return self._s[2991]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[2992]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[2993]! } - public var Watch_ChatList_Compose: String { return self._s[2994]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2995]! } - public var Watch_Microphone_Access: String { return self._s[2996]! } - public var Group_Setup_HistoryHeader: String { return self._s[2997]! } - public var Activity_UploadingPhoto: String { return self._s[2998]! } - public var Conversation_Edit: String { return self._s[3000]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[3001]! } - public var Login_TermsOfServiceDecline: String { return self._s[3002]! } - public var Message_PinnedContactMessage: String { return self._s[3003]! } + public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2990]!, self._r[2990]!, [_1, _2, _3]) + } + public var Passport_Identity_EditDriversLicense: String { return self._s[2991]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[2993]! } + public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2994]!, self._r[2994]!, [_1, _2]) + } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[2996]! } + public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2998]!, self._r[2998]!, [_0]) + } + public var DialogList_Unread: String { return self._s[2999]! } + public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3000]!, self._r[3000]!, [_1, _2]) + } + public var User_DeletedAccount: String { return self._s[3001]! } + public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3002]!, self._r[3002]!, [_0]) + } + public var UserInfo_NotificationsDefault: String { return self._s[3003]! } + public var SharedMedia_CategoryMedia: String { return self._s[3004]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3005]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3006]! } + public var Watch_ChatList_Compose: String { return self._s[3007]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3008]! } + public var Watch_Microphone_Access: String { return self._s[3009]! } + public var Group_Setup_HistoryHeader: String { return self._s[3010]! } + public var Activity_UploadingPhoto: String { return self._s[3011]! } + public var Conversation_Edit: String { return self._s[3013]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[3014]! } + public var Login_TermsOfServiceDecline: String { return self._s[3015]! } + public var Message_PinnedContactMessage: String { return self._s[3016]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3004]!, self._r[3004]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3017]!, self._r[3017]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3005]!, self._r[3005]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[3018]!, self._r[3018]!, [_1, _2, _3, _4, _5]) } - public var TwoStepAuth_AdditionalPassword: String { return self._s[3007]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[3020]! } public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3008]!, self._r[3008]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3021]!, self._r[3021]!, [_1, _2]) } - public var Passport_Phone_EnterOtherNumber: String { return self._s[3009]! } - public var Message_PinnedPhotoMessage: String { return self._s[3010]! } - public var Passport_FieldPhone: String { return self._s[3011]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3012]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[3014]! } - public var Conversation_Call: String { return self._s[3015]! } - public var Common_TakePhoto: String { return self._s[3017]! } - public var Channel_NotificationLoading: String { return self._s[3018]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[3022]! } + public var Message_PinnedPhotoMessage: String { return self._s[3023]! } + public var Passport_FieldPhone: String { return self._s[3024]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3025]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[3027]! } + public var Conversation_Call: String { return self._s[3028]! } + public var Common_TakePhoto: String { return self._s[3030]! } + public var Channel_NotificationLoading: String { return self._s[3031]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3019]!, self._r[3019]!, [_0]) + return formatWithArgumentRanges(self._s[3032]!, self._r[3032]!, [_0]) } public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3020]!, self._r[3020]!, [_1]) + return formatWithArgumentRanges(self._s[3033]!, self._r[3033]!, [_1]) } - public var Permissions_SiriTitle_v0: String { return self._s[3021]! } + public var Permissions_SiriTitle_v0: String { return self._s[3034]! } public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3022]!, self._r[3022]!, [_0]) + return formatWithArgumentRanges(self._s[3035]!, self._r[3035]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[3023]! } - public var Common_edit: String { return self._s[3024]! } - public var PrivacySettings_AuthSessions: String { return self._s[3025]! } - public var Month_ShortJune: String { return self._s[3026]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3027]! } - public var Call_ReportSend: String { return self._s[3028]! } - public var Watch_LastSeen_JustNow: String { return self._s[3029]! } - public var Notifications_MessageNotifications: String { return self._s[3030]! } - public var WallpaperSearch_ColorGreen: String { return self._s[3031]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[3033]! } - public var Group_Status: String { return self._s[3034]! } + public var Channel_MessagePhotoRemoved: String { return self._s[3036]! } + public var Common_edit: String { return self._s[3037]! } + public var PrivacySettings_AuthSessions: String { return self._s[3038]! } + public var Month_ShortJune: String { return self._s[3039]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3040]! } + public var Call_ReportSend: String { return self._s[3041]! } + public var Watch_LastSeen_JustNow: String { return self._s[3042]! } + public var Notifications_MessageNotifications: String { return self._s[3043]! } + public var WallpaperSearch_ColorGreen: String { return self._s[3044]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[3046]! } + public var Group_Status: String { return self._s[3047]! } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3035]!, self._r[3035]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3048]!, self._r[3048]!, [_0, _1]) } - public var ShareMenu_ShareTo: String { return self._s[3036]! } - public var Conversation_Moderate_Ban: String { return self._s[3037]! } + public var ShareMenu_ShareTo: String { return self._s[3049]! } + public var Conversation_Moderate_Ban: String { return self._s[3050]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3038]!, self._r[3038]!, [_0]) + return formatWithArgumentRanges(self._s[3051]!, self._r[3051]!, [_0]) } - public var SharedMedia_ViewInChat: String { return self._s[3039]! } - public var Map_LiveLocationFor8Hours: String { return self._s[3040]! } + public var SharedMedia_ViewInChat: String { return self._s[3052]! } + public var Map_LiveLocationFor8Hours: String { return self._s[3053]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3041]!, self._r[3041]!, [_1]) + return formatWithArgumentRanges(self._s[3054]!, self._r[3054]!, [_1]) } public func PUSH_PINNED_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3042]!, self._r[3042]!, [_1]) + return formatWithArgumentRanges(self._s[3055]!, self._r[3055]!, [_1]) } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3044]!, self._r[3044]!, [_0]) + return formatWithArgumentRanges(self._s[3057]!, self._r[3057]!, [_0]) } - public var Map_OpenInHereMaps: String { return self._s[3045]! } - public var Appearance_ReduceMotion: String { return self._s[3046]! } + public var Map_OpenInHereMaps: String { return self._s[3058]! } + public var Appearance_ReduceMotion: String { return self._s[3059]! } public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3047]!, self._r[3047]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3060]!, self._r[3060]!, [_1, _2]) } - public var Channel_Setup_TypePublicHelp: String { return self._s[3048]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[3049]! } - public var PhotoEditor_Skip: String { return self._s[3050]! } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + public var Channel_Setup_TypePublicHelp: String { return self._s[3061]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[3062]! } + public var PhotoEditor_Skip: String { return self._s[3063]! } + public func ForwardedGifs(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Link(_ value: Int32) -> String { + public func Media_ShareVideo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_Photo(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, "\(value)") } - public func InviteText_ContactsCountText(_ value: Int32) -> String { + public func MuteExpires_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteExpires_Days(_ value: Int32) -> String { + public func Map_ETAHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notification_GameScoreExtended(_ value: Int32) -> String { + public func Notification_GameScoreSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + public func UserCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, "\(value)") } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Media_ShareItem(_ value: Int32) -> String { + public func InviteText_ContactsCountText(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, "\(value)") } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + public func Passport_Scans(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedLocations(_ value: Int32) -> String { + public func Contacts_ImportersCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Hours(_ value: Int32) -> String { + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, "\(value)") } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + public func ForwardedVideoMessages(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { + public func SharedMedia_Generic(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, "\(value)") } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, _1, _2) + public func MessageTimer_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, "\(value)") } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, "\(value)") } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func MuteFor_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func MessageTimer_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func MessagePoll_VotedCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func MuteExpires_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func MessageTimer_Weeks(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Passport_Scans(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func MessageTimer_ShortHours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedVideoMessages(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func SharedMedia_Video(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func Notification_GameScoreSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func Conversation_StatusMembers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func Media_ShareVideo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, _2, _1, _3) } public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func QuickSend_Photos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func SharedMedia_Video(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func ForwardedVideos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func AttachmentMenu_SendGif(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func Conversation_StatusOnline(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func Media_ShareItem(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, "\(value)") } public func MessageTimer_Years(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_Months(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_ShortMinutes(_ value: Int32) -> String { + public func MessageTimer_ShortHours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func Call_Seconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedPolls(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { + public func SharedMedia_Photo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, "\(value)") } @@ -3604,215 +3617,215 @@ public final class PresentationStrings { let form = presentationStringsPluralizationForm(self.lc, selector) return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { + public func Conversation_StatusSubscribers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, "\(value)") } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + public func Call_ShortSeconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedGifs(_ value: Int32) -> String { + public func ForwardedPhotos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, "\(value)") } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessageTimer_ShortDays(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func Invitation_Members(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func MuteExpires_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, "\(value)") - } public func SharedMedia_File(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, "\(value)") } public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedMessages(_ value: Int32) -> String { + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, "\(value)") } - public func UserCount(_ value: Int32) -> String { + public func MuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, "\(value)") } - public func QuickSend_Photos(_ value: Int32) -> String { + public func MessagePoll_VotedCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, "\(value)") } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_Minutes(_ value: Int32) -> String { + public func SharedMedia_Link(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Call_ShortSeconds(_ value: Int32) -> String { + public func Invitation_Members(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedPolls(_ value: Int32) -> String { + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, "\(value)") } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func ForwardedStickers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func LastSeen_HoursAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func MessageTimer_Seconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func ForwardedAudios(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, "\(value)") + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, _1, _2) } public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func Call_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func Conversation_StatusMembers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func ForwardedStickers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func AttachmentMenu_SendItem(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func MessageTimer_Weeks(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func ForwardedLocations(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func MuteFor_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func MessageTimer_Seconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func MessageTimer_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func Call_ShortMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func MessageTimer_ShortDays(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, "\(value)") } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, _1, _2) + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + public func ForwardedAudios(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func ForwardedFiles(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func Call_Seconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func ForwardedVideos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, "\(value)") - } - public func Map_ETAMinutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, "\(value)") + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, _1, _2) } public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, _1, _2) } - public func Contacts_ImportersCount(_ value: Int32) -> String { + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MuteExpires_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func Notifications_Exceptions(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, "\(value)") + } + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func ForwardedMessages(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, "\(value)") } - public func ForwardedPhotos(_ value: Int32) -> String { + public func Map_ETAMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, "\(value)") } @@ -3820,17 +3833,17 @@ public final class PresentationStrings { let form = presentationStringsPluralizationForm(self.lc, selector) return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, _0, _1) } - public func Notifications_Exceptions(_ value: Int32) -> String { + public func MessageTimer_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, "\(value)") } - public func Conversation_StatusOnline(_ value: Int32) -> String { + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, "\(value)") } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, _1, _2) + public func Notification_GameScoreExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, "\(value)") } init(primaryComponent: PresentationStringsComponent, secondaryComponent: PresentationStringsComponent?) { diff --git a/TelegramUI/Resources/PresentationStrings.mapping b/TelegramUI/Resources/PresentationStrings.mapping index fb51352616..8df1f054ad 100644 Binary files a/TelegramUI/Resources/PresentationStrings.mapping and b/TelegramUI/Resources/PresentationStrings.mapping differ diff --git a/TelegramUI/ThemeGalleryController.swift b/TelegramUI/ThemeGalleryController.swift deleted file mode 100644 index 19b5976528..0000000000 --- a/TelegramUI/ThemeGalleryController.swift +++ /dev/null @@ -1,272 +0,0 @@ -import Foundation -import Display -import QuickLook -import Postbox -import SwiftSignalKit -import AsyncDisplayKit -import TelegramCore - -enum ThemeGalleryEntry: Equatable { - case wallpaper(TelegramWallpaper) - - static func ==(lhs: ThemeGalleryEntry, rhs: ThemeGalleryEntry) -> Bool { - switch lhs { - case let .wallpaper(wallpaper): - if case .wallpaper(wallpaper) = rhs { - return true - } else { - return false - } - } - } -} - -final class ThemePreviewControllerPresentationArguments { - let transitionArguments: (ThemeGalleryEntry) -> GalleryTransitionArguments? - - init(transitionArguments: @escaping (ThemeGalleryEntry) -> GalleryTransitionArguments?) { - self.transitionArguments = transitionArguments - } -} - -class ThemeGalleryController: ViewController { - private var galleryNode: GalleryControllerNode { - return self.displayNode as! GalleryControllerNode - } - - private let account: Account - - private let _ready = Promise() - override var ready: Promise { - return self._ready - } - private var didSetReady = false - - private let disposable = MetaDisposable() - - private var presentationData: PresentationData - private var presentationDataDisposable: Disposable? - - private var entries: [ThemeGalleryEntry] = [] - private var centralEntryIndex: Int? - - private let centralItemTitle = Promise() - private let centralItemTitleView = Promise() - private let centralItemNavigationStyle = Promise() - private let centralItemFooterContentNode = Promise() - private let centralItemAttributesDisposable = DisposableSet(); - - private var validLayout: (ContainerViewLayout, CGFloat)? - - private var toolbarNode: ThemeGalleryToolbarNode? - - private let _hiddenMedia = Promise(nil) - var hiddenMedia: Signal { - return self._hiddenMedia.get() - } - - init(account: Account, wallpapers: [TelegramWallpaper], at centralWallpaper: TelegramWallpaper) { - self.account = account - self.presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 } - - super.init(navigationBarPresentationData: NavigationBarPresentationData(presentationData: presentationData)) - - self.title = self.presentationData.strings.Wallpaper_Title - self.statusBar.statusBarStyle = self.presentationData.theme.rootController.statusBar.style.style - - let initialEntries: [ThemeGalleryEntry] = wallpapers.map { ThemeGalleryEntry.wallpaper($0) } - - let entriesSignal: Signal<[ThemeGalleryEntry], NoError> = .single(initialEntries) - - self.disposable.set((entriesSignal |> deliverOnMainQueue).start(next: { [weak self] entries in - if let strongSelf = self { - strongSelf.entries = entries - strongSelf.centralEntryIndex = wallpapers.index(of: centralWallpaper)! - if strongSelf.isViewLoaded { - strongSelf.galleryNode.pager.replaceItems(strongSelf.entries.map({ ThemeGalleryItem(account: account, entry: $0) }), centralItemIndex: strongSelf.centralEntryIndex, keepFirst: true) - - let ready = strongSelf.galleryNode.pager.ready() |> timeout(2.0, queue: Queue.mainQueue(), alternate: .single(Void())) |> afterNext { [weak strongSelf] _ in - strongSelf?.didSetReady = true - } - strongSelf._ready.set(ready |> map { true }) - } - } - })) - - self.presentationDataDisposable = (account.telegramApplicationContext.presentationData - |> deliverOnMainQueue).start(next: { [weak self] presentationData in - if let strongSelf = self { - let previousTheme = strongSelf.presentationData.theme - let previousStrings = strongSelf.presentationData.strings - - strongSelf.presentationData = presentationData - if previousTheme !== presentationData.theme || previousStrings !== presentationData.strings { - strongSelf.updateThemeAndStrings() - } - } - }) - - self.centralItemAttributesDisposable.add(self.centralItemTitle.get().start(next: { [weak self] title in - self?.navigationItem.title = title - })) - - self.centralItemAttributesDisposable.add(self.centralItemTitleView.get().start(next: { [weak self] titleView in - self?.navigationItem.titleView = titleView - })) - - self.centralItemAttributesDisposable.add(self.centralItemFooterContentNode.get().start(next: { [weak self] footerContentNode in - self?.galleryNode.updatePresentationState({ - $0.withUpdatedFooterContentNode(footerContentNode) - }, transition: .immediate) - })) - } - - required init(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - deinit { - self.disposable.dispose() - self.presentationDataDisposable?.dispose() - self.centralItemAttributesDisposable.dispose() - } - - private func updateThemeAndStrings() { - self.statusBar.statusBarStyle = self.presentationData.theme.rootController.statusBar.style.style - self.toolbarNode?.updateThemeAndStrings(theme: self.presentationData.theme, strings: self.presentationData.strings) - } - - @objc func donePressed() { - self.dismiss(forceAway: false) - } - - private func dismiss(forceAway: Bool) { - let completion = { [weak self] in - self?._hiddenMedia.set(.single(nil)) - self?.presentingViewController?.dismiss(animated: false, completion: nil) - } - - self.galleryNode.modalAnimateOut(completion: completion) - } - - override func loadDisplayNode() { - let controllerInteraction = GalleryControllerInteraction(presentController: { [weak self] controller, arguments in - if let strongSelf = self { - strongSelf.present(controller, in: .window(.root), with: arguments, blockInteraction: true) - } - }, dismissController: { [weak self] in - self?.dismiss(forceAway: true) - }, replaceRootController: { controller, ready in - }) - self.displayNode = GalleryControllerNode(controllerInteraction: controllerInteraction, pageGap: 0.0) - self.displayNodeDidLoad() - - self.galleryNode.statusBar = self.statusBar - self.galleryNode.navigationBar = self.navigationBar - - self.galleryNode.transitionDataForCentralItem = { [weak self] in - if let strongSelf = self { - if let centralItemNode = strongSelf.galleryNode.pager.centralItemNode(), let presentationArguments = strongSelf.presentationArguments as? ThemePreviewControllerPresentationArguments { - if let transitionArguments = presentationArguments.transitionArguments(strongSelf.entries[centralItemNode.index]) { - return (transitionArguments.transitionNode, transitionArguments.addToTransitionSurface) - } - } - } - return nil - } - self.galleryNode.dismiss = { [weak self] in - self?._hiddenMedia.set(.single(nil)) - self?.presentingViewController?.dismiss(animated: false, completion: nil) - } - - self.galleryNode.pager.centralItemIndexUpdated = { [weak self] index in - if let strongSelf = self { - var hiddenItem: ThemeGalleryEntry? - if let index = index { - hiddenItem = strongSelf.entries[index] - - if let node = strongSelf.galleryNode.pager.centralItemNode() { - strongSelf.centralItemTitle.set(node.title()) - strongSelf.centralItemTitleView.set(node.titleView()) - strongSelf.centralItemNavigationStyle.set(node.navigationStyle()) - strongSelf.centralItemFooterContentNode.set(node.footerContent()) - } - } - if strongSelf.didSetReady { - strongSelf._hiddenMedia.set(.single(hiddenItem)) - } - } - } - - self.galleryNode.backgroundNode.backgroundColor = nil - self.galleryNode.backgroundNode.isOpaque = false - self.galleryNode.isBackgroundExtendedOverNavigationBar = true - - let presentationData = self.account.telegramApplicationContext.currentPresentationData.with { $0 } - let toolbarNode = ThemeGalleryToolbarNode(theme: presentationData.theme, strings: presentationData.strings) - self.toolbarNode = toolbarNode - self.galleryNode.addSubnode(toolbarNode) - //self.galleryNode.toolbarNode = toolbarNode - toolbarNode.cancel = { [weak self] in - self?.dismiss(forceAway: true) - } - toolbarNode.done = { [weak self] in - if let strongSelf = self { - if let centralItemNode = strongSelf.galleryNode.pager.centralItemNode() { - if !strongSelf.entries.isEmpty { - let wallpaper: TelegramWallpaper - switch strongSelf.entries[centralItemNode.index] { - case let .wallpaper(value): - wallpaper = value - } - let _ = (updatePresentationThemeSettingsInteractively(postbox: strongSelf.account.postbox, { current in - return PresentationThemeSettings(chatWallpaper: wallpaper, chatWallpaperOptions: [], theme: current.theme, themeAccentColor: current.themeAccentColor, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, disableAnimations: current.disableAnimations) - }) |> deliverOnMainQueue).start(completed: { - self?.dismiss(forceAway: true) - }) - } - } - } - } - - let ready = self.galleryNode.pager.ready() |> timeout(2.0, queue: Queue.mainQueue(), alternate: .single(Void())) |> afterNext { [weak self] _ in - self?.didSetReady = true - } - self._ready.set(ready |> map { true }) - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - - self.galleryNode.modalAnimateIn() - } - - override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { - super.containerLayoutUpdated(layout, transition: transition) - - self.galleryNode.frame = CGRect(origin: CGPoint(), size: layout.size) - self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) - - transition.updateFrame(node: self.toolbarNode!, frame: CGRect(origin: CGPoint(x: 0.0, y: layout.size.height - 49.0 - layout.intrinsicInsets.bottom), size: CGSize(width: layout.size.width, height: 49.0 + layout.intrinsicInsets.bottom))) - self.toolbarNode!.updateLayout(size: CGSize(width: layout.size.width, height: 49.0), layout: layout, transition: transition) - - let replace = self.validLayout == nil - self.validLayout = (layout, 0.0) - - if replace { - self.galleryNode.pager.replaceItems(self.entries.map({ ThemeGalleryItem(account: self.account, entry: $0) }), centralItemIndex: self.centralEntryIndex) - } - } -} - -private extension GalleryControllerNode { - func modalAnimateIn(completion: (() -> Void)? = nil) { - self.layer.animatePosition(from: CGPoint(x: self.layer.position.x, y: self.layer.position.y + self.layer.bounds.size.height), to: self.layer.position, duration: 0.5, timingFunction: kCAMediaTimingFunctionSpring) - } - - func modalAnimateOut(completion: (() -> Void)? = nil) { - self.layer.animatePosition(from: self.layer.position, to: CGPoint(x: self.layer.position.x, y: self.layer.position.y + self.layer.bounds.size.height), duration: 0.2, timingFunction: kCAMediaTimingFunctionEaseInEaseOut, removeOnCompletion: false, completion: { _ in - completion?() - }) - } -} diff --git a/TelegramUI/ThemeGalleryItem.swift b/TelegramUI/ThemeGalleryItem.swift deleted file mode 100644 index 36920ab51b..0000000000 --- a/TelegramUI/ThemeGalleryItem.swift +++ /dev/null @@ -1,220 +0,0 @@ -import Foundation -import Display -import AsyncDisplayKit -import SwiftSignalKit -import Postbox -import TelegramCore - -class ThemeGalleryItem: GalleryItem { - let account: Account - let entry: ThemeGalleryEntry - - init(account: Account, entry: ThemeGalleryEntry) { - self.account = account - self.entry = entry - } - - func node() -> GalleryItemNode { - let node = ThemeGalleryItemNode(account: self.account) - node.setEntry(self.entry) - return node - } - - func updateNode(node: GalleryItemNode) { - if let node = node as? ThemeGalleryItemNode { - node.setEntry(self.entry) - } - } - - func thumbnailItem() -> (Int64, GalleryThumbnailItem)? { - return nil - } -} - -final class ThemeGalleryItemNode: ZoomableContentGalleryItemNode { - private let account: Account - - private var entry: ThemeGalleryEntry? - - private let imageNode: TransformImageNode - fileprivate let _ready = Promise() - fileprivate let _title = Promise() - - private var fetchDisposable = MetaDisposable() - - init(account: Account) { - self.account = account - - self.imageNode = TransformImageNode() - - super.init() - - self.backgroundColor = .clear - - self.imageNode.imageUpdated = { [weak self] _ in - self?._ready.set(.single(Void())) - } - - self.imageNode.view.contentMode = .scaleAspectFill - self.imageNode.clipsToBounds = true - } - - deinit { - self.fetchDisposable.dispose() - } - - override func ready() -> Signal { - return self._ready.get() - } - - override func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) { - super.containerLayoutUpdated(layout, navigationBarHeight: navigationBarHeight, transition: transition) - } - - fileprivate func setEntry(_ entry: ThemeGalleryEntry) { - if self.entry != entry { - self.entry = entry - - switch entry { - case let .wallpaper(wallpaper): - switch wallpaper { - case .builtin: - let displaySize = CGSize(width: 640.0, height: 1136.0) - self.imageNode.asyncLayout()(TransformImageArguments(corners: ImageCorners(), imageSize: displaySize, boundingSize: displaySize, intrinsicInsets: UIEdgeInsets()))() - self.imageNode.setSignal(settingsBuiltinWallpaperImage(account: self.account), dispatchOnDisplayLink: false) - self.zoomableContent = (displaySize, self.imageNode) - case let .color(color): - self.imageNode.isHidden = true - self.backgroundColor = UIColor(rgb: UInt32(bitPattern: color)) - case let .image(representations): - if let largestSize = largestImageRepresentation(representations) { - let displaySize = largestSize.dimensions.fitted(CGSize(width: 1280.0, height: 1280.0)).dividedByScreenScale().integralFloor - self.imageNode.asyncLayout()(TransformImageArguments(corners: ImageCorners(), imageSize: displaySize, boundingSize: displaySize, intrinsicInsets: UIEdgeInsets()))() - - let convertedRepresentations: [ImageRepresentationWithReference] = representations.map({ ImageRepresentationWithReference(representation: $0, reference: .wallpaper(resource: $0.resource)) }) - self.imageNode.setSignal(chatAvatarGalleryPhoto(account: account, representations: convertedRepresentations), dispatchOnDisplayLink: false) - self.zoomableContent = (largestSize.dimensions, self.imageNode) - - if let largestIndex = convertedRepresentations.index(where: { $0.representation == largestSize }) { - self.fetchDisposable.set(fetchedMediaResource(postbox: self.account.postbox, reference: convertedRepresentations[largestIndex].reference).start()) - } - } else { - self._ready.set(.single(Void())) - } - case let .file(file): - let dimensions = file.file.dimensions ?? CGSize(width: 100.0, height: 100.0) - let displaySize = dimensions.fitted(CGSize(width: 1280.0, height: 1280.0)).dividedByScreenScale().integralFloor - self.imageNode.asyncLayout()(TransformImageArguments(corners: ImageCorners(), imageSize: displaySize, boundingSize: displaySize, intrinsicInsets: UIEdgeInsets()))() - - var convertedRepresentations: [ImageRepresentationWithReference] = [] - for representation in file.file.previewRepresentations { - convertedRepresentations.append(ImageRepresentationWithReference(representation: representation, reference: .standalone(resource: representation.resource))) - } - convertedRepresentations.append(ImageRepresentationWithReference(representation: .init(dimensions: dimensions, resource: file.file.resource), reference: .standalone(resource: file.file.resource))) - self.imageNode.setSignal(chatAvatarGalleryPhoto(account: account, representations: convertedRepresentations), dispatchOnDisplayLink: false) - self.zoomableContent = (dimensions, self.imageNode) - - self.fetchDisposable.set(fetchedMediaResource(postbox: self.account.postbox, reference: convertedRepresentations[convertedRepresentations.count - 1].reference).start()) - } - } - } - } - - override func animateIn(from node: (ASDisplayNode, () -> UIView?), addToTransitionSurface: (UIView) -> Void) { - var transformedFrame = node.0.view.convert(node.0.view.bounds, to: self.imageNode.view) - let transformedSuperFrame = node.0.view.convert(node.0.view.bounds, to: self.imageNode.view.superview) - let transformedSelfFrame = node.0.view.convert(node.0.view.bounds, to: self.view) - let transformedCopyViewFinalFrame = self.imageNode.view.convert(self.imageNode.view.bounds, to: self.view) - - let copyView = node.1()! - - self.view.insertSubview(copyView, belowSubview: self.scrollNode.view) - copyView.frame = transformedSelfFrame - - copyView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.25, removeOnCompletion: false, completion: { [weak copyView] _ in - copyView?.removeFromSuperview() - }) - - copyView.layer.animatePosition(from: CGPoint(x: transformedSelfFrame.midX, y: transformedSelfFrame.midY), to: CGPoint(x: transformedCopyViewFinalFrame.midX, y: transformedCopyViewFinalFrame.midY), duration: 0.25, timingFunction: kCAMediaTimingFunctionSpring, removeOnCompletion: false) - let scale = CGSize(width: transformedCopyViewFinalFrame.size.width / transformedSelfFrame.size.width, height: transformedCopyViewFinalFrame.size.height / transformedSelfFrame.size.height) - copyView.layer.animate(from: NSValue(caTransform3D: CATransform3DIdentity), to: NSValue(caTransform3D: CATransform3DMakeScale(scale.width, scale.height, 1.0)), keyPath: "transform", timingFunction: kCAMediaTimingFunctionSpring, duration: 0.25, removeOnCompletion: false) - - self.imageNode.layer.animatePosition(from: CGPoint(x: transformedSuperFrame.midX, y: transformedSuperFrame.midY), to: self.imageNode.layer.position, duration: 0.25, timingFunction: kCAMediaTimingFunctionSpring) - self.imageNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.07) - - transformedFrame.origin = CGPoint() - - let transform = CATransform3DScale(self.imageNode.layer.transform, transformedFrame.size.width / self.imageNode.layer.bounds.size.width, transformedFrame.size.height / self.imageNode.layer.bounds.size.height, 1.0) - self.imageNode.layer.animate(from: NSValue(caTransform3D: transform), to: NSValue(caTransform3D: self.imageNode.layer.transform), keyPath: "transform", timingFunction: kCAMediaTimingFunctionSpring, duration: 0.25) - - self.imageNode.clipsToBounds = true - self.imageNode.layer.animate(from: (self.imageNode.frame.width / 2.0) as NSNumber, to: 0.0 as NSNumber, keyPath: "cornerRadius", timingFunction: kCAMediaTimingFunctionDefault, duration: 0.18, removeOnCompletion: false, completion: { [weak self] value in - if value { - self?.imageNode.clipsToBounds = false - } - }) - } - - override func animateOut(to node: (ASDisplayNode, () -> UIView?), addToTransitionSurface: (UIView) -> Void, completion: @escaping () -> Void) { - var transformedFrame = node.0.view.convert(node.0.view.bounds, to: self.imageNode.view) - let transformedSuperFrame = node.0.view.convert(node.0.view.bounds, to: self.imageNode.view.superview) - let transformedSelfFrame = node.0.view.convert(node.0.view.bounds, to: self.view) - let transformedCopyViewInitialFrame = self.imageNode.view.convert(self.imageNode.view.bounds, to: self.view) - - var positionCompleted = false - var boundsCompleted = false - var copyCompleted = false - - let copyView = node.1()! - - self.view.insertSubview(copyView, belowSubview: self.scrollNode.view) - copyView.frame = transformedSelfFrame - - let intermediateCompletion = { [weak copyView] in - if positionCompleted && boundsCompleted && copyCompleted { - copyView?.removeFromSuperview() - completion() - } - } - - let durationFactor = 1.0 - - copyView.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.1 * durationFactor, removeOnCompletion: false) - - copyView.layer.animatePosition(from: CGPoint(x: transformedCopyViewInitialFrame.midX, y: transformedCopyViewInitialFrame.midY), to: CGPoint(x: transformedSelfFrame.midX, y: transformedSelfFrame.midY), duration: 0.25 * durationFactor, timingFunction: kCAMediaTimingFunctionSpring, removeOnCompletion: false) - let scale = CGSize(width: transformedCopyViewInitialFrame.size.width / transformedSelfFrame.size.width, height: transformedCopyViewInitialFrame.size.height / transformedSelfFrame.size.height) - copyView.layer.animate(from: NSValue(caTransform3D: CATransform3DMakeScale(scale.width, scale.height, 1.0)), to: NSValue(caTransform3D: CATransform3DIdentity), keyPath: "transform", timingFunction: kCAMediaTimingFunctionSpring, duration: 0.25 * durationFactor, removeOnCompletion: false, completion: { _ in - copyCompleted = true - intermediateCompletion() - }) - - self.imageNode.layer.animatePosition(from: self.imageNode.layer.position, to: CGPoint(x: transformedSuperFrame.midX, y: transformedSuperFrame.midY), duration: 0.25 * durationFactor, timingFunction: kCAMediaTimingFunctionSpring, removeOnCompletion: false, completion: { _ in - positionCompleted = true - intermediateCompletion() - }) - - self.imageNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.25 * durationFactor, removeOnCompletion: false) - - transformedFrame.origin = CGPoint() - - let transform = CATransform3DScale(self.imageNode.layer.transform, transformedFrame.size.width / self.imageNode.layer.bounds.size.width, transformedFrame.size.height / self.imageNode.layer.bounds.size.height, 1.0) - self.imageNode.layer.animate(from: NSValue(caTransform3D: self.imageNode.layer.transform), to: NSValue(caTransform3D: transform), keyPath: "transform", timingFunction: kCAMediaTimingFunctionSpring, duration: 0.25 * durationFactor, removeOnCompletion: false, completion: { _ in - boundsCompleted = true - intermediateCompletion() - }) - - self.imageNode.clipsToBounds = true - self.imageNode.layer.animate(from: 0.0 as NSNumber, to: (self.imageNode.frame.width / 2.0) as NSNumber, keyPath: "cornerRadius", timingFunction: kCAMediaTimingFunctionDefault, duration: 0.18 * durationFactor, removeOnCompletion: false) - } - - override func visibilityUpdated(isVisible: Bool) { - super.visibilityUpdated(isVisible: isVisible) - } - - override func title() -> Signal { - return self._title.get() - } - - @objc override func contentTap(_ recognizer: TapLongTapOrDoubleTapGestureRecognizer) { - } -} diff --git a/TelegramUI/ThemeGridController.swift b/TelegramUI/ThemeGridController.swift index 48dae36458..7dae626237 100644 --- a/TelegramUI/ThemeGridController.swift +++ b/TelegramUI/ThemeGridController.swift @@ -64,10 +64,10 @@ final class ThemeGridController: ViewController { } }) -// self.searchContentNode = NavigationBarSearchContentNode(theme: self.presentationData.theme, placeholder: self.presentationData.strings.Wallpaper_Search, activate: { [weak self] in -// self?.activateSearch() -// }) -// self.navigationBar?.setContentNode(self.searchContentNode, animated: false) + self.searchContentNode = NavigationBarSearchContentNode(theme: self.presentationData.theme, placeholder: self.presentationData.strings.Wallpaper_Search, activate: { [weak self] in + self?.activateSearch() + }) + self.navigationBar?.setContentNode(self.searchContentNode, animated: false) } required public init(coder aDecoder: NSCoder) { @@ -84,11 +84,11 @@ final class ThemeGridController: ViewController { if let isEmpty = self.isEmpty, isEmpty { } else { -// if self.editingMode { -// self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.Common_Done, style: .done, target: self, action: #selector(self.donePressed)) -// } else { -// self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.Common_Edit, style: .plain, target: self, action: #selector(self.editPressed)) -// } + if self.editingMode { + self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.Common_Done, style: .done, target: self, action: #selector(self.donePressed)) + } else { + self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.Common_Edit, style: .plain, target: self, action: #selector(self.editPressed)) + } } self.statusBar.statusBarStyle = self.presentationData.theme.rootController.statusBar.style.style @@ -104,6 +104,9 @@ final class ThemeGridController: ViewController { self.displayNode = ThemeGridControllerNode(account: self.account, presentationData: self.presentationData, presentPreviewController: { [weak self] source in if let strongSelf = self { let controller = WallpaperGalleryController(account: strongSelf.account, source: source) + controller.apply = { [weak self, weak controller] wallpaper, mode, cropRect in + + } self?.present(controller, in: .window(.root), with: nil, blockInteraction: true) // let controller = WallpaperListPreviewController(account: strongSelf.account, source: source) // controller.apply = { [weak self, weak controller] wallpaper, mode, cropRect in @@ -165,11 +168,11 @@ final class ThemeGridController: ViewController { if empty { strongSelf.navigationItem.setRightBarButton(nil, animated: true) } else { -// if strongSelf.editingMode { -// strongSelf.navigationItem.rightBarButtonItem = UIBarButtonItem(title: strongSelf.presentationData.strings.Common_Done, style: .done, target: strongSelf, action: #selector(strongSelf.donePressed)) -// } else { -// strongSelf.navigationItem.rightBarButtonItem = UIBarButtonItem(title: strongSelf.presentationData.strings.Common_Edit, style: .plain, target: strongSelf, action: #selector(strongSelf.editPressed)) -// } + if strongSelf.editingMode { + strongSelf.navigationItem.rightBarButtonItem = UIBarButtonItem(title: strongSelf.presentationData.strings.Common_Done, style: .done, target: strongSelf, action: #selector(strongSelf.donePressed)) + } else { + strongSelf.navigationItem.rightBarButtonItem = UIBarButtonItem(title: strongSelf.presentationData.strings.Common_Edit, style: .plain, target: strongSelf, action: #selector(strongSelf.editPressed)) + } } } } diff --git a/TelegramUI/ThemeGridControllerNode.swift b/TelegramUI/ThemeGridControllerNode.swift index 92623b10e4..cf736c6c2c 100644 --- a/TelegramUI/ThemeGridControllerNode.swift +++ b/TelegramUI/ThemeGridControllerNode.swift @@ -233,7 +233,7 @@ final class ThemeGridControllerNode: ASDisplayNode { self.gridNode.addSubnode(self.separatorNode) self.gridNode.addSubnode(self.colorItemNode) self.gridNode.addSubnode(self.galleryItemNode) - //self.gridNode.addSubnode(self.descriptionItemNode) + self.gridNode.addSubnode(self.descriptionItemNode) self.addSubnode(self.gridNode) let wallpapersPromise: Promise<[TelegramWallpaper]> = Promise() @@ -471,7 +471,7 @@ final class ThemeGridControllerNode: ASDisplayNode { let buttonTopInset: CGFloat = 32.0 let buttonHeight: CGFloat = 44.0 - let buttonBottomInset: CGFloat = 35.0 //descriptionLayout.contentSize.height + 17.0 + let buttonBottomInset: CGFloat = descriptionLayout.contentSize.height + 17.0 let buttonInset: CGFloat = buttonTopInset + buttonHeight * 2.0 + buttonBottomInset let buttonOffset = buttonInset + 10.0 diff --git a/TelegramUI/ThemeSettingsChatPreviewItem.swift b/TelegramUI/ThemeSettingsChatPreviewItem.swift index abdd13bfd4..62ba598259 100644 --- a/TelegramUI/ThemeSettingsChatPreviewItem.swift +++ b/TelegramUI/ThemeSettingsChatPreviewItem.swift @@ -94,23 +94,7 @@ class ThemeSettingsChatPreviewItemNode: ListViewItemNode { self.containerNode = ASDisplayNode() self.containerNode.subnodeTransform = CATransform3DMakeRotation(CGFloat.pi, 0.0, 0.0, 1.0) - self.controllerInteraction = ChatControllerInteraction(openMessage: { _, _ in - return false }, openPeer: { _, _, _ in }, openPeerMention: { _ in }, openMessageContextMenu: { _, _, _, _ in }, navigateToMessage: { _, _ in }, clickThroughMessage: { }, toggleMessagesSelection: { _, _ in }, sendMessage: { _ in }, sendSticker: { _, _ in }, sendGif: { _ in }, requestMessageActionCallback: { _, _, _ in }, activateSwitchInline: { _, _ in }, openUrl: { _, _, _ in }, shareCurrentLocation: {}, shareAccountContact: {}, sendBotCommand: { _, _ in }, openInstantPage: { _ in }, openWallpaper: { _ in }, openHashtag: { _, _ in }, updateInputState: { _ in }, updateInputMode: { _ in }, openMessageShareMenu: { _ in - }, presentController: { _, _ in }, navigationController: { - return nil - }, presentGlobalOverlayController: { _, _ in }, callPeer: { _ in }, longTap: { _ in }, openCheckoutOrReceipt: { _ in }, openSearch: { }, setupReply: { _ in - }, canSetupReply: { _ in - return false - }, navigateToFirstDateMessage: { _ in - }, requestRedeliveryOfFailedMessages: { _ in - }, addContact: { _ in - }, rateCall: { _, _ in - }, requestSelectMessagePollOption: { _, _ in - }, openAppStorePage: { - }, requestMessageUpdate: { _ in - }, cancelInteractiveKeyboardGestures: { - }, automaticMediaDownloadSettings: AutomaticMediaDownloadSettings.defaultSettings, - pollActionState: ChatInterfacePollActionState()) + self.controllerInteraction = ChatControllerInteraction.default super.init(layerBacked: false, dynamicBounce: false) diff --git a/TelegramUI/WallpaperColorPanelNode.swift b/TelegramUI/WallpaperColorPanelNode.swift index 2f842e0b26..a985563c86 100644 --- a/TelegramUI/WallpaperColorPanelNode.swift +++ b/TelegramUI/WallpaperColorPanelNode.swift @@ -42,6 +42,7 @@ final class WallpaperColorPanelNode: ASDisplayNode, UITextFieldDelegate { private let doneButton: HighlightableButtonNode private let colorPickerNode: WallpaperColorPickerNode + var previousColor: UIColor? var color: UIColor { get { return self.colorPickerNode.color @@ -126,8 +127,8 @@ final class WallpaperColorPanelNode: ASDisplayNode, UITextFieldDelegate { let fieldHeight: CGFloat = 33.0 let buttonSpacing: CGFloat = keyboardHeight > 0.0 ? 3.0 : 6.0 - let leftInset: CGFloat = 5.0 //42.0 - let rightInset: CGFloat = 5.0 //keyboardHeight > 0.0 ? 42.0 : 5.0 + let leftInset: CGFloat = 5.0 + let rightInset: CGFloat = 5.0 transition.updateFrame(node: self.palleteButton, frame: CGRect(x: 0.0, y: 0.0, width: topPanelHeight, height: topPanelHeight)) transition.updateFrame(node: self.textBackgroundNode, frame: CGRect(x: leftInset, y: (topPanelHeight - fieldHeight) / 2.0, width: size.width - leftInset - rightInset, height: fieldHeight)) @@ -169,11 +170,16 @@ final class WallpaperColorPanelNode: ASDisplayNode, UITextFieldDelegate { return false } + func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { + self.previousColor = self.color + return true + } + @objc func textFieldDidEndEditing(_ textField: UITextField) { if let text = self.textFieldNode.textField.text, text.count == 6, let color = UIColor(hexString: text) { self.setColor(color) } else { - self.setColor(.black) + self.setColor(self.previousColor ?? .black) } } } diff --git a/TelegramUI/WallpaperGalleryController.swift b/TelegramUI/WallpaperGalleryController.swift index e717a72da1..5a806cd211 100644 --- a/TelegramUI/WallpaperGalleryController.swift +++ b/TelegramUI/WallpaperGalleryController.swift @@ -84,15 +84,18 @@ class WallpaperGalleryController: ViewController { private var entries: [WallpaperGalleryEntry] = [] private var centralEntryIndex: Int? - private let centralItemControlsColor = Promise() + private let centralItemSubtitle = Promise() private let centralItemStatus = Promise() + private let centralItemAction = Promise() private let centralItemAttributesDisposable = DisposableSet(); private var validLayout: (ContainerViewLayout, CGFloat)? private var overlayNode: WallpaperGalleryOverlayNode? private var messageNodes: [ListViewItemNode]? - private var toolbarNode: ThemeGalleryToolbarNode? + private var blurredButtonNode: WallpaperOptionButtonNode? + private var motionButtonNode: WallpaperOptionButtonNode? + private var toolbarNode: WallpaperGalleryToolbarNode? init(account: Account, source: WallpaperListSource) { self.account = account @@ -101,17 +104,13 @@ class WallpaperGalleryController: ViewController { super.init(navigationBarPresentationData: NavigationBarPresentationData(presentationData: presentationData)) - self.title = self.presentationData.strings.Wallpaper_Title + self.title = self.presentationData.strings.WallpaperPreview_Title self.statusBar.statusBarStyle = self.presentationData.theme.rootController.statusBar.style.style switch source { case let .list(wallpapers, central, type): self.entries = wallpapers.map { .wallpaper($0) } self.centralEntryIndex = wallpapers.index(of: central)! - - //if case let .wallpapers(wallpaperMode) = type, let mode = wallpaperMode { - // self.segmentedControl.selectedSegmentIndex = Int(clamping: mode.rawValue) - //} case let .slug(slug, file): if let file = file { self.entries = [.wallpaper(.file(id: 0, accessHash: 0, isCreator: false, isDefault: false, slug: slug, file: file))] @@ -133,17 +132,31 @@ class WallpaperGalleryController: ViewController { } self.presentationDataDisposable = (account.telegramApplicationContext.presentationData - |> deliverOnMainQueue).start(next: { [weak self] presentationData in - if let strongSelf = self { - let previousTheme = strongSelf.presentationData.theme - let previousStrings = strongSelf.presentationData.strings - - strongSelf.presentationData = presentationData - if previousTheme !== presentationData.theme || previousStrings !== presentationData.strings { - strongSelf.updateThemeAndStrings() - } + |> deliverOnMainQueue).start(next: { [weak self] presentationData in + if let strongSelf = self { + let previousTheme = strongSelf.presentationData.theme + let previousStrings = strongSelf.presentationData.strings + + strongSelf.presentationData = presentationData + if previousTheme !== presentationData.theme || previousStrings !== presentationData.strings { + strongSelf.updateThemeAndStrings() } - }) + } + }) + + self.centralItemAttributesDisposable.add(self.centralItemSubtitle.get().start(next: { [weak self] subtitle in + if let strongSelf = self { + if let subtitle = subtitle { + let titleView = CounterContollerTitleView(theme: strongSelf.presentationData.theme) + titleView.title = CounterContollerTitle(title: strongSelf.presentationData.strings.WallpaperPreview_Title, counter: subtitle) + strongSelf.navigationItem.titleView = titleView + strongSelf.title = nil + } else { + strongSelf.navigationItem.titleView = nil + strongSelf.title = strongSelf.presentationData.strings.WallpaperPreview_Title + } + } + })) self.centralItemAttributesDisposable.add(self.centralItemStatus.get().start(next: { [weak self] status in if let strongSelf = self { @@ -157,6 +170,12 @@ class WallpaperGalleryController: ViewController { strongSelf.toolbarNode?.setDoneEnabled(enabled) } })) + + self.centralItemAttributesDisposable.add(self.centralItemAction.get().start(next: { [weak self] barButton in + if let strongSelf = self { + strongSelf.navigationItem.rightBarButtonItem = barButton + } + })) } required init(coder aDecoder: NSCoder) { @@ -170,7 +189,9 @@ class WallpaperGalleryController: ViewController { } private func updateThemeAndStrings() { - self.title = self.presentationData.strings.Wallpaper_Title + if self.title != nil { + self.title = self.presentationData.strings.WallpaperPreview_Title + } self.statusBar.statusBarStyle = self.presentationData.theme.rootController.statusBar.style.style self.toolbarNode?.updateThemeAndStrings(theme: self.presentationData.theme, strings: self.presentationData.strings) } @@ -204,7 +225,12 @@ class WallpaperGalleryController: ViewController { self.galleryNode.pager.centralItemIndexUpdated = { [weak self] index in if let strongSelf = self { if let node = strongSelf.galleryNode.pager.centralItemNode() as? WallpaperGalleryItemNode { + strongSelf.centralItemSubtitle.set(node.subtitle.get()) strongSelf.centralItemStatus.set(node.status.get()) + strongSelf.centralItemAction.set(node.actionButton.get()) + node.action = { [weak self] in + self?.actionPressed() + } } } } @@ -214,7 +240,7 @@ class WallpaperGalleryController: ViewController { self.galleryNode.isBackgroundExtendedOverNavigationBar = true let presentationData = self.account.telegramApplicationContext.currentPresentationData.with { $0 } - let toolbarNode = ThemeGalleryToolbarNode(theme: presentationData.theme, strings: presentationData.strings) + let toolbarNode = WallpaperGalleryToolbarNode(theme: presentationData.theme, strings: presentationData.strings) let overlayNode = WallpaperGalleryOverlayNode() self.overlayNode = overlayNode self.galleryNode.overlayNode = overlayNode @@ -228,38 +254,115 @@ class WallpaperGalleryController: ViewController { } toolbarNode.done = { [weak self] in if let strongSelf = self { + var options: WallpaperPresentationOptions = [] + if (strongSelf.blurredButtonNode?.isSelected ?? false) { + options.insert(.blur) + } + if (strongSelf.motionButtonNode?.isSelected ?? false) { + options.insert(.motion) + } + if let centralItemNode = strongSelf.galleryNode.pager.centralItemNode() { if !strongSelf.entries.isEmpty { let entry = strongSelf.entries[centralItemNode.index] switch entry { case let .wallpaper(wallpaper): - let _ = (updatePresentationThemeSettingsInteractively(postbox: strongSelf.account.postbox, { current in - return PresentationThemeSettings(chatWallpaper: wallpaper, chatWallpaperOptions: [], theme: current.theme, themeAccentColor: current.themeAccentColor, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, disableAnimations: current.disableAnimations) - }) |> deliverOnMainQueue).start(completed: { - self?.dismiss(forceAway: true) - }) + let completion: () -> Void = { + let _ = (updatePresentationThemeSettingsInteractively(postbox: strongSelf.account.postbox, { current in + return PresentationThemeSettings(chatWallpaper: wallpaper, chatWallpaperOptions: options, theme: current.theme, themeAccentColor: current.themeAccentColor, fontSize: current.fontSize, automaticThemeSwitchSetting: current.automaticThemeSwitchSetting, disableAnimations: current.disableAnimations) + }) |> deliverOnMainQueue).start(completed: { + self?.dismiss(forceAway: true) + }) + + if case .wallpaper = strongSelf.source { + let _ = saveWallpaper(account: strongSelf.account, wallpaper: wallpaper).start() + } + let _ = installWallpaper(account: strongSelf.account, wallpaper: wallpaper).start() + } + + if options.contains(.blur) { + var resource: MediaResource? + switch wallpaper { + case let .file(file): + resource = file.file.resource + case let .image(representations): + if let largestSize = largestImageRepresentation(representations) { + resource = largestSize.resource + } + default: + break + } + + if let resource = resource { + let _ = strongSelf.account.postbox.mediaBox.cachedResourceRepresentation(resource, representation: CachedBlurredWallpaperRepresentation(), complete: true, fetch: true).start(completed: { + completion() + }) + } + } else { + completion() + } default: break } - strongSelf.apply?(entry, [], nil) + + strongSelf.apply?(entry, options, nil) } } } } + let blurredButtonNode = WallpaperOptionButtonNode(title: presentationData.strings.WallpaperPreview_Blurred) + blurredButtonNode.addTarget(self, action: #selector(self.toggleBlur), forControlEvents: .touchUpInside) + overlayNode.addSubnode(blurredButtonNode) + self.blurredButtonNode = blurredButtonNode + + let motionButtonNode = WallpaperOptionButtonNode(title: presentationData.strings.WallpaperPreview_Motion) + motionButtonNode.addTarget(self, action: #selector(self.toggleMotion), forControlEvents: .touchUpInside) + overlayNode.addSubnode(motionButtonNode) + self.motionButtonNode = motionButtonNode + let ready = self.galleryNode.pager.ready() |> timeout(2.0, queue: Queue.mainQueue(), alternate: .single(Void())) |> afterNext { [weak self] _ in self?.didSetReady = true } self._ready.set(ready |> map { true }) } + @objc func toggleBlur() { + if let centralItemNode = self.galleryNode.pager.centralItemNode() as? WallpaperGalleryItemNode { + let value = !(self.blurredButtonNode?.isSelected ?? false) + self.blurredButtonNode?.setSelected(value, animated: true) + centralItemNode.setBlurEnabled(value, animated: true) + } + } + + @objc func toggleMotion() { + if let centralItemNode = self.galleryNode.pager.centralItemNode() as? WallpaperGalleryItemNode { + let value = !(self.motionButtonNode?.isSelected ?? false) + self.motionButtonNode?.setSelected(value, animated: true) + centralItemNode.setMotionEnabled(value) + } + } + + private func currentEntry() -> WallpaperGalleryEntry? { + if let centralItemNode = self.galleryNode.pager.centralItemNode() as? WallpaperGalleryItemNode { + return centralItemNode.entry + } else { + return nil + } + } + override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) self.galleryNode.modalAnimateIn() - if let centralItemNode = self.galleryNode.pager.centralItemNode() as? WallpaperGalleryItemNode { - self.centralItemStatus.set(centralItemNode.status.get()) + if let node = self.galleryNode.pager.centralItemNode() as? WallpaperGalleryItemNode { + self.centralItemSubtitle.set(node.subtitle.get()) + self.centralItemStatus.set(node.status.get()) + self.centralItemAction.set(node.actionButton.get()) + node.action = { [weak self] in + self?.actionPressed() + } } } @@ -277,24 +380,8 @@ class WallpaperGalleryController: ViewController { let messages = SimpleDictionary() peers[peerId] = TelegramUser(id: peerId, accessHash: nil, firstName: self.presentationData.strings.Appearance_PreviewReplyAuthor, lastName: "", username: nil, phone: nil, photo: [], botInfo: nil, restrictionInfo: nil, flags: []) peers[otherPeerId] = TelegramUser(id: otherPeerId, accessHash: nil, firstName: self.presentationData.strings.Appearance_PreviewReplyAuthor, lastName: "", username: nil, phone: nil, photo: [], botInfo: nil, restrictionInfo: nil, flags: []) - let controllerInteraction = ChatControllerInteraction(openMessage: { _, _ in - return false }, openPeer: { _, _, _ in }, openPeerMention: { _ in }, openMessageContextMenu: { _, _, _, _ in }, navigateToMessage: { _, _ in }, clickThroughMessage: { }, toggleMessagesSelection: { _, _ in }, sendMessage: { _ in }, sendSticker: { _, _ in }, sendGif: { _ in }, requestMessageActionCallback: { _, _, _ in }, activateSwitchInline: { _, _ in }, openUrl: { _, _, _ in }, shareCurrentLocation: {}, shareAccountContact: {}, sendBotCommand: { _, _ in }, openInstantPage: { _ in }, openWallpaper: { _ in }, openHashtag: { _, _ in }, updateInputState: { _ in }, updateInputMode: { _ in }, openMessageShareMenu: { _ in - }, presentController: { _, _ in }, navigationController: { - return nil - }, presentGlobalOverlayController: { _, _ in }, callPeer: { _ in }, longTap: { _ in }, openCheckoutOrReceipt: { _ in }, openSearch: { }, setupReply: { _ in - }, canSetupReply: { _ in - return false - }, navigateToFirstDateMessage: { _ in - }, requestRedeliveryOfFailedMessages: { _ in - }, addContact: { _ in - }, rateCall: { _, _ in - }, requestSelectMessagePollOption: { _, _ in - }, openAppStorePage: { - }, requestMessageUpdate: { _ in - }, cancelInteractiveKeyboardGestures: { - }, automaticMediaDownloadSettings: AutomaticMediaDownloadSettings.defaultSettings, - pollActionState: ChatInterfacePollActionState()) + let controllerInteraction = ChatControllerInteraction.default let chatPresentationData = ChatPresentationData(theme: ChatPresentationThemeData(theme: self.presentationData.theme, wallpaper: self.presentationData.chatWallpaper), fontSize: self.presentationData.fontSize, strings: self.presentationData.strings, dateTimeFormat: self.presentationData.dateTimeFormat, nameDisplayOrder: self.presentationData.nameDisplayOrder, disableAnimations: false) let topMessageText: String @@ -320,9 +407,9 @@ class WallpaperGalleryController: ViewController { bottomMessageText = presentationData.strings.WallpaperPreview_CustomColorBottomText } - items.append(ChatMessageItem(presentationData: chatPresentationData, account: self.account, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 2, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 2), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[otherPeerId], text: bottomMessageText, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, isAdmin: false), disableDate: true)) + items.append(ChatMessageItem(presentationData: chatPresentationData, account: self.account, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 2, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 2), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66001, flags: [], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[otherPeerId], text: bottomMessageText, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, isAdmin: false), disableDate: false)) - items.append(ChatMessageItem(presentationData: chatPresentationData, account: self.account, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: topMessageText, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, isAdmin: false), disableDate: true)) + items.append(ChatMessageItem(presentationData: chatPresentationData, account: self.account, chatLocation: .peer(peerId), associatedData: ChatMessageItemAssociatedData(automaticDownloadPeerType: .contact, automaticDownloadNetworkType: .cellular, isRecentActions: false), controllerInteraction: controllerInteraction, content: .message(message: Message(stableId: 1, stableVersion: 0, id: MessageId(peerId: peerId, namespace: 0, id: 1), globallyUniqueId: nil, groupingKey: nil, groupInfo: nil, timestamp: 66000, flags: [.Incoming], tags: [], globalTags: [], localTags: [], forwardInfo: nil, author: peers[peerId], text: topMessageText, attributes: [], media: [], peers: peers, associatedMessages: messages, associatedMessageIds: []), read: true, selection: .none, isAdmin: false), disableDate: false)) let params = ListViewItemLayoutParams(width: layout.size.width, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right) if let messageNodes = self.messageNodes { @@ -358,7 +445,6 @@ class WallpaperGalleryController: ViewController { } var bottomInset = layout.intrinsicInsets.bottom + 49.0 - var optionsAvailable = true if let centralItemNode = self.galleryNode.pager.centralItemNode() { if !self.entries.isEmpty { @@ -366,10 +452,10 @@ class WallpaperGalleryController: ViewController { switch entry { case let .wallpaper(wallpaper): switch wallpaper { - case .color: - optionsAvailable = false - default: - break + case .color: + optionsAvailable = false + default: + break } default: break @@ -380,11 +466,16 @@ class WallpaperGalleryController: ViewController { transition.updateFrame(node: self.toolbarNode!, frame: CGRect(origin: CGPoint(x: 0.0, y: layout.size.height - 49.0 - layout.intrinsicInsets.bottom), size: CGSize(width: layout.size.width, height: 49.0 + layout.intrinsicInsets.bottom))) self.toolbarNode!.updateLayout(size: CGSize(width: layout.size.width, height: 49.0), layout: layout, transition: transition) + let buttonSize = CGSize(width: 100.0, height: 30.0) + transition.updateFrame(node: self.blurredButtonNode!, frame: CGRect(origin: CGPoint(x: layout.size.width / 2.0 - buttonSize.width - 10.0, y: layout.size.height - 49.0 - layout.intrinsicInsets.bottom - 54.0), size: buttonSize)) + + transition.updateFrame(node: self.motionButtonNode!, frame: CGRect(origin: CGPoint(x: layout.size.width / 2.0 + 10.0, y: layout.size.height - 49.0 - layout.intrinsicInsets.bottom - 54.0), size: buttonSize)) + if let messageNodes = self.messageNodes { var bottomOffset: CGFloat = layout.size.height - bottomInset - 9.0 -// if optionsAvailable { -// bottomOffset -= segmentedControlSize.height + 37.0 -// } + if optionsAvailable { + bottomOffset -= 66.0 + } for itemNode in messageNodes { transition.updateFrame(node: itemNode, frame: CGRect(origin: CGPoint(x: 0.0, y: bottomOffset - itemNode.frame.height), size: itemNode.frame.size)) bottomOffset -= itemNode.frame.height @@ -398,6 +489,25 @@ class WallpaperGalleryController: ViewController { self.galleryNode.pager.replaceItems(self.entries.map({ WallpaperGalleryItem(account: self.account, entry: $0) }), centralItemIndex: self.centralEntryIndex) } } + + private func actionPressed() { + guard let entry = self.currentEntry(), case let .wallpaper(wallpaper) = entry else { + return + } + + var controller: ShareController? + switch wallpaper { + case let .file(_, _, _, _, slug, _): + controller = ShareController(account: account, subject: .url("https://t.me/bg/\(slug)")) + case let .color(color): + controller = ShareController(account: account, subject: .url("https://t.me/bg/\(String(UInt32(bitPattern: color), radix: 16, uppercase: false).rightJustified(width: 6, pad: "0"))")) + default: + break + } + if let controller = controller { + self.present(controller, in: .window(.root), blockInteraction: true) + } + } } private extension GalleryControllerNode { diff --git a/TelegramUI/WallpaperGalleryDecorationNode.swift b/TelegramUI/WallpaperGalleryDecorationNode.swift new file mode 100644 index 0000000000..1274d02501 --- /dev/null +++ b/TelegramUI/WallpaperGalleryDecorationNode.swift @@ -0,0 +1,114 @@ +import Foundation +import Display +import AsyncDisplayKit +import SwiftSignalKit +import Postbox + +final class WallpaperOptionButtonNode: HighlightTrackingButtonNode { + private let backgroundNode: ASDisplayNode + private let checkNode: CheckNode + private let textNode: ASTextNode + + private var _isSelected: Bool = false + override var isSelected: Bool { + get { + return self._isSelected + } + set { + self._isSelected = newValue + self.checkNode.setIsChecked(newValue, animated: false) + } + } + + init(title: String) { + self.backgroundNode = ASDisplayNode() + self.backgroundNode.backgroundColor = UIColor(rgb: 0x000000, alpha: 0.3) + self.backgroundNode.cornerRadius = 8.0 + self.checkNode = CheckNode(strokeColor: .white, fillColor: .white, foregroundColor: .black, style: .plain) + self.checkNode.isUserInteractionEnabled = false + self.textNode = ASTextNode() + self.textNode.attributedText = NSAttributedString(string: title, font: Font.regular(13), textColor: .white) + + super.init() + + self.addSubnode(self.backgroundNode) + self.addSubnode(self.checkNode) + self.addSubnode(self.textNode) + + self.highligthedChanged = { [weak self] highlighted in + if let strongSelf = self { + if highlighted { + strongSelf.backgroundNode.layer.removeAnimation(forKey: "opacity") + strongSelf.backgroundNode.alpha = 0.4 + + strongSelf.checkNode.layer.removeAnimation(forKey: "opacity") + strongSelf.checkNode.alpha = 0.4 + + strongSelf.textNode.layer.removeAnimation(forKey: "opacity") + strongSelf.textNode.alpha = 0.4 + } else { + strongSelf.backgroundNode.alpha = 1.0 + strongSelf.backgroundNode.layer.animateAlpha(from: 0.4, to: 1.0, duration: 0.2) + + strongSelf.checkNode.alpha = 1.0 + strongSelf.checkNode.layer.animateAlpha(from: 0.4, to: 1.0, duration: 0.2) + + strongSelf.textNode.alpha = 1.0 + strongSelf.textNode.layer.animateAlpha(from: 0.4, to: 1.0, duration: 0.2) + } + } + } + } + + func setSelected(_ selected: Bool, animated: Bool = false) { + self._isSelected = selected + self.checkNode.setIsChecked(selected, animated: animated) + } + + func setEnabled(_ enabled: Bool) { + self.alpha = enabled ? 1.0 : 0.3 + self.isUserInteractionEnabled = enabled + } + + // override func measure(_ constrainedSize: CGSize) -> CGSize { + // let size = self.textNode.measure(constrainedSize) + // return CGSize(width: size.width + 56.0, height: 30.0) + // } + + override func layout() { + super.layout() + + self.backgroundNode.frame = self.bounds + + let checkSize = CGSize(width: 32.0, height: 32.0) + self.checkNode.frame = CGRect(origin: CGPoint(x: 5.0, y: -1.0), size: checkSize) + + self.textNode.frame = CGRect(x: 39.0, y: 6.0 + UIScreenPixel, width: 100.0, height: 20.0) + } +} + +final class WallpaperGalleryDecorationNode: ASDisplayNode { + private let dismiss: () -> Void + private let apply: () -> Void + +// private var messageNodes: [ListViewItemNode]? +// private var blurredButtonNode: WallpaperOptionButtonNode? +// private var motionButtonNode: WallpaperOptionButtonNode? +// private var toolbarNode: WallpaperGalleryToolbarNode? + + init(source: WallpaperListSource, dismiss: @escaping () -> Void, apply: @escaping () -> Void) { + self.dismiss = dismiss + self.apply = apply + + super.init() + } + + override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { + let result = super.hitTest(point, with: event) + if result != self.view { + return result + } else { + return nil + } + } +} diff --git a/TelegramUI/WallpaperGalleryItem.swift b/TelegramUI/WallpaperGalleryItem.swift index 3c4855ae39..e3825aef7e 100644 --- a/TelegramUI/WallpaperGalleryItem.swift +++ b/TelegramUI/WallpaperGalleryItem.swift @@ -36,12 +36,13 @@ let progressDiameter: CGFloat = 50.0 final class WallpaperGalleryItemNode: GalleryItemNode { private let account: Account - private var entry: WallpaperGalleryEntry? + var entry: WallpaperGalleryEntry? private var contentSize: CGSize? let wrapperNode: ASDisplayNode let imageNode: TransformImageNode private let statusNode: RadialStatusNode + private let progressNode: ASTextNode private let blurredNode: BlurredImageNode let cropNode: WallpaperCropNode @@ -49,8 +50,10 @@ final class WallpaperGalleryItemNode: GalleryItemNode { private let fetchDisposable = MetaDisposable() private let statusDisposable = MetaDisposable() - let controlsColor = Promise(.white) + let subtitle = Promise(nil) let status = Promise(.Local) + let actionButton = Promise(nil) + var action: (() -> Void)? init(account: Account) { self.account = account @@ -62,6 +65,7 @@ final class WallpaperGalleryItemNode: GalleryItemNode { self.statusNode = RadialStatusNode(backgroundNodeColor: UIColor(white: 0.0, alpha: 0.6)) self.statusNode.frame = CGRect(x: 0.0, y: 0.0, width: progressDiameter, height: progressDiameter) self.statusNode.isUserInteractionEnabled = false + self.progressNode = ASTextNode() self.blurredNode = BlurredImageNode() @@ -79,6 +83,7 @@ final class WallpaperGalleryItemNode: GalleryItemNode { self.addSubnode(self.wrapperNode) self.addSubnode(self.statusNode) + self.addSubnode(self.progressNode) } deinit { @@ -102,6 +107,10 @@ final class WallpaperGalleryItemNode: GalleryItemNode { return self._ready.get() } + @objc private func actionPressed() { + self.action?() + } + fileprivate func setEntry(_ entry: WallpaperGalleryEntry) { if self.entry != entry { self.entry = entry @@ -109,9 +118,14 @@ final class WallpaperGalleryItemNode: GalleryItemNode { let signal: Signal<(TransformImageArguments) -> DrawingContext?, NoError> let fetchSignal: Signal let statusSignal: Signal + let subtitleSignal: Signal + var actionSignal: Signal = .single(nil) let displaySize: CGSize let contentSize: CGSize + let presentationData = self.account.telegramApplicationContext.currentPresentationData.with { $0 } + let defaultAction = UIBarButtonItem(image: generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionAction"), color: presentationData.theme.rootController.navigationBar.accentTextColor), style: .plain, target: self, action: #selector(self.actionPressed)) + switch entry { case let .wallpaper(wallpaper): switch wallpaper { @@ -121,12 +135,14 @@ final class WallpaperGalleryItemNode: GalleryItemNode { signal = settingsBuiltinWallpaperImage(account: account) fetchSignal = .complete() statusSignal = .single(.Local) + subtitleSignal = .single(nil) case let .color(color): displaySize = CGSize(width: 1.0, height: 1.0) contentSize = displaySize signal = .never() fetchSignal = .complete() statusSignal = .single(.Local) + subtitleSignal = .single(nil) self.backgroundColor = UIColor(rgb: UInt32(bitPattern: color)) case let .file(file): let dimensions = file.file.dimensions ?? CGSize(width: 100.0, height: 100.0) @@ -141,6 +157,12 @@ final class WallpaperGalleryItemNode: GalleryItemNode { signal = chatAvatarGalleryPhoto(account: account, fileReference: .standalone(media: file.file), representations: convertedRepresentations, alwaysShowThumbnailFirst: true, autoFetchFullSize: false) fetchSignal = fetchedMediaResource(postbox: account.postbox, reference: convertedRepresentations[convertedRepresentations.count - 1].reference) statusSignal = account.postbox.mediaBox.resourceStatus(file.file.resource) + if let fileSize = file.file.size { + subtitleSignal = .single(dataSizeString(fileSize)) + } else { + subtitleSignal = .single(nil) + } + actionSignal = .single(defaultAction) case let .image(representations): if let largestSize = largestImageRepresentation(representations) { contentSize = largestSize.dimensions @@ -162,6 +184,7 @@ final class WallpaperGalleryItemNode: GalleryItemNode { fetchSignal = .complete() statusSignal = .single(.Local) } + subtitleSignal = .single(nil) } self.cropNode.removeFromSupernode() case let .asset(asset, _): @@ -171,6 +194,7 @@ final class WallpaperGalleryItemNode: GalleryItemNode { signal = photoWallpaper(postbox: account.postbox, photoLibraryResource: PhotoLibraryMediaResource(localIdentifier: asset.localIdentifier, uniqueId: arc4random64())) fetchSignal = .complete() statusSignal = .single(.Local) + subtitleSignal = .single(nil) self.wrapperNode.addSubnode(self.cropNode) case let .contextResult(result): var imageDimensions: CGSize? @@ -223,6 +247,7 @@ final class WallpaperGalleryItemNode: GalleryItemNode { fetchSignal = .complete() statusSignal = .single(.Local) } + subtitleSignal = .single(nil) self.wrapperNode.addSubnode(self.cropNode) } self.contentSize = contentSize @@ -257,30 +282,28 @@ final class WallpaperGalleryItemNode: GalleryItemNode { if let strongSelf = self { let state: RadialStatusNodeState switch status { - case let .Fetching(_, progress): - let adjustedProgress = max(progress, 0.027) - state = .progress(color: statusForegroundColor, lineWidth: nil, value: CGFloat(adjustedProgress), cancelEnabled: false) - case .Local: - state = .none - case .Remote: - state = .progress(color: statusForegroundColor, lineWidth: nil, value: 0.027, cancelEnabled: false) + case let .Fetching(_, progress): + let adjustedProgress = max(progress, 0.027) + state = .progress(color: statusForegroundColor, lineWidth: nil, value: CGFloat(adjustedProgress), cancelEnabled: false) + strongSelf.progressNode.attributedText = NSAttributedString(string: "\(Int(progress * 100))%", font: Font.medium(13), textColor: .white, paragraphAlignment: .center) + case .Local: + state = .none + strongSelf.progressNode.attributedText = nil + case .Remote: + state = .progress(color: statusForegroundColor, lineWidth: nil, value: 0.027, cancelEnabled: false) + strongSelf.progressNode.attributedText = nil } strongSelf.statusNode.transitionToState(state, completion: {}) } })) - let controlsColorSignal: Signal - if case let .wallpaper(wallpaper) = entry { - controlsColorSignal = chatBackgroundContrastColor(wallpaper: wallpaper, postbox: account.postbox) - } else { - controlsColorSignal = backgroundContrastColor(for: imagePromise.get()) - } - self.controlsColor.set(.single(.white) |> then(controlsColorSignal)) + self.subtitle.set(subtitleSignal |> deliverOnMainQueue) self.status.set(statusSignal |> deliverOnMainQueue) + self.actionButton.set(actionSignal |> deliverOnMainQueue) } } - func setParallaxEnabled(_ enabled: Bool) { + func setMotionEnabled(_ enabled: Bool) { if enabled { let amount = 24.0 @@ -296,7 +319,7 @@ final class WallpaperGalleryItemNode: GalleryItemNode { group.motionEffects = [horizontal, vertical] self.wrapperNode.view.addMotionEffect(group) } else { - for effect in self.imageNode.view.motionEffects { + for effect in self.wrapperNode.view.motionEffects { self.wrapperNode.view.removeMotionEffect(effect) } } @@ -365,5 +388,6 @@ final class WallpaperGalleryItemNode: GalleryItemNode { } self.statusNode.frame = CGRect(x: layout.safeInsets.left + floorToScreenPixels((layout.size.width - layout.safeInsets.left - layout.safeInsets.right - progressDiameter) / 2.0), y: floorToScreenPixels((layout.size.height - progressDiameter) / 2.0), width: progressDiameter, height: progressDiameter) + self.progressNode.frame = CGRect(x: layout.safeInsets.left + floorToScreenPixels((layout.size.width - layout.safeInsets.left - layout.safeInsets.right - progressDiameter) / 2.0), y: floorToScreenPixels((layout.size.height - 15.0) / 2.0), width: progressDiameter, height: progressDiameter) } } diff --git a/TelegramUI/ThemeGalleryToolbarNode.swift b/TelegramUI/WallpaperGalleryToolbarNode.swift similarity index 98% rename from TelegramUI/ThemeGalleryToolbarNode.swift rename to TelegramUI/WallpaperGalleryToolbarNode.swift index 2c0c35a9aa..9577a40a3d 100644 --- a/TelegramUI/ThemeGalleryToolbarNode.swift +++ b/TelegramUI/WallpaperGalleryToolbarNode.swift @@ -2,7 +2,7 @@ import Foundation import AsyncDisplayKit import Display -final class ThemeGalleryToolbarNode: ASDisplayNode { +final class WallpaperGalleryToolbarNode: ASDisplayNode { private let cancelButton = HighlightableButtonNode() private let doneButton = HighlightableButtonNode() private let separatorNode = ASDisplayNode() diff --git a/TelegramUI/WallpaperListPreviewControllerNode.swift b/TelegramUI/WallpaperListPreviewControllerNode.swift index efa13e69ef..72d83b5d34 100644 --- a/TelegramUI/WallpaperListPreviewControllerNode.swift +++ b/TelegramUI/WallpaperListPreviewControllerNode.swift @@ -411,7 +411,7 @@ final class WallpaperListPreviewControllerNode: ViewControllerTracingNode { self.toolbarButtonApply = HighlightTrackingButtonNode() self.toolbarButtonApply.setAttributedTitle(NSAttributedString(string: self.presentationData.strings.Wallpaper_Set, font: Font.regular(17.0), textColor: self.presentationData.theme.rootController.navigationBar.primaryTextColor), for: []) - self.segmentedControl = UISegmentedControl(items: [self.presentationData.strings.WallpaperPreview_Still, self.presentationData.strings.WallpaperPreview_Perspective, self.presentationData.strings.WallpaperPreview_Blurred]) + self.segmentedControl = UISegmentedControl(items: ["Still", "Perspective", self.presentationData.strings.WallpaperPreview_Blurred]) self.segmentedControl.selectedSegmentIndex = 0 self.segmentedControl.tintColor = .white